プロが教えるわが家の防犯対策術!

Private Sub Worksheet_Change(ByVal Target As Range)

  Dim eiji As String

  eiji = Target.Address
  eiji = Left(Target.Address, 2)
  eiji = Right(eiji, 1)

  If eiji = "B" Then
    If Target.Text = "" Then
      Range("A1").Value = "B-clear"
    End If
  End If

  If eiji = "C" Then
    If Target.Text = "" Then
      Range("D1").Value = "C-clear"
    End If
  End If

End Sub

上記は、C、B列の値がDeleteキーなどで空欄になった場合に文字を出力するコードです。
最初にTarget.Addressから英字部だけを抜き出し(少々ムリヤリですが)、
それを判断基準に以降の処理をしています。

この時B1:C1のように範囲選択してDeleteキーを押された場合に、
どちらの処理(今回の例だと"B-clear"と"C-clear"の表示)も行いたいのですが、
その場合どのように記述したらよいでしょうか。

A 回答 (1件)

Option Explicit



Private Sub Worksheet_Change(ByVal Target As Range)

Dim eiji As String
Dim Cell
Dim i As Integer
i = 0
For Each Cell In Target

i = i + 1
If Cell.Column = 2 Then
If Cell.Formula = "" Then
Range("A1").Value = "B-clear"
End If
End If

If Cell.Column = 3 Then
If Cell.Formula = "" Then
Range("D1").Value = "C-clear"
End If
End If
Next

End Sub



わざわざ英文字を取り出してみなくてもいいのでは?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
正常に動作しました。
ただ、このサンプルを自分の目的のコードに当てはめるのに難航しております。
サンプル作り間違えた…。

>わざわざ英文字を取り出してみなくてもいいのでは?
このサンプルコードでは意味無かったですね。
実際に使いたいコードでは必須(だと思い込んでいる)であり、
素人ゆえか数字より英字の方がわかりやすいので(言い訳してもしょうがないですが)。

とにかく、正常に動きました。
ありがとうございました。

お礼日時:2007/07/25 21:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!