If ... Thenループは、SQLレコードセットの値をVBA値に割り当てて、Excelセルに割り当てることができるForループ内にネストされています。私は、レコードセットに値があることを確認しました。ForとIf..Thenループがなければ、私がやろうとしていることを実行できます。ただし、ループが実行されるたびに値が空であるように見えます。IF THENループが値を正しく設定しない
は、ここでは、コードの私のブロックです:これが実行された後
Dim counter as Integer
Dim fieldName1, fieldName2, etc. As String
Dim fieldName() As Variant
fieldName = Array("fieldName1", "fieldName2", "etc.")
counter = 0
For I = 0 To UBound(fieldName())
If Not IsNull(recordSet.Fields(counter)) Then
fieldName(I) = recordSet.Fields(counter).Value
counter = counter + 1
Else : fieldName(I) = ""
counter = counter + 1
End If
Next I
、それはエラーなしに成功し、そして私は、セルに値を代入しようとすると、それは空白文字列です。
これは、空の文字列になります:
Range("C8").Select
With Range("C8")
Range("C8").Value = fieldName1
End With
しかし、これが成功のセルに値を入力します:シッダールタから
Range("C8").Select
With Range("C8")
Range("C8").Value = recordSet.Fields(4).Value
End With
「fieldName1」は、二重引用符が文字列のように動作する場合に表示されます。ここでは宣言されたり割り当てられたりしなかった変数のように振る舞います。コードの先頭に 'Option Explicit'を使うのがベストです。 。 Value = fieldName(1) '配列から値を取得したいと思いますか? –
ああ、私は何か重要なものを残しました。それに注意を払ってくれてありがとう。 fieldName1、fieldName2などをStringとして宣言しました。配列はそれらの値の名前を反復して、それぞれがレコードセットから引き出された値に設定されるようにします。だから、配列からデータを取り出すのではなく、配列を使って値を設定しています。これを反映するために私のコードを更新するために1秒を私に与えてください。 – JayRyGeo
これで 'fieldName1'にはどこに値を割り当てますか? –