Vba 使用“范围”、“单元格”将特定单元格设置为字符串,然后合并并居中?

Vba 使用“范围”、“单元格”将特定单元格设置为字符串,然后合并并居中?,vba,excel,Vba,Excel,我试图将一个特定的单元格设置为我刚才用代码打开的文件的文件名。我所有的工作都正常,除了我不能让单元格值等于工作簿名。调试代码时,我可以看到wb name的变量是正确的字符串。在下面的代码中,当调用此子例程时,wbTempName将作为刚刚打开的工作簿的路径传递,而iTemp只是一个整数,它是在单独的子例程中找到的第一个空列。代码如下: Sub CMM_93Cam(ByVal wbTempName As Workbook, ByVal iTemp As Integer) ' ' CMM_93Cam

我试图将一个特定的单元格设置为我刚才用代码打开的文件的文件名。我所有的工作都正常,除了我不能让单元格值等于工作簿名。调试代码时,我可以看到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
调用此代码时,在RangeCells2,iTemp.Value=sWBName行上出现运行时错误1004:对象“\u Global”的方法“Range”失败

另一个问题是,我不认为我的代码合并和中心指示的细胞是工作我最初有它之前的行,我试图设置细胞值,认为这是造成问题


有人知道我做错了什么吗?

尝试按如下方式修改代码:

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中的单元格,将带有ThisWorkbook.ActiveSheet的行更改为带有wbTempName.ActiveSheet

使用此代码,我得到一个找不到的方法或数据成员错误。将带有ThisWorkbook.ActiveSheets1的行更改为带有ThisWorkbook.WorksheetsSheets1并指定正确的工作表名称是否有方法可以引用活动工作表?在调用此子例程之前,将根据用户窗体中的optionbutton更改活动工作表。是的,使用ThisWorkbook.WorksheetsSheet1更改为使用ThisWorkbook.ActiveSheet