|
>詳細に伝えられず申し訳ないです。
>
>早速「Exit For '★追加」を追加しましたが、
>
>>'削除行を削除
>>.Offset(lngRows - lngCount + 1).Resize(lngCount, lngColumns).Delete Shift:=xlShiftUp
>
>でエラーが生じました。
>
>そこで、当初以下の条件で削除していたのですが、*保守*を削除したところエラーが消えました。
>
>> vntDelList = Array("*保守*", "*サマリ*")
>
>複数の削除条件が引っかかってエラーが出ていたのでしょうか?
いや、私のチョンボで「Exit For」を書き忘れていたのせいだけでは無いようですね?
実際に出たエラーの内容(エラーダイアログに書かれている物)と
その時の各変数の値が解らないので特定出来ないのですが?
.Offset(lngRows - lngCount + 1).Resize(lngCount, lngColumns).Delete Shift:=xlShiftUp
がエラーを起こす可能性を考えてみます
1、「Resize プロパティ」に与える値、lngCount、lngColumnsのどちらかが0の場合
a、lngColumns(List列数)は、このプロシージャに引数で与える呼び出し元の
'Listの列数(A列〜K列)
lngColumns1 = 11
若しくは
'Listの列数(M列〜W列)
lngColumns2 = 11
の値なので考えにくい
b、lngCount(削除数)が0の場合は、
With rngList
'削除行が有るなら
If lngCount > 0 Then
で0の場合は実行しないので考えられない
2、「.Offset(lngRows - lngCount + 1)」の場合
a、Offsetの前の拡張子"."が無い場合、コンパイルエラーが出て
実行その物が出来ないので考えにくい
b、削除するListが1行目から始まっている場合、lngRows - lngCount + 1が削除開始行なので
lngRows - lngCount + 1 < 0に成った場合、詰まり削除行数がデータ行数を上回った場合
エラーが出ます
此れは、「Exit For」を書き忘れていた事により起きます
原因は
「Exit For」が在れば、
「最初に合致した削除条件で削除の印を付け、削除する行数を足してLoopを抜ける」
と言う動作をします
「Exit For」が無いと、
「For〜NextのLoopを回り切り、その間で削除条件に合致した回数分
削除数(lngCount)は加算される(印は同じ所に何度も付ける為、印は1つしか付かない)」
という動作に成ります
しかし、バグ修正で「Exit For」を正しい位置に追加すれば避けられると思います
因って、バグ修正で「Exit For」が正しい位置に追加されていれば、削除条件が重なっていても
正常に動くと思います
しかし、「Exit For」を追加してもエラーが回避されず、
削除条件の1つを外したら動いたと言うのも気に入りません?
私の考えている以外に原因が在ると思いますので
もう一度、削除List
vntDelList = Array("*保守*", "*サマリ*")
を、元にもどしてTestして下さい
そして、エラーが出たら、ダイアログの文章をUpして下さい
次に、ダイアログの「デバグ」を押して下さい
すると、エラー行が反転表示されますので
lngColumns、lngCount、lngRowsの各変数にマウスポインタを持って行って変数の値をUpして下さい
次に、マクロを終了してExcelの画面に戻って下さい
各Listの最終列を見て下さい、其処に0か1が出力されています
(この0の行は残す行で1の行が削除されるぎょうです)
正常なら、Listの上に0が集まり、1が下に集まっていますので確認して下さい
|
|