我有一个简单的问题,但我无法找到它的“修复”。
我有以下代码:
cmdSQLData.CommandText = Query 'some select
cmdSQLData.CommandType = adCmdText
cmdSQLData.CommandTimeout = 0
Set rs = cmdSQLData.Execute()
j = 1
x = 6 'the line I want the data to start
rs.MoveFirst
Do Until rs.EOF
Sheet1.Range("A" & x).Value = rs![name1]
Sheet1.Range("B" & x).Value = rs![name2]
Sheet1.Range("C" & x).Value = rs![name3]
Sheet1.Range("D" & x).Value = rs![name4]
.
.'lot more columns
.
Sheet1.Range("AC" & x).Value = rs![name28]
If x = 10 Then 'after each 10 lines to create another sheet
x = 6
j = j + 1
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name ="Sheet" & j
End If
Loop
cn.Close
Set cn = Nothing
Set rs = Nothing
Set cmdSQLData = Nothing
我需要当记录集中有更多“行”而不是10时,要创建另一张表,Sheet2
,在哪里插入下10行,如果记录集仍然有值创建另一个工作表,Sheet3
等等,直到完全解析记录集。
问题是,为了将记录集中的数据设置为excel,我使用硬编码的Sheet1
。我尝试使用而不是Sheet1
,Sheet[j]
或Sheet(j)
并在每次创建新工作表时增加“j”,但是我收到错误,因此我无法使用{{1 }或Sheet[j].Range("A" & x).Value=rs![name1]
。
任何提示?
答案 0 :(得分:1)
虽然我个人认为在将所有数据划分为一组x行之前将其收集到一张纸上要好得多,但还有另一种方法可以使用您的代码。不使用Sheet1
,而是使用表格(j
),其中j
是表格索引。此外,您还可以执行表格(“工作表”和j
)。
使用第二种方法,用以下代码替换相应的代码块:
Set rs = cmdSQLData.Execute()
j = 1
x = 6 'the line I want the data to start
rs.MoveFirst
Do Until rs.EOF
With Sheets("Sheet" & j)
.Range("A" & x).Value = rs![name1]
.Range("B" & x).Value = rs![name2]
.Range("C" & x).Value = rs![name3]
.Range("D" & x).Value = rs![name4]
.
.'lot more columns
.
.Range("AC" & x).Value = rs![name28]
End With
x = x + 1
If x = 16 Then 'after each 10 lines to create another sheet
x = 6
j = j + 1
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Sheet" & j
End If
Loop
您也忘记增加x
,以便继续一次又一次地覆盖第6行。在这里,您应该定位x=10
但x=16
,因为您从第6行开始,基于x
的初始值。包含第6行的十行在第15行结束。一旦x
等于16
,它就会触发IF
块。
我已在上面的代码中为您更正了这一点。如果这有帮助,请告诉我们。
答案 1 :(得分:0)
尝试使用此功能添加新工作表:
Do Until rs.EOF
If x = 10 Then
Set ws = Thisworkbook.Sheets.Add(After:=Thisworkbook.Sheets(Thisworksheet.Sheets.Count)
ws.Name = "Sheet" & j
x = 6
j = j + 1 ' although you don't really need this, sheet number increment automatically.
End If
ws.Range("A" & x).Value = rs![name1]
.
.
x = x + 1
Loop
我只是假设你在添加工作表时遇到问题 希望这会有所帮助。