○第130回目 計算式作成のお手伝い(一般的な計算式、究極モドキ)
計算式作成のお手伝い(一般的な計算式)については、『第124回目 計算式作成のお手伝い(その3一般的な計算式)』で取り上げました。
さらに改良を重ねましたので、どうでしょうかというご紹介です。
追加した機能
1.座標を入力する際に、1回で複数の座標を演算子でつないでいれることができる(この入力内容は計算式としての要件を備えている必要がある)。
2.計算式の途中に、座標を入れることが出来る。つまり、途中の座標を修正することが出来る。
1.はわかれば、簡単でした。無理やりに座標のあとに文字を入力し、そしてカーソル動かすと座標がはいる、これを繰り返していけば大丈夫なのです。だが、文字列を作り上げて、Enterキーを押すとエラーになるのです。エラーになってもいいから、入れた内容を取得出来ないか、といろいろやってみたのですが駄目でした。
必要は発明の母です。
inputboxメソッドでは、typeの中で座標のほかに、文字、数値、数式(=0)などがあるのです。
数式にしてみたらどうか。数式としての形式が正しければ大丈夫なのです。何個でも座標が続けられます。それは適当においておいて。
計算式の入力=⇒文字列の入力=⇒計算式の入力=⇒…
これを続けていけばいいのです。
ということで、基本部分は解決です(計算式の入力ではイコールが入りますのでそれは除いてください)。
ここでの問題は、計算式を追加するということは、座標が複数あるということです。次回にどの座標からはじめるのは指定しなければなりません。今回入力した計算式から座標を切り出す、という機能を入れます。
どの座標の切り出すか、これは、決め打ちです。
最後の四則演算子から後ろが、かなりの確率で座標といえます。まずは、この基準で組んでみることにします。
2.の点です。
これは単純でした。この仕組みは適当な回数、座標等の入力、文字列の入力、を繰り返すということです。ですから、文字列の入力の時に、特殊文字を入れておき、次の座標等の入力結果を、その文字列と置き換えればいいのです。すると、これまでの計算式の中の複数の場所に、座標等を入れることができます。
ほとんどアイデアという点で勝負ありというのものです(コーディングは、これまでの技術で十分ということです)。
Ques.ちょっと、聞きたいのですが、詳細な操作内容がわからないので聞くのですが、このマクロは、通常の操作と比べてどこにメリットがあるのですか。
=⇒答え 実はメリットはそれほどないといってもいい場合があります。
計算式を初めて作る場合
通常の操作の場合は、
=を入力
関数等を入力
カーソルを動かして座標を指定
演算子等を入力
これの繰り返しです。
このマクロの場合は
マクロの起動。少なくとも3タッチほどはあるでしょう。
関数等を入力、Enterキー
カーソルを動かして座標を指定 Enterキー
演算子等を入力 Enterキー
これの繰り返しです。
各処理で少なくとも、ワンタッチほど多くかかります。
ここでは、カーソルを動かす操作は詳しく書いていませんが、その点が少し変わります。通常では、計算式を入れたいセルからすべて動きますが、このマクロの場合は、直前の回の最後に指定したセルからカーソルを動かします。
この部分に多大な操作をしている場合は、このマクロのメリットがあるといえましょう。
例えば、近くにある二つのセル同士での計算などは、メリットがないでしょう。
例えば、遠くにある二つのセル同士での計算などは、メリットがでてきます。セルの数が多いほどメリットが出てきます。
この場合、操作に工夫が必要です。1回目の指定は座標は一つしか指定しないのです。そうすると、2回目の座標等の指定の際には、1回目に指定したセルから始まります。
次に計算式の修正です。
通常の操作の場合は
F2を押す
カーソルで直したい箇所に動かし、修正後の内容を追加する、または修正後の内容と置き換える。
これの繰り返しです。
このマクロの場合は
マクロの起動。少なくとも3タッチほどはあるでしょう。
後ろに追加する場合は、初めて計算式を入れる場合と同じです。
途中の座標等を修正する場合は、その箇所を..で置き換えます。Enterキー
カーソルを動かしたり、文字列を入力したりして、座標を含めた計算式を作ります。Enterキー。
自動的に、..の部分が置き換わります。
これの繰り返しです。
Ques.そうですか。座標等の入力は計算式としての要件を必要とするということですが、座標の範囲を指定したらどうなりますか。つまり、"=b3:b10"というのを作ったら、b3:b10が、エラーにならずに計算式に追加されますか。
=⇒答え 不明なのでやってみましょう。
計算式としては張り付きました。例えば、=AP3:AP23のようになりましたが、valueエラーになってしまいました。
ということですが、次の文字列の入力の際に修正することで対応できますね。
ここで問題が発生しました。範囲指定の場合、次の回に、指定した範囲の始めのセルに移動しなのです。一つの座標に分割する必要がありますね。
したがって、四則演算子のほかにコロンの位置も調べてその前後関係で、座標を切り出すことにしましょう。また、最後はカッコが付いている可能性も高いので、最後にあるカッコは取り除くことにしましょう。
※コーディング関係は次回です。
2009年12月29日火曜日
登録:
コメント (Atom)
