VBAおよび一般的なコーディングでは非常に慣れていません。隣接する3つのセルがすべて空白になる場合は、セルを空白にします。
私は、A
という列がジョブ番号であるスプレッドシートで作業しています。
列B
は日付です。
列C
D
E
パターンを持たないE.G Textにマークを付ける必要があります。
は今、私は任意のマークがC
、D
またはE
に置かれている場合、列B
に日付を入れてコードを働いてきました。ただし、C
、D
またはE
を削除すると、列B
のセルにはまだ日付が入力されます。
だけC
、D
またはE
は、今私はあなただけのセルを削除できますが、どこでその楽しさを知っているそれらまたは2または1
上のテキストを持っている可能性が明確にすること。
ここに私が今まで持っていたコードがありますので、それを小さくしたりクリアしたりする方法を提案してください。しかし、主に私の問題を事前に整理してください。
Private Sub Worksheet_Change(ByVal Target As Range)
Call Macro1(Target)
Call Macro2(Target)
Call Macro3(Target)
End Sub
Sub Macro1(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("c2:c100")) Is Nothing Then
With Target(1, 0)
.Value = Date
.EntireColumn.AutoFit
End With
End If
End Sub
Sub Macro2(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("d2:d100")) Is Nothing Then
With Target(1, -1)
.Value = Date
.EntireColumn.AutoFit
End With
End If
End Sub
Sub Macro3(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("e2:e100")) Is Nothing Then
With Target(1, -2)
.Value = Date
.EntireColumn.AutoFit
End With
End If
End Sub
既存のコードがクリアされるか、カラムCに日付を追加するように見えるので少し混乱します。質問はカラムBのクリアまたは削除を参照しています。 –
1)OPTIONSコードは実際には " 'Range( "D1")(1、-1).Address'と 'Range( "E1")(1) "Range(" C1 ")(1,0).Address'は" $ B $ 1 " 、-2).Address '。 2)さらに、CからE列までのすべてのセルがクリアされている場合(1つずつでも)に日付のクリアランスを許可する必要があると私は考えました。 3)最後に私は常にアプリケーションを切り替えます。4)私はシートを明示的に参照することを考えていたが、 'Worksheet_Change()'イベントハンドラでは、 "Active"シートが 'Target'のものです – user3598756
@ user3598756、あなたはアドレッシングに当然です。知っている2人は、あなたが正しいかもしれないと思うが、それは明らかではない。 3で、それは良い習慣ですが、コードはBからBへの変更によってCからEへの変化に反応するのでここでは不要です。 –