![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_15.png?5a7ff87)
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
としましょう。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?5a7ff87)
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ステートメントで開い...
-
喧嘩をしてLINE削除され、 また...
-
エクセルVBAで行削除時にエラー...
-
告白してフラれた相手の連絡先...
-
「お気に入り」が削除出来ない
-
女友達にLINEしたら、既読スル...
-
Yahooフリマってどれくらい時間...
-
今日の日付が過ぎたらその行を...
-
もう関わりたくない人がいたらL...
-
データの削除件数が知りたいです
-
ヤフー知恵袋は違反通報しても...
-
ダブルクォーテーションの削除...
-
ヤフオクのホームに保存した検...
-
【Excel】エクセルの論理式につ...
-
(Access)複数条件の重複デー...
-
エクセル ユーザー設定リスト...
-
なんで同じ質問を繰り返す人の...
-
禁止事項は意味を持つか?
-
おしえてgooの質問回答履歴の削...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えてgooの機能に関するアンケ...
-
VBA:Openステートメントで開い...
-
指定した文字があった場合、そ...
-
エクセルで住所の混在する「丁...
-
回答が付かなかったので、再質...
-
もう関わりたくない人がいたらL...
-
同じ様な内容の質問を繰り返しても
-
喧嘩をしてLINE削除され、 また...
-
今日の日付が過ぎたらその行を...
-
日テレニュースHP、記事削除は...
-
Facebookメッセンジャーの不具合
-
ハメ撮りが流出したら
-
恋愛相談かてで
-
ダブルクォーテーションの削除...
-
エクセルVBAで行削除時にエラー...
-
教えてgooで誰でも月1回だけ回...
-
アクセスにおいて間違って削除...
-
女友達にLINEしたら、既読スル...
-
ウェブページへのアクセス不可 ...
-
すべてやりきった、大満足を意...
おすすめ情報