我正在修改一个程序,但是我得到了一个我无法解决的错误。
错误是1004
码:
Source_1_Criteria = "Factuur"
Source_1_Name = Range("MDM_MDM_Tool_List").Find(what:=Source_1_Criteria).Offset(0, 2).Value
Source_1_Area = Range("MDM_MDM_Tool_List").Find(what:=Source_1_Criteria).Offset(0, 4).Value
ActiveWorkbook.Names.Add Name:=Source_1_Name, RefersTo:=Source_1_Area
最后一行给出了错误。我知道它在3行中的东西。 3行中的结果导致单元中当前内容的错误
=VERSCHUIVING(archief!$A$2;0;0;1;AANTALARG(archief!$A$2:archief!$Y$2))
当我将内容更改为=archief!$A$2
时,代码可以正常工作。但是当我手动将公式复制/粘贴到命名区域时,它可以工作....
所以我的计算:公式=工作代码=工作
那两个在一起
错误1004
你应该用=VERSCHUIVING(archief!$A$2;0;0;1;AANTALARG(archief!$A$2:archief!$Y$2))
代替的公式应该是这样的: -
= ADDRESS(2; 1 ;;;“存档”)&“:”和ADDRESS(2; NUMBER(存档!$ A $ 2:$ Y $ 2))
下面是我彻底测试的代码。它适用于我昨天提供的公式(上图)。您可以使用编辑/替换在以下代码中恢复原始变量名称。
Option Explicit
Private Sub Dutch()
' 05 Jan 2018
Dim Wb As Workbook
Dim Ws As Worksheet
Dim SrcCrit As String
Dim SrcName As Variant
Dim SrcArea As String
Dim Sp() As String
Dim Rng As Range
Set Wb = ActiveWorkbook ' could be ThisWorkbook
Set Ws = ActiveSheet ' could be another sheet
SrcCrit = "Factuur"
Set Rng = Ws.Range("ToolList").Find(What:=SrcCrit)
If Not Rng Is Nothing Then
SrcName = Rng.Offset(0, 2).Value
' Debug.Print SrcName
SrcArea = Rng.Offset(0, 4).Value
' Debug.Print SrcArea
Sp = Split(SrcArea, "!")
If UBound(Sp) Then
If Left(Sp(0), 1) = "'" Then Sp(0) = Mid(Sp(0), 2)
If Right(Sp(0), 1) = "'" Then Sp(0) = Left(Sp(0), Len(Sp(0)) - 1)
Else
Sp = Split(Ws.Name & "|" & Sp(0), "|")
End If
Set Rng = Wb.Worksheets(Sp(0)).Range(Sp(1))
' Debug.Print Rng.Worksheet.Name, Rng.Address
On Error Resume Next
Wb.Names(SrcName).Delete
On Error GoTo 0
Wb.Names.Add Name:=SrcName, RefersTo:=Rng
' With Wb.Names(SrcName)
' Debug.Print .Name, .RefersTo
' End With
End If
End Sub
我发现错误1004在上面的上下文中有点复杂,因为当工作簿中存在错误的名称时会发生这样的错误,例如可能是由原始代码创建的。在这种情况下,错误表示工作簿中存在无法识别的元素,这可能与您要测试运行的代码完全无关。这种性质的1004错误通常是由兼容性问题引起的,甚至与名称无关。谷歌为_xlfn IERROR
在开发上面的代码时我遇到了持续的1004错误,因为我已经将找到的范围中的偏移命名为“first”到“4th”,它将“second”分配给新的命名范围。 Wb.Names("Second").Name
正确地返回“第二”但Wb.Names(ScrName).Name
三角错误1004 - 只是你的投诉。当我发现SECOND()
是一个工作表函数并更改了偏移单元格中的名称时,错误就消失了。