Excel 如何通过vba引用单元格
我只是写了一些代码,从一个工作簿,工作表中提取值,然后粘贴到另一个工作簿,工作表中。当前它作为值粘贴。 以下是我的代码的一些部分:Excel 如何通过vba引用单元格,excel,vba,reference,Excel,Vba,Reference,我只是写了一些代码,从一个工作簿,工作表中提取值,然后粘贴到另一个工作簿,工作表中。当前它作为值粘贴。 以下是我的代码的一些部分: Do Until Cells(i, 9) = "Net Income" If Cells(i, 9) = "BONDS INTEREST EARNED" Then Bonds_IE = Cells(i + 1, 9) 然后激活另一本书 Cells(j - 5, 4) = Bonds_IE 我想让它显示为它从哪里获取信息的参考。 例如:K:\etc\et
Do Until Cells(i, 9) = "Net Income"
If Cells(i, 9) = "BONDS INTEREST EARNED" Then
Bonds_IE = Cells(i + 1, 9)
然后激活另一本书
Cells(j - 5, 4) = Bonds_IE
我想让它显示为它从哪里获取信息的参考。
例如:K:\etc\etc\etc[etc.xlsx]etc$A一美元
我觉得这应该非常简单,但我不确定。。
请帮助:(
谢谢!!您只需要引用单元格的
.Formula
,而不是默认值.Value
Do Until Cells(i, 9) = "Net Income"
If Cells(i, 9) = "BONDS INTEREST EARNED" Then
Bonds_IE = Cells(i + 1, 9).Formula
Cells(j - 5, 4).Formula = Bonds_IE
您只需要引用单元格的
.Formula
,而不是默认值.Value
Do Until Cells(i, 9) = "Net Income"
If Cells(i, 9) = "BONDS INTEREST EARNED" Then
Bonds_IE = Cells(i + 1, 9).Formula
Cells(j - 5, 4).Formula = Bonds_IE
VBA代码隐式地做了很多事情。如果我们将所有事情都显式化,问题就会变得更清楚:
Do Until CStr(ActiveSheet.Cells(i, 9).Value) = "Net Income"
If CStr(ActiveSheet.Cells(i, 9).Value) = "BONDS INTEREST EARNED" Then
Bonds_IE = CStr(ActiveSheet.Cells(i + 1, 9).Value)
注:
- 隐式字符串转换,通过CStr显式进行。如果单元格包含错误值,这些转换将导致类型不匹配错误。在使用该值执行任何操作之前,您可能需要验证
是否返回给定单元格值的iError
False
- 隐式
引用。如果对不引用活动工作表的限定ActiveSheet
调用使用这些引用,则会出现运行时错误1004,例如:Range
Sheet12.Range(Cells(i, 1), Cells(i + 1, 1)) = 42 'Sheet12 isn't active
- 隐式默认成员调用。
返回一个单元格
对象;其默认成员指向其范围
。这就是为什么您可以执行值
,并且仍然具有可编译代码的原因。显式成员调用有助于更好地了解阅读代码时的实际情况单元格(j-5,4)=foo
,
Range.Value
获取/设置范围的值。您需要的是它的。公式
VBA代码隐式执行许多操作。如果我们将所有内容都显式化,问题就会变得更清楚:
Do Until CStr(ActiveSheet.Cells(i, 9).Value) = "Net Income"
If CStr(ActiveSheet.Cells(i, 9).Value) = "BONDS INTEREST EARNED" Then
Bonds_IE = CStr(ActiveSheet.Cells(i + 1, 9).Value)
注:
- 隐式字符串转换,通过CStr显式进行。如果单元格包含错误值,这些转换将导致类型不匹配错误。在使用该值执行任何操作之前,您可能需要验证
是否返回给定单元格值的iError
False
- 隐式
引用。如果对不引用活动工作表的限定ActiveSheet
调用使用这些引用,则会出现运行时错误1004,例如:Range
Sheet12.Range(Cells(i, 1), Cells(i + 1, 1)) = 42 'Sheet12 isn't active
- 隐式默认成员调用。
返回一个单元格
对象;其默认成员指向其范围
。这就是为什么您可以执行值
,并且仍然具有可编译代码的原因。显式成员调用有助于更好地了解阅读代码时的实际情况单元格(j-5,4)=foo
,
Range.Value
获取/设置范围的值。您需要的是它的。公式
尝试使用源单元格的地址
创建一个公式
:
Dim Bonds_IE As String
Do Until Cells(i, 9) = "Net Income"
If Cells(i, 9) = "BONDS INTEREST EARNED" Then
Bonds_IE = "=" & Cells(i + 1, 9).Address(RowAbsolute:=True, _
ColumnAbsolute:=True, _
External:=True)
'...
'...
Cells(j - 5, 4).Formula = Bonds_IE
不过有一个技巧…
地址(外部:=True)
将不包括原始工作簿的路径,因此在关闭原始工作簿之前,需要将生成的字符串作为公式应用到另一个单元格。这样,当原始工作簿关闭时,Excel将自动更新公式以包括路径。尝试使用源单元格的地址
创建公式
:
Dim Bonds_IE As String
Do Until Cells(i, 9) = "Net Income"
If Cells(i, 9) = "BONDS INTEREST EARNED" Then
Bonds_IE = "=" & Cells(i + 1, 9).Address(RowAbsolute:=True, _
ColumnAbsolute:=True, _
External:=True)
'...
'...
Cells(j - 5, 4).Formula = Bonds_IE
不过有一个技巧…地址(外部:=True)
将不包括原始工作簿的路径,因此在关闭原始工作簿之前,需要将生成的字符串作为公式应用到另一个单元格。这样,当原始工作簿关闭时,Excel将自动更新公式以包括路径。单元格
像这样使用,隐式地指代活动表
是什么。在遇到其他问题之前,先用工作表
对象实例对其进行限定。单元格
像这样使用,隐式地指代活动表
是什么。在y之前用工作表
对象实例对其进行限定你遇到了其他问题。我尝试更改为。公式现在发生的是,而不是引用单元格,如=“[210303 to 2017 Yearend NEW.xlsm]210303 2017”!$I$199这是我想要的,它现在拉=A1*I199这是该单元格中的公式对不起,你要找的不太清楚(乘法运算从哪里来?你的帖子里没有)..Formula
获取/设置一个字符串,该字符串表示用于计算范围的.Value
的公式。您需要构建该字符串以使其成为所需的任何公式。或者您的意思是使一个单元格的值成为另一个单元格的公式吗?我有两个单元格。单元格A1和单元格B1位于两个不同的工作簿中。我想t单元格A1将是“=CellB1”。我只想将单元格A引用到单元格B。单元格B将在该工作表中有自己的计算。感谢您的帮助!然后您想使用=
后跟CellB1的Parent.Parent.FullName
(工作簿路径)“构建”单元格A1的公式
字符串用方括号括起来,后面是父项。名称(工作表的名称)用单引号括起来,后面是感叹号,后面是CellB1的地址^^^,但使用起来更简单地址(外部:=True)
我尝试将其更改为公式。现在发生的情况是,不再引用单元格,例如:[210303 to 2017 Yearend NEW.xlsm]210303 2017'!$I$199这是我想要的,现在它拉着=A1*I199,这是那个单元格中的一个公式对不起,你要找的东西不太清楚(乘法从哪里来?你的帖子里什么都没有)。.formula
获取/设置一个表示u的公式的字符串