VBA 查询逐步进行,但在 运行 时跳过
VBA Query works going step by step but skips when running
我有一个简单的用户表单,允许用户通过选项按钮 select 两个选项之一。 SQL 语句的 WHERE 子句对于两个选项都是不同的。
一旦 select 编辑了正确的选项按钮并按下提交按钮,它将信息复制到活动工作簿中,将所有结果放在一个单元格中(通过设置列的值a 为每一行的所有其他列混合在一起并清空所有其他列的值),然后将其保存为新的 .CSV 文件。
当我 运行 它第一次按计划进行时,另一方面,当我更改 selected 选项按钮时,它仍然使用旧的查询结果而不是新的查询结果在哪里。 (其他一切都相应地工作)。
我尝试 运行通过 F8 键一步一步地安装它,然后就可以了。其中一个结果大约是 120 行,另一个是 50 行。据我所知,它在设置查询的新字符串值和将结果复制到 excel sheet 查看查询本身之间的某处出错了已正确修改,但sheet上的数据保持不变。
If Optionbutton1 = True Then
Value = A
ElseIf optionbutton2= True Then
Value = b
End If
Dim TDMConnection As ADODB.Connection
Dim QueryResult As ADODB.Recordset
Dim QueryField As ADODB.Field
'Variabelen voor het samenvoegen van velden.
Dim Rows As Range, RowNumber As Range
Set TDMConnection = New ADODB.Connection
Set QueryResult = New ADODB.Recordset
TDMConnection.ConnectionString = ConnectionString
TDMConnection.Open
On Error GoTo CloseConnection
Dim QuerySelect As String
QuerySelect = " SELECT XXXX " & _
" FROM XXXX " & _
" WHERE XXXX= " & Value & " "
With QueryResult
.ActiveConnection = TDMConnection
.Source = QuerySelect
.LockType = adLockReadOnly
.CursorType = adOpenForwardOnly
.Open
End With
On Error GoTo closeRecordSet
Sheets("Sheet1").UsedRange.ClearContents
Range("A1").CopyFromRecordset QueryResult
Range("A1", Range("I1").End(xlDown)).Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("I1"), Order2:=xlAscending, Key3:=Range("H1"), Order3:=xlAscending, Header:=xlNo
Set Rows = Range("A1", Range("I1").End(xlDown))
For Each regelnummer In Rows .Rows
Range("A" & RowNumber .Row).Value = Range("A" & RowNumber .Row).Value + ";" + Range("B" & RowNumber .Row).Value + ";" + And so on until I
Range("B" & RowNumber .Row).Value = ""
Range("C" & RowNumber .Row).Value = ""
Range("D" & RowNumber .Row).Value = ""
Range("E" & RowNumber .Row).Value = ""
Range("F" & RowNumber .Row).Value = ""
Range("G" & RowNumber .Row).Value = ""
Range("H" & RowNumber .Row).Value = ""
Range("I" & RowNumber .Row).Value = ""
Next
Range("A1").CurrentRegion.EntireColumn.AutoFit
closeRecordSet:
QueryResult.Close
Set QueryResult = Nothing
CloseConnection:
TDMConnection.Close
ThisWorkbook.Worksheets("Sheet1").Copy
ActiveWorkbook.SaveAs Filename:="C:\temp\" & Value & ".csv", FileFormat:=xlCSVWindows
End Sub
编辑:
似乎活动工作簿更改为新制作的 .CSV 文件,并且在 运行 自动
时不会恢复
似乎当我制作 .CSV 文件时,它将该文件转换为活动工作簿,当 运行 一步一步时,它会自行恢复为真正的活动工作簿,但通常 运行我必须在将数据复制到正确的 sheet 之前添加 Workbooks("WorkbookName.XLSM").Activate
。
我有一个简单的用户表单,允许用户通过选项按钮 select 两个选项之一。 SQL 语句的 WHERE 子句对于两个选项都是不同的。
一旦 select 编辑了正确的选项按钮并按下提交按钮,它将信息复制到活动工作簿中,将所有结果放在一个单元格中(通过设置列的值a 为每一行的所有其他列混合在一起并清空所有其他列的值),然后将其保存为新的 .CSV 文件。
当我 运行 它第一次按计划进行时,另一方面,当我更改 selected 选项按钮时,它仍然使用旧的查询结果而不是新的查询结果在哪里。 (其他一切都相应地工作)。
我尝试 运行通过 F8 键一步一步地安装它,然后就可以了。其中一个结果大约是 120 行,另一个是 50 行。据我所知,它在设置查询的新字符串值和将结果复制到 excel sheet 查看查询本身之间的某处出错了已正确修改,但sheet上的数据保持不变。
If Optionbutton1 = True Then
Value = A
ElseIf optionbutton2= True Then
Value = b
End If
Dim TDMConnection As ADODB.Connection
Dim QueryResult As ADODB.Recordset
Dim QueryField As ADODB.Field
'Variabelen voor het samenvoegen van velden.
Dim Rows As Range, RowNumber As Range
Set TDMConnection = New ADODB.Connection
Set QueryResult = New ADODB.Recordset
TDMConnection.ConnectionString = ConnectionString
TDMConnection.Open
On Error GoTo CloseConnection
Dim QuerySelect As String
QuerySelect = " SELECT XXXX " & _
" FROM XXXX " & _
" WHERE XXXX= " & Value & " "
With QueryResult
.ActiveConnection = TDMConnection
.Source = QuerySelect
.LockType = adLockReadOnly
.CursorType = adOpenForwardOnly
.Open
End With
On Error GoTo closeRecordSet
Sheets("Sheet1").UsedRange.ClearContents
Range("A1").CopyFromRecordset QueryResult
Range("A1", Range("I1").End(xlDown)).Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("I1"), Order2:=xlAscending, Key3:=Range("H1"), Order3:=xlAscending, Header:=xlNo
Set Rows = Range("A1", Range("I1").End(xlDown))
For Each regelnummer In Rows .Rows
Range("A" & RowNumber .Row).Value = Range("A" & RowNumber .Row).Value + ";" + Range("B" & RowNumber .Row).Value + ";" + And so on until I
Range("B" & RowNumber .Row).Value = ""
Range("C" & RowNumber .Row).Value = ""
Range("D" & RowNumber .Row).Value = ""
Range("E" & RowNumber .Row).Value = ""
Range("F" & RowNumber .Row).Value = ""
Range("G" & RowNumber .Row).Value = ""
Range("H" & RowNumber .Row).Value = ""
Range("I" & RowNumber .Row).Value = ""
Next
Range("A1").CurrentRegion.EntireColumn.AutoFit
closeRecordSet:
QueryResult.Close
Set QueryResult = Nothing
CloseConnection:
TDMConnection.Close
ThisWorkbook.Worksheets("Sheet1").Copy
ActiveWorkbook.SaveAs Filename:="C:\temp\" & Value & ".csv", FileFormat:=xlCSVWindows
End Sub
编辑: 似乎活动工作簿更改为新制作的 .CSV 文件,并且在 运行 自动
时不会恢复似乎当我制作 .CSV 文件时,它将该文件转换为活动工作簿,当 运行 一步一步时,它会自行恢复为真正的活动工作簿,但通常 运行我必须在将数据复制到正确的 sheet 之前添加 Workbooks("WorkbookName.XLSM").Activate
。