• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA セルの値を変更後にVBA作動)

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

このQ&Aのポイント
  • Excel VBAを使用して特定のセルの値が変更された場合にVBA処理を発動する方法について説明します。
  • 上記のコードを実行しても、セルの値が変更される前にVBAが作動してしまいます。セルの値が変更された後にVBAを発動するためには、コードを修正する必要があります。
  • 修正方法としては、Worksheet_Changeイベントを使用し、変更されたセルに対して処理を行うようにコードを書き換えます。具体的な修正方法については以下のコードを参照してください。

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

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

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 And Target.Row >= 4 Then MsgBox "セルの値が更新されました" End If End Sub とChangeイベントに変更すればよい。 ただし、Sheet1やSheet2のように具体的に1つのシートを選んで Worksheet_Change を選択・設定すると反応は、その選択シートでだけです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox Target.Address & "選択されました" End Sub もそのシートのイベントに入れていると、処理の前後関係などが、ややこしいことになります。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • iruyasu
  • ベストアンサー率37% (3/8)
回答No.1

Private Sub Worksheet_SelectionChange(ByVal Target As Range) ではなく Private Sub Worksheet_Change(ByVal Target As Range) です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • セルの値を変更した時に日付けが入るマクロ

    エクセル2010を使っている者です。 19行以内、19列以内の範囲において変更があった場合は、変更のあった行の 20列目に日付けが入るようしたくて、以下のVBAを書いたつもりなんですが、 うまく動きません。 セルの値を変えたり、セルをダブルクリックして編集可能な状態にすると、 日付けは入るのですが、そのセルより右の19列目までのセルが全て 「41602」といった数字に変わってしまいます。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = Target.Row > 19 Then Exit Sub If Target.Column > 19 Then Exit Sub Target.Offset(0, 1).Value = Date End Sub なお、上記のVBAは以下のサイトを見て作ったものです。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html どなたか、どこがおかしいのかお教えください。

  • エクセル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つのセルが結合しています。 よろしくお願いいたします。

  • Excel VBA 選んだ行のあるセルの値を入れる

    Excel VBA 教えてください。 選んだ行の5列目にその(選んだ)行の10列目の値を入れたいのですがどのようにしたらいいのでしょうか。 ちなみに Sub Macro1() Cells(Target.Row, 5).FormulaR1C1 = Cells(Target.Row, 10) End Sub というように、マクロノ記録を利用してやってみましたができませんでした。 ご教授願います。

  • エクセル VBA 変更→セルの色が変わる

    http://okwave.jp/qa/q2601257.html ↑こちらの質問に近いのですが、  ・フォントではなくセルの背景色を変える  ・A列からF列までのみ対象:G列以降は変更しても色が変わらない としたいのです。どのようにすれば良いのでしょうか。 VBAについては全く体系だって勉強したことがないので良く分かっていません。 見よう見まねで以下のようにしてみましたが、うまくいきませんでした。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column > 6 Then Exit Sub Target.Interior.Color = RGB(255, 0, 0) End Sub 3行目のTarget.~の所が黄色に示されてエラーがでます。 どのようにしたら上手くいくかご教示下さい。

  • 変化するセルが変更されたら実行、というVBAを組みたい

    たとえば、このセルが変更されたら実行、というのは Private Sub WorkSheet_change (Byval Target As Range) If(Target.Address = "$D$3") Then call *** End If End Sub のようにしますよね? この場合、指定したセルは「D3」ですが、たとえば、 A列、B列、C列、D列のアクティブの行のセルが変更されたらコード実行、 というようにするにはどうしたらいいのでしょうか?

  • セルの値を消すとVBAエディタ画面でエラーが出てしまいます。

    セルの値を消すとVBAエディタ画面でエラーが出てしまいます。 "特定の列"に、"特定の値"を入力したとき、(下記実例では1列目に値6) 次の行からその値に24を足し続けるというプログラムを作りました。 実行すると動くことは動くのですが、シートに移ってそれらの数字を消すと 「実行エラー、方が一致しません」とVBAエディタ画面に戻りエラーになってしまいます。 このエラーを出さなくするにはどうしたらよろしいでしょうか? その他、これ以外に改善点などございましたらご教授願います。 Private Sub Worksheet_Change(ByVal Target As Range) Dim 列番号 As Integer Dim 行番号 As Integer Dim 時間 As Integer If Target.Column = 1 Then If Target.Value = 6 Then 行番号 = ActiveCell.Row 列番号 = ActiveCell.Column For 時間 = 30 To 2046 Step 24 Cells(行番号, 列番号).Value = 時間 行番号 = 行番号 + 1 Next 時間 End If End If End Sub

  • エクセルVBAについて

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

  • VBA 特定セル変更時に指定セルに日付代入方法

    初心者のため、伝わるかわかりませんが、 次のような動作をVBAで行えなくて困っています。 ・行いたい事 (※前提として"行"ごとに実行します) J列が"1"だった場合、 L列にJ列が"1"になった日付(yyyy/mm/dd)を入力する ただし、J列には関数を使用し"1"と表示されているため セルの値変更ではありません。 ・現在のVBA Private Sub Worksheet_Calculate() If Target.Row >= 1 And Target.Row <= 100 And Target.Column = 10 Then With Target.Offset(, 2) .Value = Now() .NumberFormatLocal = "yyyy/mm/dd" End With End If End Sub ※J列が関数を使用しているため、Calculateにしています。 2行目の↓の部分でエラーになってしまっています。 > If Target.Row >= 1 And Target.Row <= 100 And Target.Column = 10 Then どなたかご教授いただけたら助かります。 よろしくお願いします。

  • エクセル2003 VBAでセル移動

    いつもお世話になります。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row > 9 Then If Target.Column = 3 Then Cells(Target.Row, 4).Select ElseIf Target.Column > 5 Then Cells(Target.Row + 1, 1).Select End If End If End Sub これで、B列からC列を飛ばしてD列にセル移動して取りあえずの目的は達成しているのですが、 D列からB列には方向キー移動してくれません。Target.Columnが3になるんで当たり前なんですが・・・ B列の入力ミスがあるときマウスで移動させるか、A列まで戻ってから方向キーで上に上がるかです。 何かいい方法ありませんでしょうか。D列から方向キーで戻るときも、出来ればC列を飛ばしてほしいです。 よろしくお願いします。

  • SelectionChangeイベント 文字列エラ

    エクセルvbaなのですが セルをクリックしたときに、該当する値ならメッセージを表示させる際に Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = 1Then MsgBox "" End If End Sub ならエラーにならずに動くのに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = "運賃" Then MsgBox "" End If End Sub のように文字列にすると、型が一致しません。 と言うエラーになります。 If Target.Value = "運賃" Then の時でも、空白セルや数値が入ったセルをクリックした際はエラーになりません。 どのような型にすればいいのでしょうか? 実際、「運賃」と言う値が入ってるセルをクリックしても同じエラーが発生します。

このQ&Aのポイント
  • 相手側がエラーと表示されるが、受信はできている状態です。
  • 相手からのFAXが何度も送られてきますが、エラーが発生しています。
  • ブラザーMFCJ837DNを使用している環境で、FAXの受信時にエラーが発生しています。
回答を見る

専門家に質問してみよう