4

我正在尝试使用 vba 读取 excel 中的单元格值。当我尝试阅读它时,我总是得到空值。

这是代码片段

Private Sub CommandButton1_Click()
Dim i As Long
Dim j As Long
i = 3
j = 4

Do While (Len(Trim(Sheet1.Cells(i, 16))) <> 0)

    Sheet2.Cells(4, j) = Sheet1.Cells(i, 16)

    j = j + 1
    i = i + 1

Loop

End Sub

但是 dowhile 总是得到 NULL 并退出循环。sheet1 中的单元格中有值。

请帮帮我。

4

3 回答 3

0

I think this is what you're trying to do:

Private Sub CommandButton1_Click()

    Sheet1.Range("P3", Sheet1.Cells(Rows.Count, "P").End(xlUp)).Copy
    Sheet2.Range("D4").PasteSpecial xlPasteValues, Transpose:=True
    Application.CutCopyMode = False

End Sub
于 2013-08-09T22:59:14.283 回答
0

我相信您知道,但请记住 IsNull 和 IsEmpty Excel Help 之间的以下区别提醒我们:

IsNull --> 返回一个布尔值,指示表达式是否不包含有效数据 (Null)。IsEmpty --> 返回一个布尔值,指示变量是否已初始化。

好的,话虽如此,我已经解决了您无法读取值的问题。我将您正在查看的范围放入数组变体中。现在循环中的 msgbox 将为您返回一个值。

    Sub x()

Dim Arr As Variant
    Arr = Worksheets("Sheet1").Range(Cells(1, 16), Cells(1000, 16)).Value     'You can modify the 1000 by finding the last line, eg - Range.End(xldown).Row

Dim i
    i = 1

Dim CurrentPos
    CurrentPos = Arr(i, 1)

Do Until IsEmpty(Arr(i, 1)) Or IsNull(Arr(i, 1))

    MsgBox CurrentPos

Loop

End Sub

你们有什么感想?

于 2013-08-09T12:17:41.680 回答
0

尝试

Do While(Not IsEmpty(Sheet1.Cells(i, 16))

或者也许更确切地说

Do Until IsEmpty(Sheet1.Cells(i, 16))
于 2013-08-09T08:41:53.970 回答