• ベストアンサー

VBAについて

VBA初心者です。 ダブルクリックをしたセルの、右隣セル3つに入っている値を、A1・B1・C1に反映させるVBAを教えて下さい。 例/F1でダブルクリックをしたら、G1とH1とI1の値をA1とB1とC1に反映させる。 ※ダブルクリックをするセルF列のどれかで、反映させる先のセルはA1とB1とC1です。 初心者の為、質問内容が分かりにくいかもしれませんが、ご回答頂けると幸いです。

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

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

Offsetの使い方がポイントだろう。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox "AA" If Target.Column = 6 Then MsgBox "bb" Cells(Target.Row, "A") = Target.Offset(0, 1) Cells(Target.Row, "B") = Target.Offset(0, 2) Cells(Target.Row, "C") = Target.Offset(0, 3) End If End Sub Msgbox ha最終削除してください。 それまでは、ダブルクリックでここへとび、クリックでは飛ばないこと。 F列のダブルクリックだけMsgBox "bb"を通る。 など確認してください。 >ダブルクリックをするセルF列のどれかで、反映させる先のセルはA1とB1とC1です。 はF列のダブルクリックで「対応行!」のA,B,C列にセットするのではないのか。 いつもA1,B1,C1にセットするなら、Target.Rowのところを1にする。

その他の回答 (1)

  • kuma56
  • ベストアンサー率31% (1423/4528)
回答No.1

ダブルクリックをしたセルの・・・・・シートモジュールについて調べてみて下さい。 右隣セル3つに入っている値を・・・・・・・セルの相対参照を調べてみて下さい。 反映させる先のセルはA1とB1とC1です・・・・・セルの絶対参照を調べてみてください。

