我正在尝试创建一个在A列中写入任何内容后运行多个VBA脚本的Excel表。
我想要帮助的一部分是在A列(任意行)中写入的字符2,3和4应该写在同一行的列中。 如果我从A Column中删除文本,我也想删除任何信息。
我已设法创建一个脚本,在写入A Column中的单元格信息后调用模块
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("A:A")) Is Nothing Then Exit Sub
Application.EnableEvents = False 'to prevent endless loop
On Error GoTo Finalize 'to re-enable the events
Call Modul1.Module
Finalize:
Application.EnableEvents = True
End Sub
任何帮助都会受到很大关注。
这就是我现在所拥有的。 它只能清除所有行中的一些值吗?!
Sub Lokation()
Dim n As Long, i As Long, j As Long
n = Cells(Rows.Count, "A").End(xlUp).Row
j = 2
For i = 2 To n
If Cells(i, "A").Value = vbNullString Then
Cells(j, "D").Value = ("")
Else
Cells(j, "D").Value = Mid(Cells(j, "A").Value, 2, 3)
End If
j = j + 1
Next i
End Sub
答案 0 :(得分:1)
如果您使用以下内容,则可以在Worksheet_Change
事件中包装整个部分:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim columnAcell As Range
If Intersect(Target, Me.Range("A:A")) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each columnAcell In Target.Cells
columnAcell.Offset(0, 3) = Mid(columnAcell, 2, 3)
Next
Application.EnableEvents = True
End Sub
我没有专门写入D列,而是使用了来自Target
的3列的单元格偏移量。由于此代码仅查看当前的A列,因此它将始终偏移到D列。
值得注意的事项 -
Intersect
范围从A:A
更改为A2:Axxxx