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