2017-07-26 7 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に置き換えてください。

LCaseUCase、およびWorksheetFunction.Proper

これは、彼らが戻ってくるものです::

Demand Is Diamand 
demand is diamand 
DEMAND IS DIAMAND 

あなたのようにそれらを実行する場合

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

ありがとう!これはうまくいった。私はおそらくそれがすべてをキャプチャすることを確認するためにテキストを比較しますが、これは私の問題を解決しました。 – MrDoe

1

これらは、文字列の版のための3つの基本機能でありますこれは:

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

関連する問題