我正在尝试执行简单的任务,即根据用户是否单击了单元格B,C或D来更改单元格A的值。出于某种原因,下面的代码仅适用于第一个with语句(在这种情况下) ,将单元格A的值设置为“低”的那个。当我点击B或C时,有谁知道为什么它不起作用?任何有关此代码的帮助都会很棒!谢谢!
Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
If Not Intersect(.Cells, Columns(1)) Is Nothing Or .Count > 1 Then Exit Sub
Sheets("Sheet1").Range("A" & ActiveCell.row).Value = "Low"
If Not Intersect(.Cells, Columns(2)) Is Nothing Or .Count > 1 Then Exit Sub
Sheets("Sheet1").Range("A" & ActiveCell.row).Value = "Medium"
If Not Intersect(.Cells, Columns(3)) Is Nothing Or .Count > 1 Then Exit Sub
Sheets("Sheet1").Range("A" & ActiveCell.row).Value = "High"
End With
End Sub
答案 0 :(得分:8)
如果第一列不是第一列,则第一条语句将导致例程退出。改变测试,你会有更多的成功
此外,当您查找特定列时,请使用select case语句检查它们以使其不那么拥挤
Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
if .Count > 1 then exit sub
Select Case .column
Case 2
Sheets("Sheet1").Range("A" & ActiveCell.row).Value = "Low"
Case 3
Sheets("Sheet1").Range("A" & ActiveCell.row).Value = "Medium"
Case 4
Sheets("Sheet1").Range("A" & ActiveCell.row).Value = "High"
end Select
End With
End Sub
答案 1 :(得分:1)
试试这个:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rOut As Range
With Target
Set rOut = Me.Range("A" & .Row)
If .Count = 1 Then
If Not Intersect(.Cells, Columns(2)) Is Nothing Then
rOut.Value = "Low"
Else
If Not Intersect(.Cells, Columns(3)) Is Nothing Then
rOut.Value = "Medium"
Else
If Not Intersect(.Cells, Columns(4)) Is Nothing Then
rOut.Value = "High"
End If
End If
End If
End If
End With
End Sub