Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7142 / 13644 ツリー ←次へ | 前へ→

【40829】シートのチェンジイベント Hiro 06/7/24(月) 21:56 質問[未読]
【40835】Re:シートのチェンジイベント [名前なし] 06/7/24(月) 23:14 回答[未読]
【40836】おまけ [名前なし] 06/7/24(月) 23:55 発言[未読]
【40895】Re:おまけ Hiro 06/7/25(火) 20:07 お礼[未読]
【40901】Re:シートのチェンジイベント Kein 06/7/25(火) 22:35 回答[未読]
【40956】Re:シートのチェンジイベント Hiro 06/7/26(水) 19:14 お礼[未読]

【40829】シートのチェンジイベント
質問  Hiro  - 06/7/24(月) 21:56 -

引用なし
パスワード
   シートのチェンジイベントでセルに入力があった場合
目的のセルに自動的に文字を入力されるようにと思い、
コードを書きましたが、文字が入りません。
セルの文字を消した場合には、目的のセルの入力は消えます。
どのように直したら文字が入るのか分かりません。
よろしくお願いいたします。

目的の Target.Column は 4 To 34
    Target.Row は 4, 8, 12, 16, 20, 24 です。

Range("D4")に入力があった場合、Range("D7")に"出"と文字が入るように
したいのですが、

以下はそのコードです。

Private Sub Worksheet_Change(ByVal Target As Range)
   Select Case Target.Column
     Case 4 To 34
      If Target.Row = 4 Then
       Select Case ActiveCell.Value
          Case Is = ""
           Cells(Target.Row + 3, Target.Column).Value = ""
          Case Else
            Cells(Target.Row + 3, Target.Column).Value = "出"
        End Select
     End If
   End Select
End Sub

よろしくお願いいたします。

【40835】Re:シートのチェンジイベント
回答  [名前なし]  - 06/7/24(月) 23:14 -

引用なし
パスワード
   >       Select Case ActiveCell.Value

             ↓

       Select Case Target.Value

に変更します。

コードのどこかに、

  MsgBox ActiveCell.Address
  MsgBox Target.Address

を入れてみれば違いがわかると思います。

【40836】おまけ
発言  [名前なし]  - 06/7/24(月) 23:55 -

引用なし
パスワード
   >目的の Target.Column は 4 To 34
>    Target.Row は 4, 8, 12, 16, 20, 24 です。

という条件なら、こんな書き方もあります。

Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Count > 1 Then Exit Sub
  Set Target = Intersect(Target, Range("D1").Resize(24, 31))
  If Target Is Nothing Then Exit Sub
  If Target.Row Mod 4 = 0 Then
    Target.Offset(3).Value = IIf(Target.Value = "", "", "出")
  End If

End Sub

【40895】Re:おまけ
お礼  Hiro  - 06/7/25(火) 20:07 -

引用なし
パスワード
   ▼[名前なし] さん:
ありがとう御座いました。
おかげで目的の処理をすることが出来ました。
新しくMod と IIf を覚えることも出来ました。
こんな方法もある事を知り、VBの奥深さをあらためて
知ることが出来ました。ありがとう御座います。

【40901】Re:シートのチェンジイベント
回答  Kein  - 06/7/25(火) 22:35 -

引用なし
パスワード
   Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
   Select Case .Column
     Case 4 To 34
      Select Case .Row
        Case 4, 8, 12, 16, 20, 24
         If .Count > 1 Then Exit Sub
         Application.EnableEvents = False
         If IsEmpty(.Value) Then
           .Offset(3).ClearContents
         Else
           .Offset(3).Value = "出"
         End If
         Application.EnableEvents = True
      End Select
    End Select
  End With
End Sub

で、どうかな・・?

【40956】Re:シートのチェンジイベント
お礼  Hiro  - 06/7/26(水) 19:14 -

引用なし
パスワード
   ▼Kein さん:
ありがとう御座います。
思い通りの結果を得ることが出来ました。
いろいろなコードの書き方があり、大変勉強に
なります。
今後ともよろしくお願いいたします。

7142 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free