• ベストアンサー

VBAで空白がない所でコード走るとエラーが出る

VBAで空白がない所にコードが走るとエラーが出てしまう VBAで空白を左詰めで埋まるようにコードを作りました コードの画像で示したようにハイライトされた所でエラー発生 表の画像はコメントの通りです よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.2

エラーをトラップして無視する方法もありますが 私だったら、そもそもエラーの起きない以下のコードにします。 Sub sample()  Dim tgRng As Range  Dim ChkCell As Range  Dim sw As Boolean    Set tgRng = Range("B1:F3")    sw = False  For Each ChkCell In tgRng   If ChkCell.Value = "" Then    sw = True    Exit For   End If  Next  If sw = True Then   tgRng.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft  Else   MsgBox "空白セルはありません"  End If End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率65% (1632/2475)
回答No.1

変数名は実際のものに変換してください。 Range(Cells(i, sCol), Cells(i, eCol)).Select を外して On Error Resume Next Range(Cells(i, sCol), Cells(i, eCol)).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft On Error GoTo 0 ↑「ツール」「オプション」の全般タブの「エラートラップ」が「エラー発生中に中断」以外になっていると有効 もしくは Range(Cells(i, sCol), Cells(i, eCol)).Select はそのままで If Application.WorksheetFunction.CountBlank(Selection) > 0 Then Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft End If で試してみてください。 あと Row=1 のままなので一行目しか対象になっていないと思いますから以降の行の指定はRowではなくiでいいのではないでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAのコードがエラーになってしまいます。(エクセル)

    ある表のある項目が空白以外(つまり、在庫がある)のものを オートフィルターで抽出して、その中の該当列のみコピーするマクロを 記録と修正をして書きました。 初めはきちんと動いていたのですが、今日になって急に 「Selection.Copy」のところでエラーが出てしまうようになったんです。 エラーコメント: 実行時エラー‘1004': そのコマンドは複数の選択範囲に対して実行できません。 ・・・・と出たときに、デバッグすると、「Selection.Copy」の 1行が黄色くなっていて、該当箇所になっています。 コード: Selection.AutoFilter Field:=19, Criteria1:="<>" '検索 Range("A8:C1000,G8:I1000,J8:L1000").Select Selection.Copy 作業自体は、複数の選択範囲に対して実行できる(コピーできる)し、 今まで動いていたのに??と、なにがいけないのかわからないので、 どうか教えていただきたいと思います。 VBAは勉強始めたばかりで、この部分だけが問題なのか わかりません。補足をしますので、どうかよろしくお願いします。 Excel2000を使用しています。

  • 列を移動させるvbaコードを教えてください。

    access2003を使用しています。 画像はテーブルですがフォームのデータシートビューで 画像のようにフォールド2を一番左に移動するvbaコードを知りたいです。 vbaで可能なのでしょうか? ご教授よろしくお願い致します。

  • 【VBA】Vlookupのエラー処理

    VBAでWorksheetFunction.VLookupを利用しています。 エラーが発生した場合も、「参照先の表をもとに値を表示する」ようにしたいのですが、可能でしょうか。 【参照先の表】  一列目      二列目  あ        か  い        き  う        く  え        け  お        こ  ※エラー時    ん ※「あ」のときは「か」を表示させる。 ※「さ」のときは「ん」を表示させる。 エラー時に「ん」を表示させたいということではなく、 「表を参照して「ん」を表示させたい」という要望です。 (表を変更すればコードを変更せずとも表示を変えられる仕様) 言葉足らずかもしれませんが、ご協力お願いします。

  • 空白ならば vba エラーになる IsNull

    If IsNull(Forms("フォーム").Cntrols("年度別").Value) = True Then End If このコードは何がおかしいですか? 実行時エラー2465になってしまいます。 コントロールが空白なら文字を入れて、空白じゃないなら mystr = Forms("フォーム").Cntrols("年度別").Value のようにして、コントロールの値を変数に格納したいのですが、 エラーになる原因がわかりません。

  • エクセルで1行目が空白の場合、列を削除したい

    こんにちは!質問をお願いします。 エクセルで表を作成していますが、1行目が空白のセルがある場合に、その列を削除したいのですが、VBAでどのようなコードにすればよいでしょうか? ※上記のD列を削除し左詰めにしたい。(空白セルはAからBBまでの間で、特定の位置以降で発生します。) ※ちなみに1行目には、=N というようにほかのセルを参照し、文字の入力があれば表示するようにしています。 初心者につき、うまく説明できていないかもしれませんが、よろしくお願いいたします。

  • エクセルVBA

    エクセル初心者です。 今、下画像上段のようなデータをエクセルで作っています。 内容は売上表みたいなものです。 表のD列とH列に売上があれば、売上金額が入ります。 ただし、両方ともない場合は、D列とH列に金額は入らず 空白になります。 そこで、「D列とH列が両方空白の場合、その行を非表示にする」 というVBAを作りたいのですが、 コードが分からず困ってしまいました。 データ量がかなり多く、今は1行づつ非表示にしているので 時間がかかってしまいます。 完成版は画像下段です。 何かいいコードはあるのでしょうか。 よろしくお願いします。

  • なぜvbaコードに「#」を付けてもエラーにならないのか?

    なぜvbaコードに「#」を付けてもエラーにならないのか? Sub Sample21() Dim n As Long n = FreeFile Open "D:\Test.txt" For Output As #n Print #n, Now Close #n End Sub というテキストファイルに書き込むマクロですが 「#n」はなぜエラーにならないのですか? 標準モジュールでは、 「#」と書くとコンパイルエラーになるのに For Output As #n だと大丈夫な理由が知りたいです。 あと、気付いた事は 「#」は「&」や「=」と同じ色で表示されます。

  • エクセルVBAが中国のPCでは動かない(エラー)

    VBAコード、コメントに日本語が含まれると中国のPCでは、動作できずエラーになると連絡をうけました。 どこの設定を変えると、そのまま使用可能になるでしょうか?

  • エクセルVBAで質問です。

    エクセルVBAで質問です。 不用な空白行を削除したいのですが、どのようにコードを書いたらいいでしょうか? 添付の画像のような表を作っています。 添付のではAAからGGまでデータが入っていますが、いつもデータ数は違います。ただし20行目 より多くなることはありません。データ範囲の5行目から20行目まででおさまります。 このような条件で、データのない空白行を自動で削除するようにしたいと考えています。 よろしくお願いします

  • エラーコード:0x800ccc81とは何のエラー

    驚速パソコンのインストールでアウトルックの送信ができなくなる場合はありますか? アカウント設定などをやり直しても、エラーメッセージが 「不明なエラーが発生しました。エラーコード0x800ccc81」が表示され、送信することができません。 エラーコード表にも該当する番号が無く、困っています。 解決する方法はありますか?

専門家に質問してみよう