EXCEL中如何用VBA如何实现条件查找

EXCEL中如何用VBA如何实现条件查找,第1张

这个功能如果用VBA做也挺麻烦的,反倒不如建议你用“数据-筛选-高级筛选”功能来实现,去研究一下这个吧,挺方便的。

如果你一定要用VBA做,那在做上面的高级筛选时进行录制宏吧。它录制的语句就是你需要的VBA语句(当然需要小小地改造一下)

1

rstOpen Sql, cnConnectionString

我的数据库语言不是很好,但看了你的代码,也觉得很乱,你的代码至少有好几种方法可以修改,上面是最简单的一种,实际上你的数据库在acappOpenCurrentDatabase的时候已经打开了,接下来根本就不需要再次使用cn进行连接。

所以第二种改法是:

acAppOpenCurrentDatabase (dbPath)

'Dim cn As ADODBConnection '不需要再次连接

'Set cn = acAppCurrentProjectConnection '不需要再次连接

Dim rst As ADODBRecordset

Set rst = New ADODBRecordset

Dim Sql As String

Sql = "Select From 0012X32"

rstOpen Sql, acAppADOConnectString '我只需要在这里调用连接的数据就可以了,而这个连接数据存储在acAppADOConnectString里面。

rstMoveFirst

acAppOpenCurrentDatabase (dbPath)

'Dim cn As ADODBConnection '不需要再次连接

'Set cn = acAppCurrentProjectConnection '不需要再次连接

Dim rst As ADODBRecordset

Set rst = New ADODBRecordset

Dim Sql As String

Sql = "Select From 0012X32"

rstOpen Sql, acAppADOConnectString '我只需要在这里调用连接的数据就可以了,而这个连接数据存储在acAppADOConnectString里面。

rstMoveFirst

下面是RecordSet的OPEN的用法:

Open 方法 (ADO Recordset)

打开游标。

语法

recordsetOpen Source, ActiveConnection, CursorType, LockType, Options

参数

Source 可选。Variant,计算有效的 Command 对象、SQL 语句、表名、存储过程调用、URL 或包含持久存储 Recordset 的文件名或 Stream 对象。

ActiveConnection 可选。Variant,计算有效的 Connection 对象变量名,或包含 ConnectionString 参数的 String。

CursorType 可选。CursorTypeEnum 值,确定在打开 Recordset 时提供者应使用的游标类型。默认值为 adOpenForwardOnly。

LockType 可选。LockTypeEnum 值,确定在打开 Recordset 时提供者应使用的锁定(并发)类型。默认值为 adLockReadOnly。

Options 可选。Long 值,指示提供者计算 Source 参数的方式(如果该参数表示除 Command 对象之外的某些内容),或者指示 Recordset 应该从以前保存过的文件中恢复。可以是一个或多个 CommandTypeEnum 或 ExecuteOptionEnum 值,这些值可以用位 AND *** 作符组合。

注意 如果从包含持久 Recordset 的 Stream 中打开 Recordset,那么使用 adAsyncFetchNonBlocking 的 ExecuteOptionEnum 值将不起作用;提取 *** 作将同步进行并发生阻塞。adExecuteNoRecords 或 adExecuteStream 的 ExecuteOpenEnum 值不应与 Open 一起使用。

Open 方法 (ADO Recordset)

打开游标。

语法

recordsetOpen Source, ActiveConnection, CursorType, LockType, Options

参数

Source 可选。Variant,计算有效的 Command 对象、SQL 语句、表名、存储过程调用、URL 或包含持久存储 Recordset 的文件名或 Stream 对象。

ActiveConnection 可选。Variant,计算有效的 Connection 对象变量名,或包含 ConnectionString 参数的 String。

CursorType 可选。CursorTypeEnum 值,确定在打开 Recordset 时提供者应使用的游标类型。默认值为 adOpenForwardOnly。

LockType 可选。LockTypeEnum 值,确定在打开 Recordset 时提供者应使用的锁定(并发)类型。默认值为 adLockReadOnly。

Options 可选。Long 值,指示提供者计算 Source 参数的方式(如果该参数表示除 Command 对象之外的某些内容),或者指示 Recordset 应该从以前保存过的文件中恢复。可以是一个或多个 CommandTypeEnum 或 ExecuteOptionEnum 值,这些值可以用位 AND *** 作符组合。

在EXCEL 的 代码编辑窗口,使用菜单 工具-引用,勾选

Microsoft ActiveX Data Object 26 Library 或其他版本

这样引用了VB的ADODB对象模型,其他使用办法与VB环境完全一样。

给出报错信息

Private Sub Form_Activate()

Dim conn As New ADODBConnection

Dim cmd As New ADODBCommand

connProvider = "MicrosoftJetOLEDB40"

connOpen basLoginGetFurnaceDBPath, "admin", ""

Set cmdActiveConnection = conn

cmdCommandText = "SELECT FROM Slag_CAL order by DateTime "

rsCursorLocation = adUseClient

rsOpen cmd, , adOpenStatic, adLockOptimistic

If rsRecordCount > 0 Then

blnks = True

rsMoveFirst

Timer1_Timer

End If

End Sub

还有就是不是那个语句写错。是你的连接不成功。问题是在连接执行语句上。

可能是没有user这个表。还有就是游标没有打开。还有就是连接不成功

Set conn = New ADODBConnection

Set rs = New ADODBRecordset

connOpen "Provider=MicrosoftJetOledb40;Persist Security Info = False;extended properties='Excel 80;HDR=YES;IMEX=0';Data Source=“各科成绩表xls"

If connState = adStateOpen Then

sSql = "select from [sheet1$] where 姓名 like '" & str1 & "' and 成绩 like '" & str2 & "'

rsOpen sSql, conn, 1, 1

If rsBOF And rsEOF Then

。。。。。。

首先用VBA控件画好窗体,连接成绩表,再执行相应的 *** 作。。。

以上就是关于EXCEL中如何用VBA如何实现条件查找全部的内容,包括:EXCEL中如何用VBA如何实现条件查找、Excel 请教如何使用VBA通过ADO遍历ACCESS里的所有表格、求助,EXCEL通过VBA *** 作SQL数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9783674.html

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

发表评论

登录后才能评论

评论列表(0条)

保存