Excel VBA只需单击一次即可更改单元格的值-将其单独指定给多个范围
我正在尝试设置一个vba代码,以便我能够单击特定数量的单元格,并使这些单元格在无、cr和cv之间切换。到目前为止,我的代码中有这个,但我需要将它分配给多个目标,但我似乎无法让它们独立工作Excel VBA只需单击一次即可更改单元格的值-将其单独指定给多个范围,vba,excel,Vba,Excel,我正在尝试设置一个vba代码,以便我能够单击特定数量的单元格,并使这些单元格在无、cr和cv之间切换。到目前为止,我的代码中有这个,但我需要将它分配给多个目标,但我似乎无法让它们独立工作 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Application.EnableEvents = False With Target If .Address = Range("A1").Address
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Application.EnableEvents = False
With Target
If .Address = Range("A1").Address Then
Select Case .Value
Case ""
.Value = "CR"
Case "CR"
.Value = "CV"
Case "CV"
.Value = ""
Case Else
.Value = "CR"
End Select
End If
End With
Range("A2").Select
Application.EnableEvents = True
End Sub
这将是实现你想要的一种方式
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' 07 May 2017
Dim Rng As Range
Set Rng = Range("A1,B2:B4,C3,D4")
If Not Application.Intersect(Target, Rng) Is Nothing Then
MsgBox "Cell " & Target.Address(False, False) & " was clicked."
End If
End Sub
我注意到您的第一个Select语句是多余的,因为它与最后一个语句相同:- 枫叶,
我不完全确定我是否完全理解你的意图,但这对我很有用:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
For Each T In Target
With T
'If .Address = Range("A1").Address Then
Select Case .Value
Case ""
.Value = "CR"
Case "CR"
.Value = "CV"
Case "CV"
.Value = ""
Case Else
.Value = "CR"
End Select
'End If
End With
Next
Range("A2").Select
Application.EnableEvents = True
End Sub
如果事实证明这不是你想要完成的,我怀疑你能够很容易地调整它来做你需要的事情。希望这有帮助。如果您有任何问题,请不要犹豫。这是我提出的,效果很好。谢谢你的帮助
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Application.EnableEvents = False
If Target.Cells.Count = 1 Then
If Not Intersect(Target, Range("C8:C10:C12:C14:C16:I8:I10:I12:I14:I16:O8:O10:O1:O14:O16:U8:U10:U12:U14:U16:AA8:AA10:AA12:AA14:AA16:AG8:AG10:AG12:AG14:AG16:AM8:AM10:AM12:AM14:AM16")) Is Nothing Then
Select Case Target.Value
Case ""
Target.Value = "CR"
Case "CR"
Target.Value = "CV"
Case "CV"
Target.Value = ""
Case Else
Target.Value = "CR"
End Select
Range("B2").Select
End If
End If
Application.EnableEvents = True
End Sub
非常感谢。我将尝试这样做:您不需要该循环来定义多区域范围。您只需使用Set Rng=RangeA1、B2、C3,D4@A.S.H.谢谢我已经修改了我的答案,以纳入你的想法。