我正在尝试将特定单元格设置为我刚刚使用我的代码打开的文件的文件名。我有一切正常工作,除了我不能让单元格值等于工作簿名称。在调试我的代码时,我可以看到我的wb name变量是正确的字符串。在下面的代码中,当调用这个子例程时,wbTempName作为刚刚打开的工作簿的路径传递(我认为),而iTemp只是一个整数,它是第一个空列(在单独的子例程中找到)。这是代码:
Sub CMM_93Cam(ByVal wbTempName As Workbook, ByVal iTemp As Integer)
'
' CMM_93Cam Macro
'
'Set necessary variables
sColumnTwo = ConvertToLetter(iTemp + 2)
'Paste filename into sheet
wbTempName.Activate
sWBName = ActiveWorkbook.Name
Range(Cells(2, iTemp)).Value = sWBName
Range(Cells(2, iTemp), Cells(2, iTemp + 2)).Select
Selection.Merge
'Code that works
End Sub
当我调用此代码时,我在“Range(Cells(2,iTemp))上得到运行时错误1004.Value = sWBName”line:“对象'_Global'的方法'范围'失败”。
另一个问题是,我不认为我的代码合并并使指定的单元中心工作(我最初在我试图设置单元格值的行之前有它,认为它导致了问题)。
有谁知道我做错了什么?
答案 0 :(得分:0)
尝试按如下方式修改代码:
Sub CMM_93Cam(ByVal wbTempName As Workbook, ByVal iTemp As Integer)
Application.DisplayAlerts = False
'Set necessary variables
sColumnTwo = ConvertToLetter(iTemp + 2)
'Paste filename into sheet
sWBName = wbTempName.Name
With ThisWorkbook.ActiveSheet
.Cells(2, iTemp).Value = sWBName
.Range(.Cells(2, iTemp), .Cells(2, iTemp + 2)).Merge
End With
'Code that works
Application.DisplayAlerts = True
End Sub
注意,此宏将工作簿名称粘贴到正在运行当前宏代码的工作簿中的单元格。如果要将工作簿名称粘贴到工作簿wbTempName
中的单元格,请将行With ThisWorkbook.ActiveSheet
更改为With wbTempName.ActiveSheet