为什么定义public变量从一个过程到另一个过程就失效?

zl13 2004-11-27 11:28:11
Public theText As Variant
Public theValue As Variant
Dim Conn As Object
Dim Rs As Object
Const cnConnStr = "DSN=LocalServer;uid=sa;pwd=19821113;Database=pubs"
Const adCmdText = 1
Const RecordsAffected = 60

Private Sub clean_Click()

End Sub

Private Sub execute_Click()

End Sub

Private Sub regtype_Change()
Stop

Dim index As Integer
MsgBox regtype.ListIndex + 1
index = regtype.ListIndex + 1
theValue (index)
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set Conn = CreateObject("Adodb.Connection")
Conn.Open cnConnStr
CommandText = "Select * from authors"
Set Rs = Conn.execute(CommandText, RecordsAffected, adCmdText)
RowNum = 2
Stop
If ListIndex <> "" Or ListIndex <> 0 Then
MsgBox theValue(ListIndex)
Else
If Not Rs.EOF Then
While Not Rs.EOF
For Colnum = 0 To Rs.Fields.Count - 1
ActiveSheet.Cells(RowNum, 2) = Rs("au_lname").Value
theText = Rs("au_fname")
theValue = Rs("au_id")
regtype.AddItem Rs("au_lname")
Next
Rs.MoveNext
RowNum = RowNum + 1
Wend
End If
End If
End Sub

theValue和theText只要出了Worksheet_SelectionChange就会对象无效,各位高手又什么好办法么

...全文
120 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
starsoulxp 2004-12-01
写在模块里吧
回复
行云边 2004-12-01
要不也可以 在模块内 写:
Global theText As Variant
Global theValue As Variant
回复
flyingZFX 2004-12-01
把 Public 写在模块中。
回复
行云边 2004-11-30
Public theText As String
Public theValue As String

或者

Static theText As Variant
Static theValue As Variant
回复
行云边 2004-11-30
楼主的生日是 1982年11月13日?
回复
saiko 2004-11-30
看到你的

theText = Rs("au_fname")
theValue = Rs("au_id")

你的字段是什么类型呀?
在定义时最好定义的和你的字段的类型一致啊!!!!!!!

回复
lazygod 2004-11-28
不定义为Variant,指明其数据类型又会如何?
回复
zl13 2004-11-27
以上就是源程序,就是在同一个窗口下
回复
lxcc 2004-11-27
MsgBox theValue(ListIndex)

//theValue是数组吗?

同时要保证Worksheet_SelectionChange与theValue等在同一窗体代码内,除非在模块內定义
回复
aohan 2004-11-27
你是不是在不同的窗口或模块中有这样的定义,不然应该不会的
回复
发动态
发帖子
VBA
创建于2007-09-28

2035

社区成员

VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
申请成为版主
社区公告
暂无公告