2011-08-12 28 views
-1

セルが空であるかどうかをチェックするコーディングを探します。空でない場合は、次のセルグループに移動します。しかし、次のセルグループが空であるかどうかを確認する必要があります。そうでない場合は、次のように移動します。セルが空であるかどうかを確認する方法?

私の現在のコードは以下のとおりです。

If IsEmpty(ActiveSheet.Range("h3")) Then 
    Do 
    Checkbox1.Value = True 
    Range("H3") = 17002 
    Sheets("Sheet1").Range("I3") = Printerformat2.Text 
Else 
    Checkbox1.Value = True 
    Range("l3") = 17002 
    Sheets("Sheet1").Range("m3") = Printerformat2.Text 
End If 
+0

セルは数式を持っているかもしれませんか? –

+0

そのコードはコンパイルできない可能性があります。ループなしで 'Do'を実行します。 –

答えて

1

あなたが助け "H"

Dim i As Long 
With ActiveSheet 
    For i = 1 to 500 

    If IsEmpty(.Range("h" & CStr(i)).Value) Then 
    'Do 'Not sure where you're going with this one? This is not really needed from what I can tell. 
    Checkbox1.Value = True 
    .Range("H" & CStr(i)).Value = 17002 
    Sheets("Sheet1").Range("I" & CStr(i)).Value = Printerformat2.Text 
    Else 
     Checkbox1.Value = True 
     .Range("l" & CStr(i)) = 17002 
     Sheets("Sheet1").Range("m" & CStr(i)).value = Printerformat2.Text 
    End If 

    Next 
End With 

ホープの指定された範囲を繰り返し処理するforループを使用する必要がありますか?

+2

+1しかし、文字列連結を使用してセルアドレスを作成することで、自分自身に不利益を与えています。 –

+0

代わりにどのような方法をお勧めしますか? Sheet1の で 'プライベート列挙型の列 従業員= 1 部門= 2 マネージャー= 3 エンド列挙 プライベートファンクションgetCellByString(ロングとして列、行として列)文字列 としてgetCellByString =:私は、通常そのような「セル」を使用しますCStr関数(.Cells(行、列)) エンド機能 公開サブGetDetails() MsgBoxにgetCellByStringで エンド(マネージャー、2) End Subの ' –

0

セルが空でないことを確認する最も最適な方法は、「If Len(cell)<> 0」です。

.offsetを使用すると、現在のセルから別のセルにアクセスするか、または直接参照することができます。空であるかどうかを確認できます。

1

Range("your range").specialcells(xlCellTypeBlanks)をご覧ください。これは、空のセルをループする最速の方法です。
空でないセルをループする必要がある場合は、セルIntersectに空のセル範囲があるかどうかを確認できます。

0

使用

Application.WorksheetFunction.isblank(ActiveSheet.range("h3")) 

代わりの

IsEmpty(ActiveSheet.Range("h3")) 

真心を込め

+0

なぜ?私のために、それは動作していないようです、 'isblank' – Dolanor

関連する問題