2016-04-18 7 views
0

マイカラムAは、私は基本的に空のセルをスキップして、最後の行(lrow)を設定するセルとしてkat3使用するプログラムを希望 kat3 空KAT1 KAT2ような値を有しています。私が使用しているコードは以下の通りです。列内の空のセルをスキップする方法は?

Private Sub txt_BPName1_Exit(ByVal cancel As MSForms.ReturnBoolean) 
Dim ws As Worksheet 
    Dim Lrow As Long 
    Dim c As Range, rng As Range 

    Set ws = ThisWorkbook.Sheets("Sheet1") 


    With ws 

     Lrow = .Range("A" & .Rows.Count).End(xlUp).row 
     'Lrow = .Range("A" & .Rows.Count, 1).End(xlUp).Select 
     'Lrow = .Range("A65536").End(xlUp).row + 1 
     Set rng = .Range("A2:A" & Lrow) 

    End With 

    For Each c In rng 
     If c.Value = txt_BPName1 And c.Value <> "" Then 
      MsgBox "Cell " & c.Address & " Duplicate Found." 
       cancel = True 


      Exit Sub 
     End If 
    Next 

    MsgBox ("Base Product is not duplicate,Ok to Add") 

    Cells(Lrow + 1, 1).Value = txt_BPName1.Text 

    txt_BPName1.Text = "" 
    ActiveCell.Offset(1, 0).Select 

End Sub 

値は空のセルの代わりに、1つ下に入ったばかりされています 以下は改訂されたコードです。 if文

+1

を追加しますか? – findwindow

+0

エラーは、変数に設定しようとした後に '.Select'を使用しているためです。代わりに、 '.Row'でそれを切り替えてください。しかし、それはあなたの全体的な問題に対する解決策ではない可能性があります(そうでない可能性があります)...それはエラーが起こっている理由です。 If c.Value = txt_BPName1とc.Value <> "" Then 'を実行しようとする可能性があります – BruceWayne

答えて

1

単にあなたのループの中で `Lrow = .Range( "A" &.Rows.Count).END(xlUp).row`と間違って何

For Each c In rng 
    If not "" = c.Value Then 
+0

私は個人的にそれをもう少し直観的にするためにそれを反転します。 'c.Value <>' 'Then ...' 「C値が空白でない場合は、空白でない場合はC値」となります。「 – BruceWayne

+0

@ Abhi0609 - そのコメントをOPに編集できますか?コメント内のコードを読むのは難しいです。 – BruceWayne

+0

@ブルース・ウェイン:OP編集。 – Abhi0609

関連する問題