2016-11-25 15 views
0

以下は私のコードです。私が望むのは、コードが小文字であろうと両方であろうと、アルファベットの大文字小文字を無視するべきです。アルファベットの大文字小文字を無視するコード

Private Sub CommandButton1_Click() 
Dim ws As Worksheet, tbl As ListObject, row As ListRow 

Set ws = Sheets("Sheet1") 
Set tbl = ws.ListObjects("Table2") 

Dim intValueToFind As String, intValueToFind1 As String, rng As Range, rng1 As Range 

Set rng = tbl.ListColumns(1).DataBodyRange 
Set rng1 = tbl.ListColumns(2).DataBodyRange 


intValueToFind = LCase(Me.ComboBox1.Value) 
intValueToFind1 = LCase(Me.TextBox2.Value) 

If Not rng Is Nothing Then 

    For Each rng In rng 
     If LCase(rng.Value) = intValueToFind Then 
      If Not rng1 Is Nothing Then 
       For Each rng1 In rng1 
        If LCase(rng1.Value) = intValueToFind1 Then 
         MsgBox ("Group Head under this Account Head already Exist. Please enter the Unique Name...") 
         Exit Sub 
        End If 
       Next rng1 
      End If 
     End If 
    Next rng 

End If 


Set row = tbl.ListRows.Add 
row.Range(1, 1).Value = Me.ComboBox1.Value 
row.Range(1, 2).Value = Me.TextBox2.Value 
End Sub 

上記のコードをよくご確認のうえ、間違っています。

+1

問題は何ですか?何かエラーがありますか?もしそうなら、エラーとは何ですか? –

+0

エラーはありません。それはaplhabetsのケースを無視していません –

+3

あなたの問題はあなたの範囲(あなたのケースではなく)です - あなたは 'rng1.Value'の最初の反復のためにどのような価値を得ていますか? "For Each rng In rng"はあなたに1回の反復を与えます - "アメリカ各アメリカのために"というように1つだけです – Jeremy

答えて

0

念(または大文字)を下げるために、両側をキャスト:

If LCase(rng.Value) = LCase(intValueToFind) Then 
+2

正直な質問:OPがすでに 'intValueToFind = LCase(Me.ComboBox1.Value) 'を割り当てている場合、彼女は 'LCase(intValueToFind)'をここに再キャストする必要がありますか? –

+0

@Excel Developersそれは私の問題を解決しました。これを行う目的を少し説明してください。 –

+0

@Victor:良い質問です。私はそれに気づいていなかったので、あなたは正しいです、それは再びキャストする必要はありません。 –

関連する問題