【发布时间】:2018-11-06 13:14:00
【问题描述】:
我有一个工作簿,我想在第一个工作表 (B1) 中引用一个范围,以便在第二个工作表 (B3) 的单元格中输入公式。我的问题是第一个工作表的名称总是会改变,所以我想解决这个问题,我会根据公式可以使用的单元格引用创建一个变量。这是我目前所拥有的:
Sub GetCellAddress()
Dim Cell As Range
Dim CellAddress As String
Set Cell = ActiveWorkbook.Worksheets(1).Cells(1, 2)
CellAddress = Cell.Parent.Name & "!" & Cell.Address(External:=False)
With ActiveSheet
Range("B3").Select
ActiveCell.Formula = _
"=CONCATENATE(""Balance Sheet"","" - "",MID(CellAddress,FIND("" "",CellAddress,FIND("","",CellAddress)+2)+1,256))"
End With
'MsgBox CellAddress
End Sub
虽然 MsgBox 将确认我拥有的 CellAddress 是 Sheet1!$B1$1 我似乎无法通过仅使用 CellAddress 在公式中传递此引用,因为我得到了#NAME?使用时出错。 如果我使用 Sheet1!R[-2]C 作为 ActiveCell.FormulaR1C1 语法,它可以正常工作,但正如我之前解释的那样,我希望代码解析工作表名称。要么我的语法错误,要么我的方法可能是在另一张表中引用范围的不正确方式。谁能告诉我哪里出错了。
【问题讨论】:
-
我从未在外部或其他单元格地址中看到逗号(例如
,)。 -
这是该单元格中带有逗号的字符串,即我正在获取日期的截至 2018 年 5 月 25 日星期五打印的最佳胡珀财务管理报告。
-
如果使用'ActiveCell.FormulaR1C1 = _ "=CONCATENATE(""资产负债表"","" - "",MID(Sheet1!R[-2]C,FIND("" " ",Sheet1!R[-2]C,FIND("","",Sheet1!R[-2]C)+2)+1,256))"' 工作正常。
标签: excel excel-formula vba