2017-07-26 64 views
2

這是我現在擁有的vba。我需要它刪除任何工作表中以「Demand」開頭的所有數據。代碼正在運行,但沒有數據正在被刪除。任何幫助表示讚賞!Excel VBA:如何清除多個工作表的所有內容使用`LCASE`標識符

Option Explicit 
Sub ClearExcelContent() 
    Dim DemandData As Worksheet 
    For Each DemandData In ActiveWorkbook.Worksheets 
    If LCase(Left(DemandData.Name, 6)) = "Demand" Then 
     DemandData.Rows("2:" & Rows.Count).ClearContents 
    End If 
    Next DemandData 
    MsgBox "All Demand Data has been Deleted from Consolidation Tab" 
End Sub 

回答

3
If LCase(Left(DemandData.Name, 6)) = "Demand" Then 

上面的語句將不會匹配任何工作,因爲LHS是所有小寫和RHS有一個大寫的D。將Demand替換爲小寫demand

If LCase(Left(DemandData.Name, 6)) = "demand" Then 
+1

謝謝!這工作。我最有可能會添加比較文本,以確保它捕獲的一切,但這解決了我的問題。 – MrDoe

1

這些是字符串的第3個基本功能:

LCaseUCaseWorksheetFunction.Proper

這是他們將返回的內容:

Demand Is Diamand 
demand is diamand 
DEMAND IS DIAMAND 

如果你喜歡運行它們這個:

Public Sub TestMe() 

    Dim strText As String 

    strText = "demaNd is dIamand" 

    Debug.Print WorksheetFunction.Proper(strText) 
    Debug.Print LCase(strText) 
    Debug.Print UCase(strText) 

End Sub 

爲了比較函數的結果,您應該與類似的字符串進行比較。可能最確定的是在比較的兩個部分放置相同的字符串函數。就像這樣:

LCase(Left(DemandData.name, 6)) = LCase("demand") Then 

在一般情況下,如果要確保Vit=VIT然後再考慮在模塊的頂部添加Option Compare Text。那麼這將是事實:

Option Compare Text 
Sub TestMe() 
    Debug.Print "Vit" = "VIT" 
End Sub 
+1

嗨Vityata,謝謝我應該加入這個無論如何。感謝您的有益迴應。 – MrDoe

相關問題