エクセルVBAについてお尋ねいたします。以前、列の検索範囲から指定列中の空欄セルが存在した際にその空欄を含む行の削除を実行するマクロを組んだのですが、削除する行の範囲も指定するマクロに組み替えたく望んでおります。
<参照>
Private Sub CommandButton1_Click()
Dim minRow As Integer
Dim maxRow As Integer
Dim checkColIndex As Integer
' 初期値1(開始行の値)
minRow = 1
' 初期値2(終了行の値)
maxRow = 10
' 検索列の値(1=A列、2=B列、3=C列...)
checkColIndex = 1
Application.ScreenUpdating = False
' 空欄が存在する行の削除処理
For i = maxRow To minRow Step by - 1
' 指定セルが空欄の場合、その行を削除
If (Len(ActiveSheet.Cells(i, checkColIndex).Value) = 0) Then
ActiveSheet.Rows(i).Delete
End If
Next
Application.ScreenUpdating = True
End Sub
上記のコマンドを例にすると、
1行目から10行目までのA列に存在する空欄を検索し、空欄が存在したら範囲中の最下(10行目)よりセルを含む行ごと削除・・・
となりますが、この中に
<例>
’削除を行う範囲(1=A列、2=B列、3=C列...)
' 開始列値
***
' 終了列値
***
'範囲内の行を削除
***
など、検索範囲が変わった際にも対応が可能で削除範囲が指定出来るコマンドに変更したく望みます。
宜しくお願い致します。
補足
ご回答いただき有難うございました。早速試しましたが、私の質問が的を射ていない物であったと反省致しました。 削除を求めた対象を「行」と表記致しましたが、正しくは指定範囲内の「セル」であり、対象セルのみを上方に削除する事が目的でした。 ですので、watabe007先生のコマンドが例えばA1:J10までの範囲指定と空欄の検索をB列と設定することが出来たと仮定した際に、範囲内のBセルに空欄が存在した際の「空欄を含む A~J までのセルの上方削除」を目的としております。(K列以降の情報保護から) <例> ’削除を行う範囲 (1=1行、2=2行、3=3行...) (1=A列、2=B列、3=C列...) ' 開始行の値 minRow = 1 ' 終了行の値 maxRow = 10 ' 開始列の値 例えば 1(A列) ' 終了列の値 例えば 10(J列) ※「A1:J10」のような範囲指定でも構いません。 '空欄検索列 例えば 2(B列) ※「B」のような直接指定でも構いません。検索列は必ず1列です。 ’上記指定範囲(A1~J10)の内、B列に空欄が存在した際に空欄セルを含むA~Jセルを上方削除 *** ※上記範囲中のB列偶数行に空欄が存在した場合 A2:J2、A4:J4、A6:J6、A8:J8、A10:J10 のセルが上方へ削除されることとなります。 可能であればInputBoxを使わずに直接のコマンド指定を望んでおります。 ご親切に回答くださったにも拘らず、曖昧な質問をしてしまい大変申し訳ございませんでした。 ご無礼ながら引き続きご教授を宜しくお願い致します。 以上