我是新来的。
我尝试在函数中使用已定义名称的值。下面的代码没有抛出错误,但它显示我的变量不包含值,而是表达式,如图所示。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim segunda As String
segunda = ActiveWorkbook.Names("Week5_FirstDay").RefersTo
MsgBox segunda
End Sub
字符串
的数据
我试图将segunda定义为一个range对象,结果抛出了下面的错误。考虑到Week5_FirstDay是如何定义的,我认为这是有道理的。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim segunda As Range
segunda = ActiveWorkbook.Names("Week5_FirstDay").RefersToRange
MsgBox segunda.Value
End Sub
型
的
我也尝试使用Evaluate函数,但没有成功。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim segunda As String
segunda = ActiveWorkbook.Names("Week5_FirstDay").RefersTo
MsgBox Evaluate(segunda)
End Sub
型
的
我也读过Eval方法,但Excel不承认它。
这就是我在工作簿中定义名称的方式。
以下是名称Week1_FirstDay的计算方法:
DATE(ano;MONTH(DATEVALUE(mes&"1"));8-WEEKDAY(DATE(ano;MONTH(DATEVALUE(mes&"1"));1);12))
型
Ano和Mes对应于在两个单元格中定义的年和月。
1条答案
按热度按时间nfeuvbwi1#
RefersTo
返回一个字符串,Evaluate
可以很好地处理它RefersToRange
返回一个范围对象,如果它是可用的。如果你试图使用ActiveWorkbook.Names("Week5_FirstDay").RefersToRange
,它会引发错误1004,因为它是一个公式而不是一个范围。字符串
输出
型
的数据
复制OP的公式和定义的名称,
Evaluate
工作良好的