Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 我与<;对象的方法范围\u全局失败>;错误_Excel_Vba - Fatal编程技术网

Excel 我与<;对象的方法范围\u全局失败>;错误

Excel 我与<;对象的方法范围\u全局失败>;错误,excel,vba,Excel,Vba,我是Excel VBA新手,我正在从事一个打印报告的项目。 运行此excel VBA代码时出现错误。错误出现在“Columnoffset”行 感谢您的帮助。谢谢 Workbooks(MainWbName).Worksheets("DATA").Activate rowoffset = DataRow - 1 ' Activate WORKBOOK Workbooks(MainWbName).Activate Dim ColumnRangeName As String Dim ColumnD

我是Excel VBA新手,我正在从事一个打印报告的项目。 运行此excel VBA代码时出现错误。错误出现在“Columnoffset”行 感谢您的帮助。谢谢

Workbooks(MainWbName).Worksheets("DATA").Activate

rowoffset = DataRow - 1

' Activate WORKBOOK
Workbooks(MainWbName).Activate

Dim ColumnRangeName As String
Dim ColumnDefRange As Object
tabletouse = "ColumnDefinitions"
Sheettouse = "ColumnDefs"
Set ColumnDefRange = Worksheets(Sheettouse).Range(tabletouse)

If FieldTitle = " " Then Exit For

ColumnRangeName = WorksheetFunction.VLookup(FieldTitle, ColumnDefRange, 2, False)   

Columnoffset = Range(ColumnRangeName).Value   ' <-- Error

Workbooks(CSVFileName).Activate
工作簿(MainWbName).工作表(“数据”).激活
rowoffset=数据行-1
'激活工作簿
工作簿(MainWbName)。激活
Dim ColumnRangeName作为字符串
Dim ColumnDefRange作为对象
tabletouse=“ColumnDefinitions”
Sheettouse=“ColumnDefs”
设置ColumnDefRange=工作表(Sheettouse).范围(tabletouse)
如果FieldTitle=“”,则退出
ColumnRangeName=WorksheetFunction.VLookup(FieldTitle,ColumnDefRange,2,False)

Columnoffset=Range(ColumnRangeName).Value'无论何时使用
VLookup
,如果找不到查找文本,最好处理错误

'
'~~> Rest of your code
'

Dim errorNumber As Long

On Error Resume Next
ColumnRangeName = WorksheetFunction.VLookup(FieldTitle, ColumnDefRange, 2, False)
errorNumber = Err.Number
On Error GoTo 0

If errorNumber <> 0 Then
    MsgBox FieldTitle & " not found"
Else
    Columnoffset = Range(ColumnRangeName).Value

    '
    '~~> Rest of your code
    '
End If
'
“~~>其余的代码
'
数字越长越好
出错时继续下一步
ColumnRangeName=WorksheetFunction.VLookup(FieldTitle,ColumnDefRange,2,False)
errorNumber=错误编号
错误转到0
如果错误号为0,则
MsgBox FieldTitle&“未找到”
其他的
Columnoffset=范围(ColumnRangeName).Value
'
“~~>其余的代码
'
如果结束

提示:同时避免使用
。激活
。发生错误时,您可能想查看什么是
ColumnRangeName
?您好,ColumnRangeName是“B1InletO2”,我正在查找它,但问题是获取Columnoffset=Range(ColumnRangeName)的值。值是一个命名范围吗?否,它是一个变量名。但是Columnoffset的值返回为空。我不知道为什么?您能帮助我吗?您的问题不清楚:
“B1InletO2”
在您的工作簿中是一个命名范围吗?如果不是,则无法执行
Range(“B1InletO2”)
…即使在错误处理后仍指向Columnoffset=Range(ColumnRangeName)。值则表示
ColumnRangeName
的值未解析为范围地址。如果您觉得名称正确,请检查前导空格或尾随空格。可能是
范围(Trim(ColumnRangeName))。值
返回空值。你知道为什么吗?
FieldTitle