使用变量';在VBA中将值从一个子系统转换为另一个子系统
请注意,我正在尝试使用一个变量的值从一个子到另一个子,但不幸的是,我没有得到它。请遵循以下代码:使用变量';在VBA中将值从一个子系统转换为另一个子系统,vba,excel,Vba,Excel,请注意,我正在尝试使用一个变量的值从一个子到另一个子,但不幸的是,我没有得到它。请遵循以下代码: Sub get_value() Dim area2 As Range Set area2 = Range(Cells(8, 2), Cells(linha, 2)) f = area2.Count s = x - f End Sub Sub get_value_s() Worksheets(2).Activate Range("A3").Sele
Sub get_value()
Dim area2 As Range
Set area2 = Range(Cells(8, 2), Cells(linha, 2))
f = area2.Count
s = x - f
End Sub
Sub get_value_s()
Worksheets(2).Activate
Range("A3").Select
Selection.End(xlDown).Select
linha = Selection.Row
linha2 = linha + s
Rows(linha2).Select
Selection.Insert Shift:=xlDown
End Sub
另外,我已经将S设置为全局整数。(公共s为整数)
非常感谢 如果没有更多的代码,就很难知道错误是什么,因为您还有其他几个全局变量,我们无法看到它们是如何设置的。我的猜测是,在调用变量之前,您没有设置变量。例如,您是否确定在调用
get\u value()
之前调用了get\u value()
,并且x
&linha
在调用时是正确的值
我建议不要使用Globals,除非你真的有。我只能将您的代码压缩到一个全局(x
),这是因为我不知道这是从哪里来的
请尝试以下方法:
Public x As Integer
Function get_value(linha As Integer, wks As Worksheet)
Dim area2 As Range
Set area2 = wks.Range(Cells(8, 2), Cells(linha, 2))
Dim f As Long
f = area2.Count
get_value = x - f
End Function
Sub get_value_s()
Dim wks As Worksheet
Set wks = Worksheets(2)
Dim linha As Integer, linha2 As Integer
linha = wks.Range("A3").End(xlDown).Row
linha2 = linha + get_value(linha, wks)
wks.Rows(linha2).Insert Shift:=xlDown
End Sub
并确保在调用
获取值之前设置了X
就像波特兰跑步者建议的那样,你可以这样做
Function get_value()
Dim area2 As Range
Set area2 = Range(Cells(8, 2), Cells(linha, 2))
f = area2.Count
get_value = x - f
End Function
Sub get_value_s()
Worksheets(2).Activate
Range("A3").Select
Selection.End(xlDown).Select
linha = Selection.Row
linha2 = linha + get_value()
Rows(linha2).Select
Selection.Insert Shift:=xlDown
End Sub
请注意,我重构了您的代码以避免激活&选择see了解更多有关原因的信息。