2016-03-10 73 views
0

我想调用我在另一个子元素中写入的子元素,并向它添加一些新的东西,但使用我在即使在子内调用第一个宏,第一个子程序也不会在第二个子程序中显示。VBA变量定义了一个子元素,并在另一个子元素中调用了多个子元素

例如,我已经将子变量定义为Public,但是我在第一个子集中定义的值,然后在第二个子集中调用的值会丢失。在下面的代码中,运行宏“test”工作,但“test1”给我一个“运行时错误'1004'”。

Public row1 As Integer 
Public col1 As Integer 

Sub test() 

row1 = 2 
col1 = 2 
ActiveSheet.Cells(row1, col1).Select 

End Sub 

Sub test1() 

Call test 

ActiveSheet.Cells(row1, col1).Resize(6, 5).Select 

End Sub 

任何关于如何让row1和col1在test1 sub中工作的指导都很好。有没有更好的方法来实现我想要做的事情?

+0

代码工作对我来说是。我建议将您想要工作的工作表限定为一个变量'Dim ws as Worksheet |设置ws = Sheets(“Sheet1”)'并使用该ws.Cells(row1,col1).Resize(6,5).Select',但因为这可能只是测试代码的问题,它可能不是那么大一个交易。 –

+0

为什么潜艇必须拆分?如果你在另一个子程序中做了一些复杂的事情,你可以通过调用传递变量,然后返回结果。 – Chrismas007

+0

谢谢,斯科特霍尔茨曼,但我不明白 - 不是“ActiveSheet”。照顾呢?另外,你会把“昏暗的ws”声明放在第一个子集,还是两者? – Eric

回答

0

另一种选择是从子传递变量使用公共职能是这样的:

Sub MainSubHere() 
    'Some random code 
    Dim AddMe1 As Long, AddMe2 As Long, MySum As Long 
    AddMe1 = 2 
    AddMe2 = 2 
    MySum = AddMeSub(AddMe1, AddMe2) 
    Msgbox MySum 
End Sub 

Public Function AddMeSub(AddMe1 As Long, AddMe2 As Long) As Long 
    AddMeSub = AddMe1 + AddMe2 
End Sub 
相关问题