2017-08-30 12 views
0

Excelシートを埋めるためにVBAでレコードセットをループする必要があります。私はこの行ごとにこれをやりたいVBA&Excel - ループeecordset

私が今持っていることは次のとおりです。

comm.CommandText = str_SQL 
rec.Open comm 
Sheets("mySheet").Range("A4").CopyFromRecordset rec 

これは動作します。しかし、私のrecのインデックスchangeXであるときに、セルの色を変えたいと思います。

これは可能でしょうか?誰かに別の解決策がありますか?

答えて

2

今までrecordsetsの内容を一度にすべて出力しました。これは、少なくともrecord(大規模なレコードセットの場合)ごとにfieldというループを繰り返すよりも高速です。あなたがに実際にループを望んでいた場合

は、(汚いとテストされていない)、このようなものはなります:

Dim i As Integer, j as Integer 
    Dim fld As Object 

    ' print headers, starting from A4 to the left 
    i = 1 
    j = 4 
    For Each fld In .Fields 
     ThisWorkbook.Sheets(mySheet).Cells(j, i).Value = fld.Name 
     i = i + 1 
    Next fld 

    ' print record by record, field by field 
    i = 1 
    j = j + 1 
    While Not .EOF 
     For Each fld In .Fields 
      ThisWorkbook.Sheets(mySheet).Cells(j, i).Value = fld.Value 
      ' here you could test for something like 
      ' If fld.Name = "change" and fld.Value = "X" Then ThisWorkbook.Sheets(mySheet).Cells(j, i).Interior.Color = vbYellow 
      i = i + 1 
     Next fld 
     j = j + 1 
     .MoveNext 
    Wend 

これは非常にいくつかのより多くが、一般的に、あなたは2を使用する必要があります合理化することができますレコードのネストループ、および各レコードのフィールド。あなたがしようとするものには、あまりにも不器用かもしれません。

より合理的なアプローチだけで、あなたのセルの書式をごすでに処理されたレコードセットの独立した、または持っている(VBAで)言っ範囲に条件付き書式を追加するために単純なもののような

を使用することです

自分自身を更新する利点

+0

私のために働いた。ありがとうございました。 –