2017-06-10 33 views
1

我有空單元格的問題。我想跳過空單元格,但我不知道,如何設置IF條件。當我通過F8進行調試時,單元顯示爲EMPTY,但IF條件轉至THEN。感謝您的想法;)空單元格不是空的?

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 
+1

'如果不是Len(trim(myRange.Value))= 0和Not IsError(myRange.Value)然後' –

+0

謝謝,問題解決了;) –

+1

@SiddharthRout說得對(像往常一樣),但也許更容易理解'如果Len(trim(myRange.Value))> 0和'...,這意味着如果修剪完所有空格後,大於'0'。 –

回答

1

如要檢查電池是空或不是我們實際上可以使用Len(Trim(Cell.Value))

Microsoft Excel Visual Basic LEN函數返回指定字符串的長度。對於防爆Len("Sid")會給你3

的Microsoft Excel中的Visual Basic TRIM功能帶多餘的空格,從文字,留下在文本的開始或結束的話,沒有空格字符之間只有一個空格。對於例如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

Excel的TRIM和VBA的Trim不同,工作方式不同。 VBA的「修剪」只修剪整個句子周圍的外部空間,而* Excel的*'TRIM' **也修剪句子中不同單詞之間的額外空格。答案引用Excel的'TRIM',但建議的代碼實際上使用VBA'' Trim'。要使用Excel的版本,請使用'Application.Trim'。 –

+0

但是,當然,這種差異與OP的情況無關,我們只想檢查空字符串。只是想強調兩種可能性,可能需要其中一種或另一種。 –

+0

@ A.S.H:我指的是上面的VBA修剪。 :) –

-2

在首先選擇從輸入數據和去替換選項,以替換 - ,0或任何字符,這將不會影響您的輸出

+0

我不能重寫數據集,它是共享的... –

+0

然後,該表必須是數據保護,必須輸入密碼。如果您知道密碼,請轉到審查選項卡並選擇解除保護表 –

+0

Siddhath Rout解決了問題;) –