在excel2010 VBA找不到预定义的Ado对象

在excel2010 VBA找不到预定义的Ado对象,第1张

1楼的根本就不懂, 在网上复制过来的

有2中方法

方法1:  在VBE 窗口    工具---引用

MICROSOFT ACTIVEX DATA OBJECTS 61

然后定义 变量类型 Dim Stm As New ADODBStream

你的程序的定义 也写错了

法法2:创建对象

这个无需添加引用

Set stm = CreateObject("AdodbStream")

用控件数组,就只要一个事件了

Private Sub Text1_Change(Index As Integer)

If IsNumeric(Text1(Index)Text) = False And Text1(Index)Text <> "" Then

MsgBox "请输入数值"

Text1(Index)SetFocus

End If

End Sub

或者用这个事件:

Private Sub Text1_LostFocus(Index As Integer)

If IsNumeric(Text1(Index)Text) = False And Text1(Index)Text <> "" Then

MsgBox "请输入数值"

Text1(Index)SetFocus

End If

End Sub

也可以直接控制输入的字符就是数值,用这个事件

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)

str1 = "0123456789-"

If KeyAscii = 8 Then Exit Sub

If InStr(str1, Chr(KeyAscii)) = 0 Then KeyAscii = 0

End Sub

尝试用一下vba的 Event事件机制

工作簿的 Workbook_SheetActivate(ByVal Sh As Object)

支持切换工作表时触发

在里面获取所有工作表的引用,然后循环调用所有工作表的vba声明的固定函数名或sub名就可以了,带一个target参数,传入参数即可

再看了一下问题,题主的意思应该是想在切换工作表后,之前的工作表做一些收尾工作,同样是用Workbook_SheetActivate事件,设置一个变量,激活事件时检测变量是否为空,不为空则调用变量对应的工作表,执行收尾工作,然后再把激活后的工作表引用赋值给该变量,循环过程。

明显的这两句有问题

Set LotID = Right(AKSheets(1)[A1]Value, 10)

Set GlassID = Right(AKSheets(1)[A2]Value, 1)

Right函数是返回字符数据类型的,Set 语句是将对象引用赋给变量或属性。这样字符数据类型怎么能当对象引用来用呢,所以会出错。 改正就是把这两句的Set删掉

以上就是关于在excel2010 VBA找不到预定义的Ado对象全部的内容,包括:在excel2010 VBA找不到预定义的Ado对象、请教高手:vba 如何选择当前选择的控件(对象)、vba,当前工作薄写入代码。如何获取切换工作簿后Workbook_SheetSelectionChange中的Target对象。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9732771.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存