• ベストアンサー

VBA チェンジイベント 任意のセルに自動表示の仕方

cistronezkの回答

回答No.4

老婆心ですが、複数セルを選択したときの動作確認(入力や内容削除など)をお忘れなく。

関連するQ&A

  • シートのイベント VBA

    シートをクリックしたらシートをクリアしたいのですが クリックするセルがA1の場合は、マクロを実行させたくないのですが 下記のコードだとエラーになってしまいます。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Target.Range = Range("a1") Then Cells.Clear End If End Sub ”Range("a1")でなければ、Cells.Clearする” にはどうすればいいですか?

  • エクセル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列を飛ばしてほしいです。 よろしくお願いします。

  • VBA 検索して一致したセルへジャンプさせたい

    Excelにて、シート1のA列とシート2のA列のデータにNoを入れます。 シート1のA列のNoをクリックすると、シート2のA列の同じNoにジャンプするマクロを組みたいです。 現在組んでいるマクロは、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Sht As Worksheet Dim Rng1 As Range Dim Rng2 As Range Dim FindCell As Range Set Sht = Worksheets("シート2") Set Rng1 = Range("A2:A100") Set Rng2 = Sht.Range("A2:A100")If Intersect(Target, Rng1) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub Set FindCell = Rng2.Find(Target.Value) If Not FindCell Is Nothing Then Application.Goto Reference:=FindCell, Scroll:=False End If End Sub です。 一応マクロは実行されますが、そうすると、シート1のA列の編集(Noを追加したり変更したり・・・)できません。 編集や変更もできて、検索マクロも実行できるというマクロの組み方はありますでしょうか?

  • VBA 範囲選択時エラー

    Private Sub Worksheet_SelectionChangeのVBAでA列B列C列でワンクリックで文字が入力できるように設定致しました。 その後、A列からC列を範囲選択してDeleteするとデバック 「実行時エラー  型が一致しません」と出てしまいます。業務上、そのセルのデータは一気に消したいので困っております。どなたか分かる方よろしくお願い致します。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rng As Range, rng_1 As Range, rng_2 As Range Application.EnableEvents = False Set rng_1 = Range("H17:H100") Set rng_2 = Range("I17:I100") Set rng_3 = Range("J17:J100") Set rng_4 = Range("K17:K100") Application.EnableEvents = True Set rng = Intersect(Target, rng_1) If Not rng Is Nothing Then Cancel = True If Target.Value = "" Then Target.Value = "(1)" Else Target.Value = "(1)" End If Else Set rng = Intersect(Target, rng_2) If Not rng Is Nothing Then Cancel = True If Target.Value = "(2)" Then Target.Value = Empty Else Target.Value = "(2)" End If Else Set rng = Intersect(Target, rng_3) If Not rng Is Nothing Then Cancel = True If Target.Value = "(3)" Then Target.Value = Empty Else Target.Value = "(3)" End If Else Set rng = Intersect(Target, rng_4) If Not rng Is Nothing Then Cancel = True If Target.Value = "(4)" Then Target.Value = Empty Else Target.Value = "(4)" End If End If End If End If End If End Sub

  • 【Excel VBA】チェンジイベント

    Excel2003を使用しています。 マクロの記録を元に、チェンジイベントを下記のように作成しました。 下記は、B列の11行目以降のセルのデータが変化したら、その行のF列に入力規則を設定するように作成したつもりです。 テストもしてみましたが、きちんと動作しました。 さらに、B列の11行目以降のセルのデータがクリアされたら、その行のF列に設定した入力規則もクリアしたく  If Target.Columns(2).ClearContents And Target.Row >= 11 Then   Cells(Target.Row, 6).Validation.Delete  End If 分からないながらにも、↑このように追加して試してみたのですが、何も動作しなくなりました(^_^;) こういう場合は、どのようにコードを書いたらいいのでしょうか? よろしくお願いします。 -------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column = 2 And Target.Row >= 11 Then   With Cells(Target.Row, 6).Validation    .Delete    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _    xlBetween, Formula1:="=$F$3:$F$7"    .IgnoreBlank = True    .InCellDropdown = True    .InputTitle = ""    .ErrorTitle = ""    .InputMessage = ""    .ErrorMessage = ""    .IMEMode = xlIMEModeNoControl    .ShowInput = True    .ShowError = False   End With  End If End Sub ------------------------------------------------

  • VBA チェンジイベント 別シートにデータ転記

    お世話になります。チェンジイベント初心者です。 同一BOOK内の特定のコラムのセルを選択した場合に、自動的に他のシートの特定のセルにデータを転記させたいのですが、どう書けばよいのか分かりません。添付の画像と下記マクロをご覧になって下さい。 -マクロ- Private Sub Worksheet_SelectionChange(ByVal Target As Range) If 1 = ActiveCell.Column Then Worksheets("01").Cells(ActiveCell.Row, 3) = Cells(ActiveCell.Row, 1) Worksheets("01").Cells(ActiveCell.Row, 4) = Cells(ActiveCell.Row, 2) End If End Sub メインのシートは[01]です。このシートのC4を選択し、次に[02]のA列にあるセルを選択すると、[02]のA列・B列のデータがC4・D5に転記されるようにしたいのですが、画像にあります通り[02]のA5を選択してしまうと、[01]のC5・D5に転記されてしまいます。 どのようにすれば、[01]でアクティブにしておいた行の3列目、4列目に転記が行われるのでしょうか? よろしくご指南くださいませ。

  • エクセル マクロを利用して繰り返して入力する方法

    マクロでA1B1C1D1E1F1セルに入力しF1入力後A2B2C2D2E2F2と 下方向へ繰り返し800行くらいまで入力し、それとB列はスキップしたいのですが下記の方法で別々のシートでは うまくいくのですが同じシ-ト内ではエラ-になってしまいます 次の行への移動 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 7 Then Cells(Target.Row + 1, 1).Select End If End Sub B列のスキップ Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("G1") <> "" Then If Target.Column = 2 Then Target.Offset(0, 1).Select End If End If End Sub どなたかご存じの方教えて下さい

  • VBAの記録を追加したい

    エクセル2002使用です。 VBAで次のコードを使っています。 Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range Set Target = Intersect(Range("C:C"), Target) If Target Is Nothing Then Exit Sub For Each Rng In Target If Rng.Value <> "" Then Rng.Offset(, -2).Value = Now Else ' (*) Rng.Offset(, -2).Value = "" ' (*) End If Next Rng End Sub (C列のセルに何か入力されると、A列の同じ行にその時刻が入る。) 同じシートで、F列に何か入力されるとE列の同じ行にその時刻が入るように書き直したいのですが、どうすればいいのでしょうか? すいませんが、よろしくお願いします。

  • 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が作動してしまいます。 セルの値変更後に作動するようにするには、どう修正すればよろしいでしょうか?

  • エラーが出てしまいます。

    特定の列(C列)に日付が入力されると同じ行の違う列に月名が入力されるマクロをt食ってみました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 3 Then Cells(Target.Row, 10) = Month(Target.Value) End If End Sub しかしC列の一つのセルに入力したときはきちんと作動したのですが、C列の複数セルを選択したときにエラーが出てしまいました。 このエラーを回避する方法はあるのでしょうか。