以前在bas,cls模块级编的程序funcion ,由于程序修改,很多function需要增加同一变量。
改动每个function 太麻烦。想偷懒,好像不可以。如
如在同一模块中
Public s1 As Double'全局变量声明
Dim ss1
Sub mm()
  Dim s2
  Debug.Print
  s1 = 2
  ss1 = "ss1"
  mm1
End Sub
Function mm1()
  Debug.Print s1, ss1  '输出结果为  2 , ss1
  Debug.Print s1 * 6   '输出结果为  12
End Function放在另一模块 bas 或cls
Function mm1()
  Debug.Print s1, ss1  '输出结果无结果
  Debug.Print s1 * 6   '输出结果无结果
End Function
请问各位大侠的问题是跨模块,是不是全局变量不起作用,谢谢.

解决方案 »

  1.   

    Public s1 As Double'全局变量声明 
    public ss1 Sub mm() 
      Dim s2 
      Debug.Print 
      s1 = 2 
      ss1 = "ss1" 
      mm1 
    End Sub 
    '放在另一模块 bas 或cls 
    public Function mm1() 
      Debug.Print s1, ss1  '输出结果无结果 
      Debug.Print s1 * 6  '输出结果无结果 
    End Function 
      

  2.   

    Public s1 As Double'全局变量声明 
    public ss1 Sub mm() 
      Dim s2 
      Debug.Print 
      s1 = 2 
      ss1 = "ss1" 
      mm1 
    End Sub 
    '放在另一模块 bas 或cls 
    public Function mm1() 
      Debug.Print s1, ss1  '输出结果无结果 
      Debug.Print s1 * 6  '输出结果无结果 
    End Function 
      

  3.   

    谢谢各位大侠的回复
    在excel中模块和cls可以用
    但在sheet1的VBA调试程序中不可以用.
      

  4.   

    模块中
    Public s1 As Double'全局变量声明 
    public ss1 public Function mm1() 
      Debug.Print s1, ss1  '输出结果无结果 
      Debug.Print s1 * 6  '输出结果无结果 
    End Function sheet1中
    Sub mm() 
      Dim s2 
      Debug.Print 
      s1 = 2 
      ss1 = "ss1" 
      mm1 
    End Sub 
      

  5.   

    如果你希望所有模块都可以访问到同一变量,那么这个变量必须:
    (1)声明为Public
    (2)放在标准模块里