2017-10-23 8 views
0

列番号ではなくヘッダーに従ってさまざまな列を一緒にテストしたいと思います。選択された列のセルにテキスト、特殊文字、および英数字の値が含まれている場合、マクロはエラーとしてセルアドレスをポップアップします。ここで列内のテキスト特殊文字

は私のコードです:

Sub Test() 
    Dim LastRow As Long, i As Long 

    LastRow1 = Cells(Rows.Count, "C").End(xlUp).Row ' here instead of mentioning C or D i want to mention Column Header 
    LastRow2 = Cells(Rows.Count, "D").End(xlUp).Row ' here instead of mentioning C or D i want to mention Column Header 

    For i = 2 To LastRow 
     If Range("C" & i).Value = a-z or "SpecialCharacters"Then 
      msgbox "Error in " & i & "Row of C" 
     elseif Range("D" & i).Value = a-z or "SpecialCharacters"Then 
      msgbox "Error in " & i & "Row of D" 
     else 
      Msgbox "No error in column C" ' instead of C it should show Header name 
      Msgbox "No error in column D" ' instead of C it should show Header name 
     end if 

enter image description here

私はあなたの時間と努力を高く評価しています。私はさらに実行するコードを持っているので機能を使用しないでください機能それは少し難しくなります。ここで、c2、c3、c4、列cの最後のセル、およびすべてのブランクはエラーと見なすべきではありません。

+2

ようヒントとして: 'IsNumeric関数IF(。レンジ(「A1」)値)値が数値である場合Then'チェックが(空白があると考えられる以下の実施例では、私は、ヘッダー行1であると仮定しています「0」は数字)。また、列の代わりにヘッダー名を使用する方法は組み込まれていません。しかし、行1のヘッダーを検索し、見つかった列番号を特定し、この列番号を使用することができます。しかし、これは関数を使わなければ動作しません。 –

+0

テーブルとして設定されたデータは、「ヘッダ」を使用する可能性があります – QHarr

答えて

0

[検索]を使用してヘッダー名を検索すると、次のように表示されます。

lngCheckCol = Range("1:1").Find("HeaderName", , , xlWhole).Column 
    LastRow1 = Cells(Rows.Count, lngCheckCol).END(xlUp).Row 
+0

ありがとうございます!ヘッダー名を選択するには、このマクロは問題なく動作していますが、セルにテキスト、特殊文字、英数字の値が含まれているかどうかを検証するかどうかを指定する必要があります。 –

+2

@Coolmunda If IsNumeric(Range( "A1")。Value)のような 'IsNumeric'の最初のコメントで述べたように、値が数値かどうかを確認できます。それはあなたが必要とするものでなければなりません。だから私たちはあなたのために少し仕事を残しました。あなたのコードを構築するために必要なものはすべて既にテーブルに載っています。これらのことをまとめてみれば、あなたの望む行動が得られます。 –