• ベストアンサー

エクセルVBAについて

エクセルVBAについて range("B5") = 1行の、選択したセルの値 というようなマクロを作成したいと思っています。 というのも、B5セルの値が、1行で選択したセルの値に変化できればと思っています。 ちなみに下のようなコードを書いてみたのですが、うまくいきません orz Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B5") = Rows(1).ActiveCell.Value End Sub 初心者で申し訳ありませんが、よい方法がありましたら、 よろしくお願いいたします。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

'----------------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Target.Count > 1 Then Exit Sub    '●複数セル選択は無視  If Target.Row <> 1 Then Exit Sub    '●1行目以外の選択は無視  If Target.Column > 6 Then Exit Sub   '●F列目以降の選択は無視  If Target.Value = "" Then Exit Sub   '●選択セルが未入力なら無視    Range("B5").Value = Target.Value End Sub '------------------------------------------- '●F列目以降の選択は無視のコードは適宜変更のこと。。。 以上です。

ein-zwei
質問者

お礼

うまくいきました!また、解説も付けていただいて勉強になりました。 他にご回答を下さった方もありがとうございました。

ein-zwei
質問者

補足

ちなみに、1行のセルが結合している場合、うまく表示されないのですが、 「.MergeArea」が関係しているような感じなのですが、 セルが結合している場合でも(選択する1行目のセルは、結合しているもののみです) うまく表示させる方法はありますでしょうか? 度々で恐縮なのですが、よろしくお願いいたします。

その他の回答 (3)

noname#130090
noname#130090
回答No.4

これでどうでしょうか? イベントなので画像も参照してみてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Myrange As Range Set Myrange = Application.Intersect(Target, Rows(1)) If Target <> "" Then Range("B5").Value = Target Set Myrange = Nothing End Sub

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

1行で選択したセルの値とは1行目で選択した一つのセルの値ですね? ならば Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Target.Row <> 1 Then Exit Sub   If Target.Count > 1 Then Exit Sub   Range("B5").Value = Target.Value End Sub では?

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

Range("B5").Value = Cells(Target.Row, 1).Value では

