Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10707 / 76734 ←次へ | 前へ→

【71572】Re:空白列の削除
回答    - 12/3/18(日) 18:37 -

引用なし
パスワード
   こんにちは。
できるだけ元のコードを生かして書いてみました.
ホントはselect,activateしないコードの方が「偉い」のですけどね ^^

Option Explicit               '(1)
Sub ppp()
Dim yyy As Range

'  On Error Resume Next          '(2)
'  Application.ScreenUpdating = False   '(3)
  Range("A2").Select
  Do
    If IsEmpty(ActiveCell) Then
      Range("A1").Select
      Exit Do
    Else
      Set yyy = ActiveCell.EntireColumn  '(4)
      If Application.WorksheetFunction.CountA(yyy) = 1 Then  '(5)
        yyy.Delete
      Else
        ActiveCell.Offset(0, 1).Select
      End If
    End If
  Loop
'  Application.ScreenUpdating = True   '(6)
  
  On Error Resume Next          '(7)
  Set yyy = Nothing            '(8)
  On Error GoTo 0             '(9)
End Sub

■以下,解説です. クイズもあります.
(1) は必須です.モジュール冒頭に書きます.
(2)(3) コード作成中はコメントにしておきます.
(1)〜(3)のようにしておくと,エラーや不具合がどんどんおもてに出ます.
  出たはしから対応していけば,不具合のない良いコードが書けます.
  コード作成中に不具合が見えない設定にしていると , 不具合がそのまま残るため
  エラーはでないけど期待通りに動かないコードが出来上がります.
(2)を書いたら必ず(9)を書きます.
(3)を書いたら必ず(6)を書きます.
(4)を書いたら必ず(8)を書きます.
  開けたら閉める。出したらしまう.それと同じです.そういうものと思って下さい.
(4) この表の下に別の表やデータが無いという前提ですが
  リサイズ200とか面倒なので 列全体を参照するようにしました.
  これは好みです.
(5) 見出しの分、右辺を 1 に変更しました.
(7) この行には意味があります.(2)は削除しても構いませんが
  これは削除してはいけません.理由が分かりますか?
  
※ 行や列を削除するコードは, 後ろから前へループするのが定石です.
  そのほうが簡単だからです.
  ですが,ここでは「元のコードを生かして」前から後ろへループしています.
  そのため,特別な工夫を凝らしてあります. どんな工夫か,なぜそれが必要か見いだして下さい.

6 hits

【71549】空白列の削除 はる 12/3/16(金) 10:54 質問
【71553】Re:空白列の削除 UO3 12/3/16(金) 19:53 回答
【71587】Re:空白列の削除 はる 12/3/21(水) 9:13 お礼
【71556】Re:空白列の削除 UO3 12/3/16(金) 20:50 発言
【71592】Re:空白列の削除 はる 12/3/21(水) 17:00 質問
【71599】Re:空白列の削除 UO3 12/3/22(木) 11:56 発言
【71600】Re:空白列の削除 はる 12/3/22(木) 13:07 お礼
【71572】Re:空白列の削除 12/3/18(日) 18:37 回答
【71588】Re:空白列の削除 はる 12/3/21(水) 9:21 お礼
【71591】Re:空白列の削除 はる 12/3/21(水) 16:59 質問

10707 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free