目次へ戻ります
VBA サンプル


VBA でワークシートを消去しちゃう

先にコマンドボタンをつくってしまいましょう。

表示→ツールバー →コントロールツールボックスでコントロールを表示させます。以下の画面はこれがもうセットされています。

コントロールが表示されたら、コマンドボタンをクリックして指定の場所にボタンをつくります。

するとコマンドボタンができます。

こんどはこれを右クリックして、コマンドボタンオブジェクトを選択するとタイトルを編集できます。

消去のタイトルをいれて、これからスタートです。なんでもこんな感じでつくっちゃう

コントロールツールボックスの三角形みたいなボタンが引っ込んだ状態で、このボタンをクリックすると・・

VBE(ビジュアルベーシックエディターが表示される)、この部分はCommandButton1_Click()となっていて、CommandButton1をクリックすると・・・という意味で()の中は引数をいれておくようです。なければそのままでいい・・・さぁここからが消去の実行をさせます

この中に下記の単独の消去の部分を書き込んでしまいます。

あとはエクセルの表に戻ってコントロールツールボックスの三角形のところをもう一度クリックすると・・・

デザインモードから通常のモードになります。あとはコントロールツールボックスを閉じて

コマンドボタン(消去)をクリックすると・・

消去されてしまうわけです。あとは・・・消去したいところだけの範囲をしていしていくと必要な場所だけが消去できるわけです。

ちなみに日付と数値だけを消したい時は  Sheets("sheet1").Range("a5:u65536").ClearContentsのところの範囲を

あまり深く考えずに・・
 Sheets("sheet1").Range("b5:d65536").ClearContents 
 Sheets("sheet1").Range("g5:g65536").ClearContents
 Sheets("sheet1").Range("k5:k65536").ClearContents

としちゃうと・・・・

こうですね・・・

すると結果は


こうなるはずです。好きな場所をそうするとボタンひとつで複雑なところも間違わずに消去できます。

 

 

Sheets("sheet1").Range("a5:u65536").ClearContents  'これが消去の一番簡単なコマンドのようです。

  上記の""の間は好きなシートやセルの値をいれられます。行は65536行目まで、列は256列までが上限です。
  'いろんなテキストやネットでしらべたり、マクロでやってみましたが、これが一番シンプルでいい!!
ここが消去のマクロの部分です

'単独の場合はこれでいいです。
'コマンドの意味は
'ワークシートsheet1のレンジ "a5:u65536"を消去しちゃうの意味のようです
'Sheets("sheet1").Range("a5:u65536").ClearContents

'これを
Private Sub CommandButton1_Click()

  Sheets("sheet1").Range("a5:u65536").ClearContents

End Sub

'このように二つの行の間にいれちゃう

'*ファンクションにしておくとどのワークシートからでも実行できるようにしちゃう
'ここでは引数を二つ設定しておきます。ひとつはワークシート名(worksheetnm)と、範囲名(hani)

Private Sub CommandButton1_Click()
'単独ページの消去 セルは a5:u65536までを消去しちゃう
Dim hani As String                                            '範囲の型を宣言しておくこれは文字です!! ** As String
worksheetnm = ActiveSheet.Name
hani = "a5:u65536"
ret = fnShoukyo(worksheetnm, hani)                   '消去をファンクションにしちゃう ちがう場所をさらに指定する場合は
                                                                   'この間にさらにくわえちゃう
'hani = "a5:f65536"
'ret = fnShoukyo(worksheetnm, hani)                  '最初の'をとると実行できます

'hani = "h5:h65536"
'ret = fnShoukyo(worksheetnm, hani) 

'hani = "k5:k65536"
'ret = fnShoukyo(worksheetnm, hani) 

End Sub


'これは消去をするファンクション
Function fnShoukyo(ByVal worksheetnm, hani As String)
Sheets(worksheetnm).Range(hani).ClearContents
End Function

'ここは最終行を取得するファンクション  これが一番単純でいい
'よくあるのが、そのワークシートの最終行は何行目か?ということが比較的多い
'そうでないと65536行目まで実行されてしまうと時間がかかるし、固定値にしてしまうと、残ってしまうし・・という場合便利

Function fnSaishuuGyou(ByVal worksheetnm As String) '最終行を習得する
Sheets(worksheetnm).Select
row100 = Range(a65536").End(xlUp).Row '最終行を取得する
fnSaishuuGyou = row100
End Function

 

 

目次へ戻ります