29列ある表なんですが、その内見出しと対応するチェックボックスにチェックが入っていた場合その列を削除して表を詰めたいのですが、うまくいきません。(きれいに削除になりません。)何か方法はないでしょうか。
Rem 非出力項目を非出力にする
For i = 1 To 29
If .Cells(1, i).Text = "AAA" And Frm設定.ChkAAA.Value = 1 Then .Columns(i).Delete
If .Cells(1, i).Text = "BBB" And Frm設定.ChkBBB.Value = 1 Then .Columns(i).Delete
If .Cells(1, i).Text = "CCC" And Frm設定.ChkCCC.Value = 1 Then .Columns(i).Delete
If .Cells(1, i).Text = "DDD" And Frm設定.ChkDDD.Value = 1 Then .Columns(i).Delete
If .Cells(1, i).Text = "EEE" And Frm設定.ChkEEE.Value = 1 Then .Columns(i).Delete
中省略(全部で12項目あります)
Next i
No.2ベストアンサー
- 回答日時:
こんばんは。
カウンター、i を1ずつアップしながら確かめてみれば分かると思いますが、
提示のコードのように単純にループして列(行)を削除する時は、
最終列(行)の方から始まりの方へループしないと拙いです。
For i=1 to 29
ではなくて、
For i=29 to 1 step -1
としましょう。
No.1
- 回答日時:
おそらくなのですが、列を削除すると、列カウンタがずれてしまうのでは?
例)
i = 3 の場合、Column(3).Delete → 3列目を削除して、4列目が3列目に移動する
i = 4 の場合、Column(4).Delete → 4列目を削除したつもりが、実質は元の5列目を削除してしまう。
ということで、ループカウンタと、列カウンタを別々に分けてみてはいかがでしょうか?
例)
col = 1
For i = 1 to 29
If .Cells(1, col).Text = "AAA" And Frm設定.ChkAAA.Value = 1 Then
.Columns(col).Delete
Else
col = col + 1
End If
以下同文
Next i
実際の動作確認はしていませんが。。。参考になれば幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA:Openステートメントで開い...
-
エクセルで住所の混在する「丁...
-
今日の日付が過ぎたらその行を...
-
教えてgooで誰でも月1回だけ回...
-
エクセルVBAで行削除時にエラー...
-
職場の人と仕事中に喧嘩して LI...
-
画像の投稿に関して。
-
もう関わりたくない人がいたらL...
-
すべてやりきった、大満足を意...
-
opensslを削除したい
-
データの削除件数が知りたいです
-
Gboardの予測変換についての質...
-
ウェブページへのアクセス不可 ...
-
ダブルクォーテーションの削除...
-
macに office home&businessを...
-
ワード インターネットの記事...
-
日テレニュースHP、記事削除は...
-
「リクエストの有効期限が切れ...
-
VBA 編集可能な範囲の指定につ...
-
アクセスにおいて間違って削除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA:Openステートメントで開い...
-
「医者も看護師も自分に嫌がら...
-
ハメ撮りが流出したら
-
指定した文字があった場合、そ...
-
教えて!gooにはどのカテゴリが...
-
もう関わりたくない人がいたらL...
-
真剣な質問ほど消されるのはど...
-
Facebookメッセンジャーの不具合
-
インスタグラムのギャラリーの...
-
エクセルで住所の混在する「丁...
-
アクセスにおいて間違って削除...
-
回答してる間に質問が消えるっ...
-
喧嘩をしてLINE削除され、 また...
-
バッチファイルを使用したsql@p...
-
Facebookに自分が四つもアップ...
-
ウェブページへのアクセス不可 ...
-
同じ質問
-
日テレニュースHP、記事削除は...
-
女友達にLINEしたら、既読スル...
-
エクセルVBAで行削除時にエラー...
おすすめ情報