関連するQ&A

  • エクセルVBAについて

    エクセルVBAについて 下にある、1行目に入力された数値の、選択したセルの数値を、B5セルに表示させるマクロなのですが、1行目が結合していると、うまくB5セルに表示できません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Target.Count > 1 Then Exit Sub    '●複数セル選択は無視  If Target.Row <> 1 Then Exit Sub    '●1行目以外の選択は無視  If Target.Column > 6 Then Exit Sub   '●F列目以降の選択は無視  If Target.Value = "" Then Exit Sub   '●選択セルが未入力なら無視    Range("B5").Value = Target.Value End Sub このマクロで、結合しているセルをB5に表示させることはできますでしょうか? 1行目で選択するセルは、すべて2つのセルが結合しています。 よろしくお願いいたします。

  • エクセルvba  (ByVal Target As Range)について

    シートのイベントプロシージャーが Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub となりますが (ByVal Target As Range)部分は何なのでしょうか? 何のためにあるのかわかりません。 Private Sub Worksheet_SelectionChange() End Sub としたらエラーが返ってきました。 理由を教えてください。 よろしくお願いします。

  • Excel VBA セルの値を変更後にVBA作動

    Excel VBAを活用して、特定のセルの値が変更されたときに、VBA処理を発動させることになりました。 処理といたしましては、C列(3列目)の4行目以下の空白セルに数値を入力するか、セルに入力されている数値を変更した場合にVBAを発動させたいです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 3 And Target.Row >= 4 Then MsgBox "セルの値が更新されました" End If End Sub 上記のコードを実行してみたところ、3列目(C列)の4行目を選択した段階でVBAが作動してしまいます。 セルの値変更後に作動するようにするには、どう修正すればよろしいでしょうか?

  • Excel VBA 他のシートに演算結果を入れたい

    例えば、A~Dというシートのいずれかのo1セルに数値を入力すると、演算結果がp1に入る場合。 A~Dのどのシートでもo1に入力したら、Z!p1にp1の値を放り込みたいのです。 で、以下のようなコードを書いたのですが、上手くいきません。 因みに、セルの移動方向はオプションで「右方向」に設定してあります。 ※結果としてセルの移動を認識していないのか、まったく無反応です。 ※Range("Z!$P$1") =… の行にブレークポイントを設定しても、引っかかりません。 何が悪いのかお教え頂ければ幸甚です。 >違うシートには代入できない… ってことでしょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$P$1" Then Range("Z!$P$1") = Range("$P$1") End If End Sub ※なお、出典元のSubは以下の様なもので、正常に動作していました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then Range("B1") = Range("B1")+1 End If End Sub

  • エクセルマクロ(VBA)で指定したセルが変化したときに実行するには?

    VBAでsheetの中のworksheet_changeなどでマクロを書くと、そのシー トの中のどのセルを変化させてもマクロが実行されるのですが、これ を、A1とc1とc2が変化したときだけ処理を実行させたいのです。 以下のマクロのどこかを編集すると、そのようなことが出来るのでし ょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) ----実行する内容---- End Sub Private Sub Worksheet_Change(ByVal Target As Range) ----実行する内容---- End Sub

  • エクセルVBAについて、ある領域の中のセルが変化したらマクロが実行され

    エクセルVBAについて、ある領域の中のセルが変化したらマクロが実行される方法を教えて下さい。 下記のようなイメージです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveCell.Columns("A:A") Then 上記のようなイメージで2通り教えて下さい。 ・A列が選択された時 ・A列のうちで例えばA3セル以降が選択された時 宜しくお願いします。

  • (エクセルVBA)セルを左クリックしたら実行させるには?

    エクセルVBA初心者です。 下のように、同じシート内のコードとして2つのサブプロシージャがある状態なのですが、 シート内のどこかのセルを左クリック→指示(1) シート内のどこかのセルを右クリック→指示(2) のようにするにはどうしたらいいのでしょうか? (この状態だと、右クリックすると選択範囲が変わったことが優先的に認識されて指示(1)のほうが実行されてしまうようです。) 説明不足かもしれませんが、何を説明していいのか分からないので、補足が必要だったら言ってください。すみませんがよろしくお願いします。 --------------------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) 指示(1) End Sub --------------------------------------------------------------- Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 指示(2) End Sub ---------------------------------------------------------------

  • VBAでエラートラップがうまくいきません。

    VBAで次のようなプロシージャを実行してみました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Target.Value = " " Then          ~コード~   END IF END SUB すると複数のセルが選択されるとエラーがでます。そこで次のようにしてみました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   On Error GoTo エラー処理   If Target.Value = " " Then     On Error GoTo 0           ~コード~   END IF   EXIT SUB エラー処理:   EXIT SUB END SUB ところがこれでもやっぱりIF文のところでエラーがでます。 当方初心者でなぜエラーがでるのかわかりません。 わかりやすくご教授ください。 よろしくお願いします。

  • Excelで選択しているセルの行を色づけしたい

    以前、このサイトでVBAを以下のように設定したのですが、 一度、ファイルを閉じてしまうと、無効になってしまいます。どうすれば、いいのでしょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) ActiveSheet.Rows.Interior.ColorIndex = xlNone Rows(Target.Row).Interior.ColorIndex = 15 End Sub

  • Excel VBAについて

    Excel VBAにおいて、Sheetの選択した行によって値を表示するUserFormを変更したいと思っています。 現在以下のようにしたのですが、実行すると「SubまたはFunctionが定義されていません」というエラーが表示されます。 「Controls("UserForm" & x).Label1.Caption =」のところをどのようにしたらよいのでしょうか。 Private Sub CommandButton1_Click()   If ActiveCell.Row = 5 Then     UserForm1.Show     x = 1   ElseIf ActiveCell.Row = 6 Then     UserForm2.Show     x = 2   End If End Sub Private Sub Worksheet_Selection Change(Byval Target As Range)   Controls("UserForm" & x).Label1.Caption = ・・・

専門家に質問してみよう