
こんにちは。
エクセル2002を使用しています。
VBAで、開始行を入力させ開始行+38行を削除するような
マクロを作りました。
Sub 削除()
Dim Sline As Integer, Eline As Integer
Dim S As String
'開始行の入力
Sline = Application.InputBox(prompt:="削除開始 行を入力して下さい。",Type:=1)
'開始行が入力された場合
If Sline <> False Then
'開始行のチェック
'終了削除行のセット
Eline = Sline + 37
'削除確認メッセージ
S = MsgBox(Sline & "~" & Eline & _
"行を削除します。", _
vbOKCancel + vbExclamation, _
"行削除確認")
If S = vbOK Then
Rows(Sline & ":" & Eline).Select
Selection.Delete Shift:=xlUp
End If
End If
End Sub
これを実行すると
Selection.Delete Shift:=xlUp のところで、
実行時エラー 1004
RangeクラスのDeleteメソッドが失敗しました。
でとまってしまいます。
どなたか対応策を教えてください。
よろしくおねがいいたします。
No.4
- 回答日時:
なんか、他の方に使ってもらうことを考慮したか、複雑にしてありますが、骨子の
(1)
Sub test02()
s = InputBox("削除開始行=")
Rows(s & ":" & s + 3).Delete
End Sub
は私もテストしたが、動きました。
(2)
Sub test02()
s = Application.InputBox(prompt:="削除開始行を入力して下さい。", Type:=1)
Rows(s & ":" & s + 3).Delete
End Sub
も動きました。
(3)
Sub test02()
s = Application.InputBox(prompt:="削除開始行を入力して下さい。", Type:=1)
Rows(s & ":" & s + 3).Select
Selection.Delete Shift:=xlUp
End Sub
も動きました。
ロジックの問題ではないですね。
imogasiさん、こんにちは。
そうなんです、他の人間に頼まれてこのようなこと
をしております。(初心者の私に頼むほど超初心者からの
依頼です)
いろいろ試していただいてありがとうございました。
No.3
- 回答日時:
こんにちは。
Excel97で試しましたが、少なくともExcel97ではシート保護の場合に出るメッセージとは異なるようです。
expression を省略した場合に、起こる事が多い現象だと思っています。
おまじないで削除処理の前に ActiveCell.Activate を入れてみてはどうでしょうか?
例は下記の点も手を加えてます。
1.Integerの範囲を超えるケースを想定し、変数 Sline と Eline を Long に。
2.MsgBoxの戻り値はInteger型なので、変数 S を Integer に。
3.65536行を超えないように処理を追加。
Sub 削除()
Dim Sline As Long, Eline As Long, S As Integer
Sline = Application.InputBox("削除開始行を入力して下さい。", Type:=1)
'Falseなら抜ける
If Sline = False Then Exit Sub
'最大行を超えたら最大行まで
if Sline > 65536 Then
MsgBox "最大行を超えています",vbOKOnly,"終了" : Exit Sub
End If
Eline = Sline + 37
If Eline > 65536 Then Eline = 65536
S = MsgBox(Sline & "~" & Eline & "行を削除します。", _
vbOKCancel + vbExclamation, "行削除確認")
'OK以外なら抜ける
If S <> vbOK Then Exit Sub
'おまじない
ActiveCell.Activate
Rows(Sline & ":" & Eline).Delete Shift:=xlUp
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAで行削除のできない場合がある
Excel(エクセル)
-
VBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー
Excel(エクセル)
-
'Range'メソッドは失敗しました
Excel(エクセル)
-
4
変数を用いて行全体を削除するには。
Excel(エクセル)
-
5
エクセル、マクロで「末尾を1文字削除」したいのですが
Windows Vista・XP
-
6
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
9
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
10
VBAで文字列を数値に変換したい
Excel(エクセル)
-
11
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
12
Excel マクロ オートフィルで抽出後 削除したい
Access(アクセス)
-
13
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
14
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
15
別のシートから値を取得するとき
Visual Basic(VBA)
-
16
VBA 複数の行を高速で削除する方法
その他(プログラミング・Web制作)
-
17
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
18
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
19
ShowAllDataのエラーを回避したい
Access(アクセス)
-
20
保存先のフォルダ名を指定したいとき
Visual Basic(VBA)
関連するQ&A
- 1 エクセル2000VBAからの印刷で実行時エラー1004発生
- 2 Excel VBA エラー回避について エクセルファイル検索時にエラーを回避する方法を教えてください
- 3 エクセルVBAで1行単位のデータをテキストファイルに保存時エラーが出ます
- 4 エクセルの起動時に発生するエラー
- 5 エクセルVBAなぜ実行時エラーが?
- 6 エクセル テキスト追加マクロで"実行時エラー"発生
- 7 エクセル2002で、ある列が空白なら、その空白のある行は削除する方法
- 8 エクセル/自動記録VBAが、なぜ実行時エラー?
- 9 EXCEL VBA シートをコピーする時にエラーが発生してしまう件
- 10 VBA DO LOOP Do loopをつかって行を空欄まで見に行き、ある条件の時は行を削除します。
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
回答のつかない質問は「もうえ...
-
5
炎上目的で投稿してまんまと炎...
-
6
指定した文字があった場合、そ...
-
7
喧嘩をしてLINE削除され、 また...
-
8
あなたが自分の中でヒットした...
-
9
もう関わりたくない人がいたらL...
-
10
教えて!goo質問の削除方法
-
11
PDF等の白紙ページ削除方法
-
12
変数を用いて行全体を削除する...
-
13
エクセルVBAで行削除時にエラー...
-
14
SDカード内のデータ削除の仕方
-
15
ワードで画像に埋め込まれたハ...
-
16
YouTubeの初期音量が最大になり...
-
17
【C#】ifと#ifの違い、そして#e...
-
18
(Access)複数条件の重複デー...
-
19
文字列末尾のスペースを削除したい
-
20
Googleの自動翻訳の削除の仕方...
おすすめ情報