Excel VBA范围公式类似于Sheet2.Range(“ A1”)。value。 例如,您可以引用该地址并更改该单元格中的值。 现在,我正在寻找的是通过使用两个单元格的内容来构建此公式;一个单元格显示“ Sheet2”,另一个单元格显示“ A1”。如何在公式中引用这两个单元格,使其工作方式相同?
我尝试了各种暗淡处理,但最终没有出现错误,但没有达到预期的效果。当前公式仅返回“ Sheet2.Range(“ A1”)。value,而不是其内容。
Sub AddressInCells()
'This is just for one reference. In reailty there is a table of references to loop through.
'For this example cell A1 in Sheet2 = "Text to take to sheet1"
Dim SheetSel As String
Dim CellSel As String
Dim ReferSel As String
With Sheet1
SheetSel = Cells(1, 1).Value
CellSel = Cells(1, 2).Value
ReferSel = SheetSel & ".range(" & Chr(34) & CellSel & Chr(34) & ").value"
MsgBox ReferSel
Sheet1.Range("D1").Value = ReferSel 'Results in "Sheet2.range("A1").value
Sheet1.Range("D2").Value = Sheet2.Range("A1").Value 'Results in Text to take to sheet1'
End With
End Sub
预期结果是该公式以“常规”方式工作。现在,它只是返回一个字符串。
答案 0 :(得分:0)
我相信,相反,您想这样做:
ReferSel = Sheets(SheetSel).range(CellSel).value
答案 1 :(得分:0)
您可以尝试:
Option Explicit
Sub test()
Dim ws As Worksheet
Dim rng As Range
'With statement where the data are store. Change name if needed
With ThisWorkbook.Worksheets("Sheet1")
Set ws = ThisWorkbook.Worksheets(.Range("A1").Value)
Set rng = ws.Range(.Range("A2").Value)
End With
Debug.Print rng.Address
Debug.Print rng.Worksheet.Name
End Sub
答案 2 :(得分:0)
您正在尝试构建遵循以下约定的公式字符串:
'<sheet name>!'<address>
仅在工作表名称包含空格的情况下严格要求单引号,因此这将是一个有效的公式:
=Sheet1!$A$1
但是总是包含它们是一个好习惯,因此,您需要根据这些单元格中的值构建字符串:
' offset the sheet name in single quotes, separate the sheet & address with !
ReferSel = "='" & SheetSel "'!" & CellSel
Sheet1.Range("D1").Formula = ReferSel