• ベストアンサー

マクロに関する質問です

マクロに関する質問です。 やりたいことは「ある2つのセルに入っている数値の和を所定のセルに表示する」というものです。 ただし「ある2つのセル」が特定のセルではないため、その都度指定する必要があります。 いま自分の実力でできる方法としては、INPUTBOXを使って「ある2つのセル」の行番号、列番号をそれぞれ入力してセルの値を拾って計算するということくらいです。 まあこれでもいいと言えばいいのですが、そのセルの行番号、列番号をいちいち覚えておかないといけないのでイマイチです。 そこで、こんなことができるといいなと思ってます。 「画面上に表示されたそのセルをマウスでクリックすることによって指定すること」です。 いかがでしょうか。 さらに欲を言えば、答を表示するセルに「2つのセルの合計を計算せよ」という「計算式」を入れたいのです(答を単に数値で表示するのではなく)。さらにさらにその数式において、セルの「絶対指定」、「相対指定」の使い分けもできるとものすごくありがたいです。 非常に欲深くて恐縮です。少しでも結構です。ヒントをください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.4

基本部分のみ(絶対参照)です。 セルの指定は通常のエクセル操作と同様に複数セルの指定が可能なので、値の選択は1回だけでも構いません。 Dim inA As Variant Dim inB As Variant Dim out As Variant Set inA = Application.InputBox("値選択1", Type:=8) Set inB = Application.InputBox("値選択2", Type:=8) Set out = Application.InputBox("集計セル選択", Type:=8) out.Formula = "=Sum(" & inA.Address & "," & inB.Address & ")"

tarobei
質問者

お礼

ありがとうございます。 最後の一文は「絶対参照の式」を集計セルに与えるものですね! 感動です。ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

Sub test01() x = Application.InputBox("a=", Type:=8) y = Application.InputBox("b=", Type:=8) Range("c3") = x + y End Sub 所定のセルはC3に仮定。

tarobei
質問者

お礼

早速のご回答ありがとうございました。 基本的にはNo.1さんのご回答と同じですね。具体的に書いて頂きましてありがとうございました。

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.2

ヒントです。通常EXCELで二つのセルを選択するには第一のセルをクリックして選択した後に、二番目のセルをCTRLキーを押しながらクリックします。その状態でSelection.addressにはその二つのセルが絶対参照、カンマ区切りで入っています。それを加工して式にしては如何でしょうか? 勿論$を取り去ればすぐに相対参照に変わりますから。

tarobei
質問者

お礼

早速のご回答ありがとうございました。 せっかく頂いたヒントですが、私には応用できないようです。 申し訳ありません。 ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

「画面上に表示されたそのセルをマウスでクリックすることによって指定すること」です。 この点についての参考になるかも知れないURL ■数値を入力するダイアログボックス InputBox関数とInputBoxメソッドの相違点 http://www.moug.net/skillup/nksw/nksw06-01.htm 質問文にあるのはInputBox関数だと思いますが、InputBoxメソッドを 見て下さい。

tarobei
質問者

お礼

早速のご回答ありがとうございました。 これです。これがやりたかったのです。 ありがとうございました。

