我对VBA比较陌生,我制作了一个一直在我的计算机上运行的宏,但是当我把它发送给其他人时,它就出错了:
If WorksheetFunction.Concat(ActiveSheet.Range("a2:n2").Value) <> "UnitOper UnitDeptProjectDateLine DescrAmountAccountProductJournal IDLine #RefStatusAffiliate" Then
我将在下面包含整个宏,但我尝试使用getopenfilename打开文件,并确保该文件具有正确的内容。即使我将宏发送给使用excel 2016的人,它仍然无法正常工作并出错。
我尝试了一些新功能,现在它在同一行上说类型不匹配。
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim myFileName As Variant
Dim sWorkbook, i As String
Dim Macrotool As String
Dim Countlines As Long
Macrotool = ActiveWorkbook.Name
myFileName = Application.GetOpenFilename
If myFileName <> False Then
Workbooks.Open (myFileName)
sWorkbook = ActiveWorkbook.Name
ActiveSheet.Range("O2") = "=concat(a2:n2)"
If ActiveSheet.Range("o2").Value <> "UnitOper UnitDeptProjectDateLine DescrAmountAccountProductJournal IDLine #RefStatusAffiliate" Then
Workbooks(sWorkbook).Close False
i = MsgBox("It looks like you are uploading the wrong file." & vbLf & "Please make sure you are using one of the following queries:" & vbLf & "" & vbLf & "'ACCOUNT_ACTIVITY_ANY_CF'" & vbLf & "'ACCOUNT_ACTIVITY_BU'" & vbLf & "'ACCOUNT_ACTIVITY_BU_OP'" & vbLf & "'ACCOUNT_ACTIVITY_BU_OP_DEP'" & vbLf & "'ACCOUNT_ACTIVITY_BU_OP_DEP_PRJ'", vbOKOnly, "Wrong Filed Used")
Application.ScreenUpdating = True
Workbooks(Macrotool).Activate
Sheets("Home").Select
GoTo OnError
End If
答案 0 :(得分:1)
您使用的是2016年的精美Excel版本,而“其他”使用Excel 2013或更低版本?因此,他们没有WorksheetFunction.Concat
,他们得到错误438。
那个告诉你他们正在使用Excel 2016
并且仍然收到错误的人要么不确定他们正在使用哪个版本,要么在其他地方收到错误。
最糟糕的情况 - 转到那些使用Excel 2016的人,并确保他们拥有完全相同的工作表,并在该行上具有完全相同的错误。确保您也检查ActiveSheet
名称。