我有一个简单的用户窗体,允许用户通过选项按钮选择两个选项之一。这两个选项的SQL语句的WHERE子句不同。
选择正确的选项按钮并按下提交按钮后,它将信息复制到活动工作簿中,将所有结果放在单个单元格中(通过将a列的值设置为all的值)其他列合并在一起,然后为每行清空所有其他列),然后将其另存为新的.CSV文件。
当我第一次按计划运行它时,另一方面,当我更改选定的optionbutton时,它仍然使用旧查询结果,而不是带有新WHERE的查询结果。 (其他所有内容都可以正常运行)。
我尝试通过F8键逐步运行它,然后它起作用了。结果之一大约是120行,另外50个结果。据我所知,在设置查询的新String值与将结果复制到excel工作表之间,发现查询本身已正确修改,这是有问题的。在工作表上保持不变。
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文件,并且在自动运行时不会还原
答案 0 :(得分:0)
看来,当我制作.CSV文件时,已将该文件转换为活动的工作簿,当逐步运行时,它本身又恢复为真正的活动工作簿,但正常运行时,我只需要添加Workbooks("WorkbookName.XLSM").Activate
在将数据复制到正确的工作表之前。