第一篇文章,关于VBA的非常新手。我解决了我的问题,但是从此类高级论坛和网站上的示例中复制/粘贴:-)
这是我的问题:
当前工作表为CAPA,并且单元格D2具有一个值(例如181)。
单元格D2上的值为181,它也是我已经创建的另一个工作表的名称。
在我的VBA代码上,在工作表CAPA上,我希望宏在单元格B12上写此公式:
='181'!B9
我希望它从单元格D2的值中提取181
我已经尝试过了:
Dim MySheet As String, ws As Worksheet
MySheet = Sheets("CAPA").Range("D2").Value
Set ws = Sheets(MySheet)
然后
Range("B12").Select
ActiveCell.FormulaR1C1 = "='ws'!B9"
但是,相反,它打开了一个对话框来指向包含ws参考的文件。
对此深表谢意。
预先感谢, 瓦斯科。
答案 0 :(得分:0)
根据您的情况,您无需设置工作表。只需要将工作表名称传递给公式即可。尝试关注以下内容。
Sub Button1_Click()
Dim MySheet As String
MySheet = Sheets("CAPA").Range("B2").Value
Range("B12").Formula = "='" & MySheet & "'!B9"
End Sub
答案 1 :(得分:0)
尝试在vba中给出所有名称,我发现这更容易理解。当您习惯了单元格引用(行,列)时,也可以更轻松地使用它。下面的代码应该工作:
Option Explicit
Sub hh()
'declare workbook
Dim bk As Workbook
'give capa and the workshhet you want use names
Dim capa As Worksheet
Dim cellSheet As Worksheet
Dim MySheet As String
'set the woorkbook
Set bk = ThisWorkbook
'set capa
Set capa = bk.Worksheets("CAPA")
'set the myString variable to b2 (same as row 2, column 2)
MySheet = capa.Cells(2, 2) 'b2
'set the sheet as the value of the string
Set cellSheet = bk.Worksheets(MySheet)
'with the sheets set values are easily exchanged:
capa.Cells(12, 2) = cellSheet.Cells(9, 2)
End Sub