2016-03-23 27 views
0

指定された範囲のセルが空白の場合にメッセージを返そうとしています。範囲を宣言した場合、すなわちVBA範囲内のセルが空白の場合のメッセージを返します。

Set OrderRng = [C1: C41] 

それはうまく動作しますが、そのように宣言すると、

Set OrderRng = Range("c1:" & ActiveSheet.Range("c65536"). End(xlUp).Address).Select` 

これは機能しません。

私は常に正しいセルをハイライト表示するので、2番目の引数の範囲は正しく宣言されています。

私のコード全体はこのように見えます。

> Sub BlankCell() Dim OrderRng As Range On Error Resume Next 
> 
>  Set OrderRng = Range("c1:" & ActiveSheet.Range("c65536").End(xlUp).Address).Select 
> 
> ' Set OrderRng = [C1: C41] ' Rm'd for testing 
> 
> Set OrderRng = OrderRng.SpecialCells(xlCellTypeBlanks) 
> 
> If Err = 0 Then MsgBox "An Order ID is missing on one of your entries, 
> please amend then try again" End If End Sub 

私は間違っていると思いますが、それは明らかですが、私には分かりません。修正するには

感謝

+0

あなたが得ているエラーを共有すると役に立ちます。この場合はおそらく "タイプミスマッチ" – JNevill

+0

最後の行を見つけるために 'Actheet'や' Usedrange'を使用したり、セルをハードコードしたりしないでください。 [この](http://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba)を見たいかもしれません。 '.Select'の使用も避けてください。あなたは[この(http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) –

答えて

1

は、ちょうどあなたの範囲変数セットの行の末尾から.selectを削除します。

Set OrderRng = Range("c1:" & ActiveSheet.Range("c65536").End(xlUp).Address) 

.select方法はTRUEまたはFALSE値を返しますので、あなたは、で終わりますSet OrderRngTRUEにしようとするタイプの不一致は、範囲ではなくブール値です。

また、selectの理由も100%なく、コードは正常に処理されます。

+0

あなたの迅速な応答のために多くのありがとう、私はしなかった.selectを使っていないことを感謝すると、選択された範囲がわかるはずです。 – Prospidnick

関連する問題