类型不匹配错误 excel VBA
Type mismatch error excel VBA
我的代码的目标是获取单元格的旧值,并检查是否输入了新值。如果旧值更改为新值,则更新指定单元格中的日期。
我的代码存在的问题是,我似乎无法在不破坏代码的情况下找到解决此错误的方法,因此我在尝试修复这一行代码时遇到了麻烦。我在两个工作表中都有这段代码,它们的值都针对不同的单元格进行了更改。问题是,此代码仅在用于一个工作表时才有效,但是当我使用两个具有相同代码的代码时,它会引发类型不匹配错误。
这是我的代码:
Dim oldValue As Variant
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
'My other worksheet is referencing cells E2:E100
oldValue = Me.Range("D4:D21").Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("D4:D21")) Is Nothing Then
Dim c As Range
For Each c In Intersect(Target, Me.Range("D4:D21"))
'Check value against what is stored in "oldValue"
'Type mismatch is on this line here
If oldValue(c.Row - 3, 1) <> c.Value Then
'Update value in column L (8 columns to the right of column D)
c.Offset(0, 7).Value = Date 'or possibly "= Now()" if you need the time of day that the cell was updated
End If
Next
End If
End Sub
我不确定类型不匹配错误是什么意思,所以我无法自行解决这个问题。我的问题是,如何在不引发此不匹配错误的情况下正确更新我的单元格?
编辑:请记住,一个工作表正在查找数字数据更改,而另一个工作表正在查找字符串值更改,我不确定这是否重要。如果我取出一个工作表的所有代码,该代码将适用于另一个工作表,但当我把它放回去时,它们都停止工作了。
谢谢。
您可以尝试以下代码:(将其放在 ThisWorkbook
的代码中)
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim ws1 As Worksheet
Set ws1 = ActiveSheet
For Each ws In Worksheets
ws.Activate
ws.Range("A1").Select
Next
ws1.Activate
Application.ScreenUpdating = True
End Sub
一个警告 - Workbook_Open 事件有时是 "problematic",因为它偶尔会在所有 Worksheets
完全加载之前触发。
我的代码的目标是获取单元格的旧值,并检查是否输入了新值。如果旧值更改为新值,则更新指定单元格中的日期。
我的代码存在的问题是,我似乎无法在不破坏代码的情况下找到解决此错误的方法,因此我在尝试修复这一行代码时遇到了麻烦。我在两个工作表中都有这段代码,它们的值都针对不同的单元格进行了更改。问题是,此代码仅在用于一个工作表时才有效,但是当我使用两个具有相同代码的代码时,它会引发类型不匹配错误。
这是我的代码:
Dim oldValue As Variant
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
'My other worksheet is referencing cells E2:E100
oldValue = Me.Range("D4:D21").Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("D4:D21")) Is Nothing Then
Dim c As Range
For Each c In Intersect(Target, Me.Range("D4:D21"))
'Check value against what is stored in "oldValue"
'Type mismatch is on this line here
If oldValue(c.Row - 3, 1) <> c.Value Then
'Update value in column L (8 columns to the right of column D)
c.Offset(0, 7).Value = Date 'or possibly "= Now()" if you need the time of day that the cell was updated
End If
Next
End If
End Sub
我不确定类型不匹配错误是什么意思,所以我无法自行解决这个问题。我的问题是,如何在不引发此不匹配错误的情况下正确更新我的单元格?
编辑:请记住,一个工作表正在查找数字数据更改,而另一个工作表正在查找字符串值更改,我不确定这是否重要。如果我取出一个工作表的所有代码,该代码将适用于另一个工作表,但当我把它放回去时,它们都停止工作了。
谢谢。
您可以尝试以下代码:(将其放在 ThisWorkbook
的代码中)
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim ws1 As Worksheet
Set ws1 = ActiveSheet
For Each ws In Worksheets
ws.Activate
ws.Range("A1").Select
Next
ws1.Activate
Application.ScreenUpdating = True
End Sub
一个警告 - Workbook_Open 事件有时是 "problematic",因为它偶尔会在所有 Worksheets
完全加载之前触发。