2017-04-10 10 views
1

非連続範囲が入力された場合に検証するマクロを作成し、値を含む最後の行の後に空の行を削除しようとしています。上記画像における不連続範囲に値が含まれているかどうかを検証するVBA

Sheet to validate

、カラムA、D、G、H、私は必須フィールドです。 1つの値が含まれている場合、残りの必須フィールドには値も含まれていなければなりません。緑色の強調表示されたセルは、入力を検証するための入力の例ですが、AとGの値が入力されないと黄色は失敗する必要があります。

私は以下試してみた:

Sub Validate() 
Dim Cell As Range 
For Each Cell In Union(Range("A2:A3"), Range("D2:D3"), Range("G2:G3"), Range("H2:H3"), Range("I2:I3")) 
    If IsEmpty(Cell) Then 
     MsgBox ("Error: All mandatory fields must be filled out") 'actions To Do If True 
End If 
Next 
End Sub 

問題は、行の数は、ユーザが情報を入力し、彼らは、彼らが空白行の残りの部分を残して完了したら毎回異なるものになるということです。私は、VBAとコーディング全般をかなり新しくしているので、どのように進むべきかについてはあまりよく分かりません。これらの必須フィールドをチェックし、空の行に出会ったら停止してトリックを行うようなループを期待していますが、もう一度コード化についてはあまり知らないです。

以下に示す空の行を削除するVBAが見つかりましたが、検証が完了した後にその実行が必要です。

残念ながら、コードサンプルツールは協力していなかったので、Imageを追加しました。 Code sample

わからないことがあれば、私に知らせてください。すべての助けが大歓迎です!

+0

したがって、行A、D、G、HまたはIのいずれかにエントリがある場合は、すべてにエントリが必要ですか?他の列にデータがありますか? – SJR

+0

A、D、G、HまたはI列のいずれかに項目がある場合は、すべてが入力されている必要があります。列B、C、E、F、J、またはKの値もありますが、必須ではありません。 Kは値を含む最後の列になります。 – JC3

答えて

1

OK、これを試してください。私はあなたが無効な行を見つけたときに何が起こりたいのか正確にはわかりません。これはメッセージボックスを表示するだけです。

Sub x() 

Dim rFind As Range, r1 As Range, r As Long 

With Sheet1 
    Set rFind = .Cells.Find(What:="*", After:=.Cells(1), LookAt:=xlWhole, _ 
          SearchOrder:=xlByRows, SearchDirection:=xlPrevious, SearchFormat:=False) 

    If Not rFind Is Nothing Then 
     For r = 2 To rFind.Row 
      Set r1 = Union(Cells(r, "A"), Cells(r, "D"), Cells(r, "G"), Cells(r, "H"), Cells(r, "I")) 
      If WorksheetFunction.Count(r1) > 0 And WorksheetFunction.CountA(r1) < r1.Count Then 
       MsgBox r & " incomplete" 
      End If 
     Next r 
    End If 
End With 

End Sub 
+0

ありがとうございました!これはまさに私が探していたものです。私が残した1つの質問は、検証の完了後に空の行を削除するサブを組み込む方法です。 – JC3

+0

うれしいことです。そのコードが空白を含む行を削除するかのように見えますが、一部の列で空白が正当であると言っているのであれば、それを望むとは思わないでしょうか?上記のコードを実行した後に空白が表示されている場合は、削除を実行する前にユーザーが入力しないようにしてください(その場合、削除するものは何ですか?) – SJR

+0

ええ、それは私の分。私は最初にシートをクリアするためにそのサブをユーザーが使用したことを忘れていました。基本的に私がしていたのは、検証が終わった後、最後に記入された行の後のすべてを削除する方法でした。上記の画像で、行4と行7を削除するために4つの行がすべて正しく記入されたとします。 – JC3

関連する問題