单击其他单元格时设置单元格值

Bra*_*don 1 excel vba excel-vba

我正在尝试执行一个简单的任务,即根据用户是否单击了单元格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
Run Code Online (Sandbox Code Playgroud)

Sea*_*anC 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
Run Code Online (Sandbox Code Playgroud)