我正在尝试使用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中的单元格具有值。
请帮帮我。
答案 0 :(得分:0)
尝试
Do While(Not IsEmpty(Sheet1.Cells(i, 16))
或者更确切地说
Do Until IsEmpty(Sheet1.Cells(i, 16))
答案 1 :(得分:0)
我相信你知道,但请记住IsNull和IsEmpty Excel帮助之间的以下区别提醒我们:
IsNull - &gt;返回一个布尔值,指示表达式是否不包含有效数据(Null)。 IsEmpty - &gt;返回一个布尔值,指示变量是否已初始化。
好的,这就是说,我已经修复了你无法读取数值的问题。我将您正在查看的范围放入阵列变体中。现在循环中的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
你们有什么想法?
答案 2 :(得分:0)
我认为这就是你要做的事情:
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