関連するQ&A

  • エクセルで…関数かマクロか?

    エクセル2007を使っています。 3列のシートがあるとしますね。 それぞれの列は、「A 現金残高」、「B 収入」、「C 支出」とします。 たとえば、3行目から数値を入れるとします。 普通ならば、B3 (収入)のセルに 1000(円) と数字を打ち込めば、 A3 (現金残高)のセルに同じく 1000が入るよう、=B3 とすればいいと思います。 同様に、C3のセルに1000と入力すれば、 A3のセルには -1*(C3) とすることで、現金残高が収入と支出によって、 プラスマイナスされるようにし、あとで各列を∑すれば済みますね。 でも、いま僕がやりたいのは、 たとえば現金残高 A3のセルに -1000 と入力すると、自動的に C3のセルに 1000 と 表示され、A3に 1000 と入力すると、 B3のセルに 1000と表示されるようにしたいのです。 要するに、現金残高に入力した数値がプラスかマイナスかによって、 数字が表示されるセルを個別に指定し、指定したセルに計算結果を表示させたいわけです。 IF関数で、数値のプラスマイナスは判断できますが、任意のセルを指定させる方法が わかりません。 「もし…だったら 『任意のセルに』○○せよ」  というような指定はできるのでしょうか? もしくは、マクロを使わないとできないのでしょうか? いろいろサイトも調べてみましたが、力不足で回答にたどり着くことができませんでした。 よろしくご教授お願いいたします。

  • エクセルのマクロについて教えてください

    こんな感じのマクロを考えています。 今いるセルの行番号の百の位を行番号とし、 A列のその行番号にある文字列を取得したい場合どのように書けばよいのでしょうか? 例) A2には「あさだ」と書かれています。 A3には「まお」と書かれています。 あるセルの行番号が342の時、百の位である3から、A列の3行目、つまりA3にある「まお」という 文字列を取得して表示させる。 TEXT(QUOTIENT (ROW(),100)&"","@")で上記でいうところの文字列3が取れますが、 ここからどうやってA3として、そのセル番号の中身を取得できるのでしょうか?

  • エクセルのマクロ記述について

    下記の処理をエクセルのマクロで行いたいのですが、どのように記述したよいか教えてください。 4行目から入力されている行まで下記の処理をマクロで行う。 1.J列のセル入力がCIRCLEの行で、B~E列の数値が同じセル間を結合する。 2.K列のセル入力がCIRCLEの行で、F~I列の数値が同じセル間を結合する。 3.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じ場合、B列をB列の数値XC列の数値とし、B~E列のセルを結合する。 4.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じ場合、F列をF列の数値XG列の数値とし、F~I列のセルを結合する。 5.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じでない場合、B列をB列の数値XC列の数値とし、B,C列のセルを結合する。又、D列をD列の数値XE列の数値とし、D,E列のセルを結合する。 6.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じでない場合、F列をF列の数値XG列の数値とし、F,G列のセルを結合する。又、H列をH列の数値XI列の数値とし、H,I列のセルを結合する。 7.J列のセル入力がSHAPEの行で、B~E列は何もしない 8.K列のセル入力がSHAPEの行で、F~I列は何もしない

  • EXCELのマクロで・・・

    数値や文字列などが入力されてるセルを自動で範囲指定し、計算式が入っていないところだけを、クリアするにはどのようなVBAを書けばいいんですか? あれば、すごく便利なんですが。 どなたか、教えて下さい。

  • オートSUMの答えがどうやっても合わないのですが・・・・

    エクセル2000を使用しています。 縦計算と横計算程度のそれほど難しくないワークシートを作りましたが、ある列の縦計算(その列の数値の合計)がどうしても合いません。電卓で確認しましたが、どう計算してもエクセルの答えが誤っているのです。 ・その列の合計されるべき列(R11~R31)には(=$N$6*Q11~Q31)が入っている。(N6及びQ11~31は実数が入る) ・その合計の答えが入るべきセル(Q32)には(=SUM(R11:R31))が入っている。 ・隠れている行や見えない行は無い。(行番号で確認) ・エクセル上の答えが実際の数値(電卓による)より2少ない どう考えてもコンピュータが間違っているとしか思えません。こんな事ってあるんですか? 解決法があればおしえて下さい!!

  • エクセル:データが入った最終行の行番号の取得

    お世話になります。 A列にいろいろデータが入っているとして、データが入っている一番下(最終行)の行番号をB1のセルに表示させるにはどういう計算式で出来るでしょうか? A列のデータは数値だけでなく文字列も含みます。また途中空白セルもあります。 A1~A20にデータが入っているときはB1に20と表示させる。 よろしくお願いします。

  • EXCEL2007について質問です

    $B4*C$1の数式をコピーするとき、以下の質問に答えてください。 質問1:$B4のように列は絶対参照・行は相対参照の組み合わせの場合は、B(列)は絶対参照だからBを必ず参照し、行は相対参照だから数式が入力(コピー)されたセルを基準として、数式が入力された行と同じ行のセルを参照する。 つまり上記から、$B4をコピーする場合、必ず「B列の中で数式が入力された行と同じ行を参照する」、こういうことでしょうか? 質問2:C$1のように、列は相対参照・行は絶対参照の組み合わせは、C(列)は相対参照だから数式を入力(コピー)した位置を基準として、数式が入力された列と同じ列のセルを参照し、$1は絶対参照だから、必ず1行目を参照する。 つまり上記から、C$1をコピーする場合は、必ず「数式を入力セルと同じ行番号の1行目を参照する」、こういうことでしょうか?

  • EXCELで文字列を探すコマンドで質問です

    複数のセルを指定しそれらの中から目的の文字列があれば、そのセルの行番号を、そのコマンドのあるセルに表示させるにはどうすれば出来ますか?

  • excel VBAについて質問します

    excel VBAについて質問します A列のセルには単なる数値や「44+30」のようなデータが入っているものがある。 ' + の記号があったら、セルの先頭に = を追加して計算させて答えを表示しなさい。 'マクロ実行後、A列には、数値だけが表示されることとする。 マクロ実行前   ⇒  マクロ実行後 22   --------------- 22 44+30 --------------- 77 35 -------------------- 35 22+11 --------------- 33 こういった感じにしたいんですがなかなか上手く行きません。

  • エクセルについて質問します。

    エクセルの計算式で質問します。 範囲指定したセルの列で、常に1つ下のセルの数値から上の数値をマイナスして、そのマイナスの数値が一番大きかった数値を、範囲指定したセルの中から抽出する計算式を教えて下さい。     A    B    C  1  1       -1  2  2       -3  3  5        2    4  3    5   例えば、上記のようにA列に数値が入っていたとします。 この場合はA3-A2=-3が一番マイナスが大きい数字ですので、A3の数値である「5」をA5のセルに返したいと思っています。 分かりづらい質問で申し訳ありませんが、分かる人がいましたら教えて下さい。 宜しくお願い致します。

専門家に質問してみよう