関連するQ&A

  • VBA教えてください

    セルB5からF5に各列の平均値が入力されています。 B5からF5の値をH6からL6にも表示されるVBAを作りたい のですが教えていただけないでしょうか? 関数でを使えば簡単ですが数式を表示したくないので お願いします。

  • エクセルVBAのFindメソッドを使って・・・

    こんばんは。エクセルのVBAで教えてください。 I列で「数量」という文字を見つけて、 その(I列の)右隣(J列)の値をB2以降に、 その2つ左(G列)のレートをC2以降に、 その3つ左(F列)の、2つ上の商品名をA2以降に 順に書き出していくようにしたいのですがどのようにコードを 書けばいいでしょうか? Findメソッドを使ってできそうだと考えたのですが、その先が さっぱりわかりませんが、なんとか形にしたいので質問させていただ きます。よろしくお願いします。

  • Excel VBA BeforeDoubleclickについて

    VBA初心者です。 拙いスキルではどうにもならなくて困っております。 お分かりになられる方おられましたら ご教授ください。 _|___A___|___B___|___C___|_ 1| aaa | bbb | ccc 2| ddd | eee | fff 3| 4| --- | +++ | *** 5| ### | $$$ | &&& 6| %%% | ???? | \\\ 7| >>> | <<< | /// 8| 以上のような表がありまして、 セルをダブルクリックした場合、たとえば A4,A5をダブルクリックするたび⇒A1文字列にA4/A5文字列を追加 A6,A7をダブルクリックするたび⇒A2文字列にA6/A7文字列を追加 4~7行目以外をダブルクリック⇒何もしない という動作を各行ごとに実行(A列はA1/A2,B列はB1/B2へと追加) していくことができますでしょうか? サンプルコードなどご教授いただけますと幸いです。 何卒よろしくお願いいたします。

  • Excel VBAでの値の比較

    お世話になります。 Excel VBAでの値の比較方法についてご教授頂きたく存じます。 下記のような値がセルに入っていると仮定しまして、 セルA1とセルG1を比較する セルA2とセルG2を比較する セルB1とセルH1を比較する セルB2とセルH2を比較する 値が違う場合のみ、A列、又は、B列のセルの色を変更したいのですが・・・。 下記例の場合であれば、B1とA2がセルの色が変われば良いです。    A列 B列    G列 H列 1行  1  1     1   2 2行  2  2     3   2 VBAで実現したいと思います。 何卒、宜しくお願い申し上げます。

  • アクティブセルの行のセルを複数指定選択-VBA

    アクティブセルの行のセルを複数指定選択-VBA コマンドボタンを押すとアクティブセルのある行のセルを個別に選択したいのですが、どのようにVBAにコードを入力すればいいのか悩んでいます。 例:選択したい列(セル)A:C,F:I アクティブセルがA2にある時、コマンドボタンを押してA2,B2,C2,F2,G2,H2,I2を選択する。   アクティブセルがA10にある時は、A10,B10,C10,F10,G10,H10,I10を選択する。 ご回答お待ちしています。宜しくお願い致します。

  • エクセルVBAで設定したセルの値

    エクセルVBAについての質問です。 例えば、A1とB1のセルの値を参照している数式がC1セルに設定してあるとします。 さらに、D1のセルにはC1の値を参照している数式が設定してあるとします。 VBAでA1、B1のセルの値を変更したとします。 次のステップのVBAでC1、D1のセルを参照すれば、A1、B1の変更が反映された後の正しい値である C1、D1の値が取得できるのでしょうか? できて当たり前だと思うのですが、セルに設定してある数式が大変複雑であったりすると、ちゃんとA1、B1の変更が反映された正しいC1、D1セルの値がVBAで取得できるのかちょっと不安です。 ばかな質問かもしれませんが、回答をよろしくお願い致します。

  • エクセルVBA/抽出・貼付け

    下記を行いたいのですが、どのようなコードになるのでしょうか? シート001(入力用) (1)A1~A50、B1~B50、C1~C50、D1~D50  に数値、E1~E50に文字列 (2)F1~F50、G1~G50、H1~H50、I1~I50  に数値、J1~J50に文字列 ※空白行混在 シート002(計算用) シート001に作ったコマンドボタン:クリックにより、 シート002を表示させ、A1~E100に、 シート(1)のA1~E50とF1~J50の空白行以外を連続して 反映させたい。並べ替え用など別シートを用いずに、 VBAコード内で処理したい。

  • EXCEL VBA

    はじめまして。ExcelのVBAについて質問させて頂きます。 - A-B-C            1 0 あ        2 0 い        3 1 う           4 1 え           5 1 お   上記のようなデータに対して、A列の値が1の場合、B列の値をC列へコピー して、B列をゼロにする。A列の値が0の場合は、そのまま。 (結果) - A-B-C            1 0 あ        2 0 い        3 1 0  う           4 1 0 え           5 1 0 お   といったようにVBAを作成したいのですが、なにぶん初心者なもので、 どのように記述すればよいのかわかりません。 よろしくお願いいたします。

  • Excelの入力式について

    Excelの入力式について教えてください。 たとえば、A1セル~F1セルに数値が入っていて、G1セルA1+B1の値、H列にC1+D1の値 I列にE1+F1の値としたい場合、 G1セルに数式を入れてH列にコピーするとB1+C1になってしまいます。 上手くやる方法はないのでしょうか。 1列ずつわざわざ空白列を作るのは嫌ですし、たくさんあったら数式を打ち込むのも大変です。。。

  • VBAでダブルコーテーション入りの数式をセルにセットしたい

    VBAにて下記質問があります。 複数の質問を連続して投稿するのもどうかと思い、 不慣れなもので、1投稿で2種類の質問を記載いたしましたが、 迷惑等になるのであれば、削除後複数投稿にて再度投稿したいと思いますので、遠慮なくご指摘下さい。 さて、本文ですが、 1.VBAにてExcelのあるセルに数式をセットしたいのですが、数式内にダブルコーテーションがある為、上手くセットできません。 2.VBAでRange関数のパラメータを可変にしたい。 1について、 セットしたい数式 =IF(ISERROR(VLOOKUP(H23,ini!B36:D401,3))=TRUE,"",IF(VLOOKUP(H23,ini!B36:D401,3)=0,"",VLOOKUP(H23,ini!B36:D401,3))) セットしたいセルをH44とした場合、単純に .Range("H44").Value = "=IF(ISERROR(VLOOKUP(H23,ini!B36:D401,3))=TRUE,"",IF(VLOOKUP(H23,ini!B36:D401,3)=0,"",VLOOKUP(H23,ini!B36:D401,3)))" このように書いてエラーになってしまいます。 ダブルコーテーションがあるので当然だとは思うのですが、 回避の仕方がわかりません。 また、2についてですが、 「ワークシートに書かれた値をRangeのパラメータとして代入したい。」 仮にSheet1のA2のセルにA~Fまでのいづれかの値が入るものとする。 Range関数の列の指定はA2の値を参照し、代入したい。 A2の値:C worksheets("sheet1").Range("〇1”).Value 〇にCが入るようにしたい。 当然、A2がFになったらFが代入されるようにしたい。 色々検索し、調べてみたのですが上手く見つけられませんでした。 VBA初心者である為、上記説明が分かりづらいかもしれませんが、 分かる方おりましたら、ご教授の程、よろしくお願い致します。

専門家に質問してみよう