空单元格不是空的?

时间:2017-06-10 08:57:59

标签: excel excel-vba vba

我的空单元格有问题。我想跳过空单元格,但我不知道如何设置IF条件。当我通过F8调试时,单元格显示EMPTY,但IF条件转到那么。谢谢你的想法;)

 For i = 5 To 76
    If i = 62 Or i = 63 Or i = 64 Then GoTo prechod

    Set myRange = actsheet.Range("V" & CStr(i))
    If Not IsEmpty(myRange.Value) Or Not IsError(myRange.Value) Or myRange.Value <> "" Or myRange.Value = Empty Then

    hodsheet.Range("A" & CStr(hity)).Value = myRange.Value
    hodsheet.Range("B" & CStr(hity)).Value = myRange.Offset(0, 1).Value
    hodsheet.Range("C" & CStr(hity)).Value = myRange.Offset(0, 7).Value
    hodsheet.Range("D" & CStr(hity)).Value = ThisWorkbook.Sheets(1).Range("A7").Value
    hodsheet.Range("E" & CStr(hity)).Value = "nocni"



    hity = hity + 1
    End If
    prechod:
    Next i

2 个答案:

答案 0 :(得分:1)

要检查单元格是否为空,我们实际上可以使用Len(Trim(Cell.Value))

Microsoft Excel Visual Basic LEN函数返回指定字符串的长度。 Ex Len("Sid")将为您提供3

Microsoft Excel Visual Basic TRIM函数从文本中删除多余的空格,在单词之间只留下一个空格,在文本的开头或结尾处不留空格字符。 Ex TRIM(" SID ")将为您提供SID

通过组合这两个Len(Trim(myRange.Value))我们正在做的是首先修剪单元格值然后找到长度。因此,如果单元格值为" ",则Trim()将删除空格,LEN()将为您提供0

因此你需要使用

If Not Len(Trim(myRange.Value)) = 0

将其合并到您的代码中

If Not Len(Trim(myRange.Value)) = 0 And Not IsError(myRange.Value) Then

答案 1 :(得分:-2)

首先从输入数据中选择所有并转到替换选项,替换为 - ,0或任何不会影响输出的字符