1
我试图理解为什么我得到类型不匹配错误:类型不匹配VBA检查单元格的值
这是我具备的功能,基本上它是从一个工作表复制到另一个事后删除复制的第一个字符cells:
Sub copyBackFormulas()
Application.ScreenUpdating = False
Application.EnableEvents = False
'iterate through all worksheets
Dim WS_Count As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
Dim I As Integer
For I = 1 To WS_Count
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Worksheets(I)
'if sheet contains evdre
Set d = ws1.Cells.Find("EVDRE:OK")
If Not d Is Nothing Then
'copy back all formulas except from current view
Dim wsTarget As Worksheet
Set wsTarget = ws1
nameHidden = ActiveSheet.Name & "_BPCOffline"
Sheets(nameHidden).Visible = True
Dim wsSource As Worksheet
Set wsSource = Sheets(nameHidden)
For Each c In wsSource.UsedRange.Cells
If Left(c.Value, 1) = "_" Then
If Left(c.Value, 7) = "_=EVCVW" Then
Else
c.Copy wsTarget.Range(c.Address)
End If
End If
Next
'Remove underscore
For Each c In wsTarget.UsedRange.Cells
If Left(c.Value, 1) = "_" Then
c.Formula = Right(c.Value, Len(c.Value) - 1)
End If
Next
wsSource.Visible = xlSheetHidden
End If
Range("A1").Select
Next I
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
我有几张表可能需要复制。问题是,我得到了类型不匹配错误:If Left(c.Value, 1) = "_" Then
但是,如果我从其他工作表开始运行宏,它可以完美工作,或者只在其中一个工作表上执行正确的操作,而不是在其他工作表上执行正确的操作。 我不明白是什么让它在某个点上工作,什么不是。 任何输入的高度赞赏
编辑:我认为这个问题是与事实是,宏可能无法找到的第一个条件If Left(c.Value, 1) = "_" Then
正在评估的单元格中,这些单元格的格式如何?如果它们被格式化为数字,它当然找不到“_” – Luuklag
也可以使用:IF NOT ...然后 – Luuklag
这些单元格的内容就像这样:'_ = EVCVW($ G $ 2,F3)',它们被格式化为一般;正如我所说,它有时有时,有时不工作,所有的工作表都格式相同 – user3540466