
あるシートにマクロが入っていて途中の文で
'シートクリア
Private Sub ClearSheet(ByVal sh As Worksheet, ByVal srow As Long, ByVal bcol As String, ByVal ecol As String, ByRef start_row)
Dim maxrow As Long '最大行番号
maxrow = sh.Cells(Rows.Count, bcol).End(xlUp).row '最終行を求める
If maxrow >= srow Then
'A~最後の列を最終行までクリア
sh.Range("A" & srow & ":" & ecol & maxrow).Value = ""
End If
start_row = srow
End Sub
というのが入っていますが、F列とO列はクリアにならないようにしたいのです。
事務の引継ぎでこのエクセルを修正したいのですがマクロの書き方が
分かりません。
どう書き直したらよいか修正後のマクロ分を張り付けて下さったらとても助かります。
お願いいたします。
No.1ベストアンサー
- 回答日時:
検証していませんが、一例として
Private Sub ClearSheet(ByVal sh As Worksheet, ByVal srow As Long, ByVal bcol As String, ByVal ecol As String, ByRef start_row)
Dim maxrow As Long '最大行番号
Dim ColNo As Long
Dim r1, r2
maxrow = sh.Cells(Rows.Count, bcol).End(xlUp).Row '最終行を求める
ColNo = Range(ecol & "1").Column 'アルファベットを列番号に変換
Set r1 = sh.Range("A" & srow & ":" & "E" & maxrow)
Set r2 = sh.Range("G" & srow & ":" & "N" & maxrow)
If maxrow >= srow Then 'F列=6 とO列=15 はクリアにならないように
Select Case ColNo
Case Is < 6
sh.Range("A" & srow & ":" & ecol & maxrow).ClearContents
Case Is = 6
r1.ClearContents
Case Is < 15
r1.ClearContents
sh.Range("G" & srow & ":" & ecol & maxrow).ClearContents
Case Is = 15
Union(r1, r2).ClearContents
Case Is > 15
Union(r1, r2).ClearContents
sh.Range("P" & srow & ":" & ecol & maxrow).ClearContents
End Select
End If
start_row = srow
End Sub
No.4
- 回答日時:
#1です
>事務の引継ぎでこのエクセルを修正したいのですがマクロの書き方が分かりません。
処理できるであろうコードを示しましたが、このコードを弄るのは考え直した方が良いかも知れません。
引数があるプロシージャは、複数のプロセスから条件で使いまわしている可能性があります。
中身を弄ってしまうと、別のプロセスから呼んで実行した場合に不具合が発生する可能性が高いと思います。
示されているだけでしか分かりませんが、なんでstart_rowが返されているかもわからないので。。
処理の途中に限定的な処理を加えた方がまだ、安全です。
Dim sh As Worksheet
Dim maxrow As Long '最大行番号
Set sh = ActiveSheet 'など
maxrow = sh.Cells(Rows.Count, "A").End(xlUp).Row '最終行を求める
sh.Range("A" & srow & ":E" & maxrow).Value = ""
sh.Range("G" & srow & ":N" & maxrow).Value = ""
sh.Range("P" & srow & ":R" & maxrow).Value = "" 'R列まで消したいならR, P列より右なら良いです
いずれにしても、VBAの規模にもよりますが、一旦修正、改修を初めてどうにもならなくなるケースは
少なくないので、出来るだけリスクを回避して行った方が良いと思います。
アドバイスまでして下さり有難うございました!
その通りでこのマクロ以外にも色々なシートにマクロが作成されていて集計されているブックです。
NO1に書いてくださったマクロをそのまま入れて実行してみたところ、エラー等は出ずに実行できたので他のマクロに不具合はないかな?と思います。
エラーにならなくてもどこかの集計が出来なくなったりするのでしょうか?
素人なのでわかりませんが随時他の集計を確認しながら大丈夫か見ていきたいと思います。
またマクロ関係で質問した際にお暇なときに教えて下されば幸いです。
本当にありがとうございました。
No.3
- 回答日時:
No.2の補足です。
もしクリアされる範囲の最終列が O列 の場合は、
以下の3行目(★)は削除して下さい。
sh.Range("A" & srow & ":" & "E" & maxrow).Value = ""
sh.Range("G" & srow & ":" & "N" & maxrow).Value = ""
★sh.Range("P" & srow & ":" & ecol & maxrow).Value = ""
せっかくO列を飛ばしても、3行目で
O列からP列を””にする、
という処理が走ってしまうので。
No.2
- 回答日時:
sh.Range("A" & srow & ":" & ecol & maxrow).Value = ""
この行が、
A列の範囲最初の行 から 最後の列の最終行 を "" にする
という式なので、単純にF列とO列を除くためには
A~E列を""にする。
(F列はそのまま)
G~N列を""にする。
(O列はそのまま)
P~最終列を""にする。
という処理に変えればいいので
sh.Range("A" & srow & ":" & "E" & maxrow).Value = ""
sh.Range("G" & srow & ":" & "N" & maxrow).Value = ""
sh.Range("P" & srow & ":" & ecol & maxrow).Value = ""
と3つの式に書き換えれば良いですね。
Private Sub ClearSheet(ByVal sh As Worksheet, ByVal srow As Long, ByVal bcol As String, ByVal ecol As String, ByRef start_row)
Dim maxrow As Long '最大行番号
maxrow = sh.Cells(Rows.Count, bcol).End(xlUp).Row '最終行を求める
If maxrow >= srow Then
'A~最後の列を最終行までクリア(F,O列を除く)
sh.Range("A" & srow & ":" & "E" & maxrow).Value = ""
sh.Range("G" & srow & ":" & "N" & maxrow).Value = ""
sh.Range("P" & srow & ":" & ecol & maxrow).Value = ""
End If
start_row = srow
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
居室含め全面禁煙のマンション...
-
禁煙て、最初の初日が一番辛い...
-
ビジネスホテルってなぜ喫煙の...
-
トレーニング前後の喫煙は問題...
-
禁煙すると、眠気が起こりますか?
-
屋内 (原則)禁煙
-
禁煙を始めて3ヶ月になります...
-
iQOSミントを吸いだしてもうす...
-
妻の喫煙をやめさせるには
-
スポーツジム : 喫煙者の比...
-
好きな人の為に禁煙できますか?
-
煙草に一番近い電子煙草は? 普...
-
全館禁煙だけど灰皿があった場合
-
社内を禁煙に すると社員の一...
-
ホテルの部屋で喫煙は空いてい...
-
禁煙していたのに、内緒で再喫...
-
煙草をまじで禁煙するには、ど...
-
ニコチン検査紙について
-
アイコス。 吸うとたまに唇が「...
-
含まない言い方ってどうしたら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
岩屋外務大臣は国益を損ねる
-
ビジネスホテルってなぜ喫煙の...
-
好きな人の為に禁煙できますか?
-
アイコス。 吸うとたまに唇が「...
-
社内を禁煙に すると社員の一...
-
ホテルの部屋で喫煙は空いてい...
-
禁煙していたのに、内緒で再喫...
-
iQOSミントを吸いだしてもうす...
-
妻の喫煙をやめさせるには
-
アイコス注文キャンセルについて
-
タバコを吸うと痩せるって本当...
-
トレーニング前後の喫煙は問題...
-
何年も禁煙してたのに、また吸...
-
喫煙者の方が、必ずメンソール...
-
病院の問診票 喫煙期間について
-
喫煙者の人が付き合うのは
-
喫煙できる場所をどんどんなく...
-
煙害をなくすために、公共施設...
-
煙草をまじで禁煙するには、ど...
-
禁煙のメリットは?
おすすめ情報