使用Range,Cells,将特定单元格设置为字符串,然后合并并居中?

时间:2014-01-27 14:27:01

标签: excel vba excel-vba

我正在尝试将特定单元格设置为我刚刚使用我的代码打开的文件的文件名。我有一切正常工作,除了我不能让单元格值等于工作簿名称。在调试我的代码时,我可以看到我的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'的方法'范围'失败”。

另一个问题是,我不认为我的代码合并并使指定的单元中心工作(我最初在我试图设置单元格值的行之前有它,认为它导致了问题)。

有谁知道我做错了什么?

1 个答案:

答案 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