如果然后循环没有正确设置值

我有一个If … Then循环嵌套在一个For循环,应该从SQLlogging集的值分配给VBA值,以便他们可以分配给Excel单元格。 我已经validationlogging集有值,而我正在尝试做什么可以完成没有For和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 

在执行完成之后,它没有任何错误地成功执行,我尝试给单元格赋值,它是一个空白string。

这将导致一个空string:

 Range("C8").Select With Range("C8") Range("C8").Value = fieldName1 End With 

然而,这将成功地将一个价值input到一个单元中:

 Range("C8").Select With Range("C8") Range("C8").Value = recordSet.Fields(4).Value End With 

来自悉达思:

我已经声明fieldName1,fieldName2等string。 该数组将迭代通过这些值名称,以便每个将被设置为从logging集拉出的值。

你无法在循环中声明variables:)

我不确定你到底想要完成什么,但是如果目标是将logging集值复制到excel表单中,那么可以更简单快速地完成,例如:

 Dim i As Long Dim ws As Worksheet Dim rng As Range Set ws = ThisWorkbook.Worksheets("My_Sheet") 'your target sheet Set rng = ws.Range("A1") 'target location ' This block copies field names to worksheet For i = 0 To rs.Fields.Count - 1 rng.Cells(1, i + 1) = rs.Fields(i).Name Next ' This block copies recordset values to worksheet, one row below field names rng.Cells(2, 1).CopyFromRecordset rs