Excel 范围的VBA代码问题。I';我得到类型不匹配错误13
下面的代码适用于单个单元格,但当我想在某个范围内实现此功能时,会出现类型不匹配。如果有人能做到以下几点,我们将不胜感激。谢谢Excel 范围的VBA代码问题。I';我得到类型不匹配错误13,excel,vba,Excel,Vba,下面的代码适用于单个单元格,但当我想在某个范围内实现此功能时,会出现类型不匹配。如果有人能做到以下几点,我们将不胜感激。谢谢 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("A159:A1034").Value = "SC" Then Range("J159:J1034").Value = "SC:NA&quo
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A159:A1034").Value = "SC" Then
Range("J159:J1034").Value = "SC:NA"
Else
Range("J159:J1034").Value = Null
End If
End Sub
即使Range(“A159:A1034”).Value
可以工作,但它不能工作,它必须立即返回875个单元格的值。很可能不是你想要的
在范围内循环并进行调整的最简单方法如下:
Dim area As Range, c As Range
Set area = Range("A159:A1034")
For Each c In area
If c.Value = "SC" Then
c.Value = "SC:NA"
Else
c.Value = Null
End If
Next c
Private Sub Worksheet_Change(ByVal Target As Range)
Dim area As Range, c As Range
Set area = Range("A159:A1034")
If Not Intersect(Target, area) Is Nothing Then
Application.EnableEvents = False
If Target.Value = "SC" Then
Target.Value = "SC:NA"
Else
Target.Value = Null
End If
Application.EnableEvents = True
End If
End Sub
但由于多种原因,我不建议在工作表\u selection change
事件中使用该选项
首先,这将是一个相当繁重的操作,每次更改选择时都会运行。使整个工作表的处理速度非常慢
第二,任何包含“SC”的单元格都将更改为“SC:NA”,但在选择的下一次更改时,它们将全部消失。因为它们将无法通过检查并被转换为“Null”。这似乎是非常奇怪的行为
如果要在工作表事件中运行它,可以改为在工作表\u Change
事件中运行它,并将其限制为仅在此范围内进行更改时运行
比如:
Dim area As Range, c As Range
Set area = Range("A159:A1034")
For Each c In area
If c.Value = "SC" Then
c.Value = "SC:NA"
Else
c.Value = Null
End If
Next c
Private Sub Worksheet_Change(ByVal Target As Range)
Dim area As Range, c As Range
Set area = Range("A159:A1034")
If Not Intersect(Target, area) Is Nothing Then
Application.EnableEvents = False
If Target.Value = "SC" Then
Target.Value = "SC:NA"
Else
Target.Value = Null
End If
Application.EnableEvents = True
End If
End Sub
如果您想触发对整个范围的检查–如第一个示例,请将其作为单独的子项,作为宏调用。您希望何时
if-range(“A159:A1034”).Value=“SC”
为真?当范围内的每个单元格都有该值时,还是其他值?如果需要检查许多单元格的值,可能必须循环检查所有值。设置值更容易。