重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

エクセルVBAで下記のような文章を作っています。

Dim r As Range

On Error Resume Next

Set r = Application.InputBox("クリック", "セル", Type:=8)

r.EntireRow.Delete

これで任意のセルをクリックすると、きちんとそのセルの行がデリートされるのですが、上下にスクロールを一回でもかけると、まったく動いてくれなくなります。

これって解消方法とかありますか??

A 回答 (8件)

#4です。



新規ブックで問題ないなら、既存のブックに何らかの原因があるのでしょうね。
ブックが壊れかかっている可能性も含めて。

InputBox は Type に 8 を指定した場合 Range オブジェクトを返すのですが、実行時エラー 424 は InputBox が Range オブジェクトを返して来なかった場合に起こるようです。(例えばキャンセルした場合等)

InputBoxを使って、下記のようにすると通常は選択したセルの値がメッセージ表示されます。
これで選択したセルの値を表示しない場合は InputBox の戻り値がおかしい事になります。

Sub ボタン1_Click()
 MsgBox Application.InputBox("クリック", "セル", Type:=2)
End Sub

また、これは多分ダメでしょうが、変数に Set しないで試してみるとか、、、

Sub ボタン2_Click()
'On Error Resume Next
 Application.InputBox("クリック", "セル", Type:=8). _
            EntireRow.Delete
End Sub
    • good
    • 0
この回答へのお礼

いろいろとお返事ありがとうございました
結構色々やってみたのですが、いまいちシックリくる物が出来ませんでした;;
また別な方法も考えてみます、長々とお付き合いありがとうございました。
また、乗せることがあるかと思いますのでよろしくお願いいたします。

お礼日時:2004/07/05 17:17

#4です。



謎ですね。再現出来ません。
パソコンショップの展示用PCのExcel-XP(だと思う)でちょっとだけ試した感じでも問題なさそうだったし、、、

1.シートに表示-ツールバー-フォームのボタンを置く。
2.ボタンを右クリックしてマクロの登録を選び、ダイアログの新規作成ボタンを押す。
3.出てきた Sub ボタン1_Click() にマクロを書く。

Sub ボタン1_Click()
Dim r As Range
'On Error Resume Next
  Set r = Application.InputBox("クリック", "セル", Type:=8)
  r.EntireRow.Delete
End Sub

4.上記でシートに置いたボタンをクリック
5.InputBoxが表示される
6.シートをスクロールする(マウス or スクロールバー)
7.セルをクリックする
8.InputBoxにクリックしたセルのアドレス($A$100など)が表示される
9.InputBoxのOKボタンを押す
10.「実行時エラー'424'オブジェクトが必要です」が出る。

この流れですよね?
この流れでエラーが出るなら、以前の質問は確か Insert だったと思うけど、Insert でも同じエラーが出ますか?

新規ブックでも上記の流れでエラーが出るならお手上げです。

この回答への補足

早速試してみました、新規ブックに入力した場合問題なく動くんですけど、現在既存の表に新しいボタンを作って、上記を入力した場合、424のエラーが出ます・・・
不思議なこともあるもんですね・・・
また、別な方法も考えてみますので、もし何かいい方法があるのでしたら、ぜひ教えてくださいね。
とりあえずあと何日か、閉めないで置いておくので・・・
それでは長々と、お付き合いありがとうございました。

補足日時:2004/06/30 10:01
    • good
    • 0

#4です。



ActiveCell.Activate
これを入れてみたらどうでしょう?

Sub Test()
Dim r As Range
On Error Resume Next
 Set r = Application.InputBox("クリック", "セル", Type:=8)
 ActiveCell.Activate 'これを入れてみたら?
 r.EntireRow.Delete
End Sub

この回答への補足

お返事ありがとうございます。
早速試してみましたが、だめでした;;
ActiveCell.Activateを入れてみましたが、現状と変わらず、スクロールするとやっぱり、反応しなくなります;;

補足日時:2004/06/29 13:13
    • good
    • 0

#4です。



Excel2003が無いので、検証出来ないのですが。

> 上下にスクロールした後はエラーでとまってしまいます。

エラーメッセージの内容は?

この回答への補足

またまた遅くなっちゃいました;;
ほんとに申し訳ないです。
エラーの件ですが、インプットボックスが出た後にスクロールしてセルをクリック後OKボタンでエラーが発生します。
エラーメッセージが
実行時エラー'424'
オブジェクトが必要です
とでます。
デバックボタンを押すと
Set r = Application.InputBox("クリック", "セル", Type:=8)  のところで黄色くなって止まってます。
なにとぞご返答のほどよろしくお願いいたします。

補足日時:2004/06/28 08:45
    • good
    • 0

何やら見覚えのあるコードです。

(^-^)

コード自体には特に問題無いと思いますが、、、

InputBoxを表示中にスクロールさせると動かなくなるでしょうか?

On Error Resume Next に'を付けてコメントアウトしたらエラーになる?

'On Error Resume Next

Excelのバージョン?
ボタンは何処に置いている?
ボタンはコントロールツールボックスのボタン?
それとも、表示-ツール-フォームのボタン?
ボタンからの呼び出し方は?

呼び出し部分も含めて全文掲載した方が良いでしょう。

この回答への補足

お返事遅くなりませてすいません。その節はお世話になりました。
'On Error Resume Nextをつけると普通にクリックしたときは、きちんと動くのですが、上下にスクロールした後はエラーでとまってしまいます。
バージョンはエクセル2003です。
ボタンは表の右側につけています。
ボタンは表示→ツール→フォームのボタンです。
呼び出し方は ボタン右クリックしてマクロの登録のところに、登録しました。

補足日時:2004/06/25 09:49
    • good
    • 0

#1です


>これで任意のセルをクリックすると、きちんとそのセルの>行がデリートされるのですが、上下にスクロールを一回で>もかけると、まったく動いてくれなくなります。

上下にスクロールをかけるタイミングは?

この回答への補足

お返事遅くなっちゃいました。すいません。
スクロールさせるタイミングは、ボタンからマクロ発動→インプットボックスが出る→スクロール
これで どのセルをあわせてもその後の反応はないんです;;

補足日時:2004/06/25 09:40
    • good
    • 0

前後のやり取りが不明ですのでなんともいえませんが



その命令が発生するイベントのタイミングの問題ではないでしょうか?

この回答への補足

前はSub()で、後ろがEnd Sub しかないという簡単な文章なんですが・・・
タイミングといっても、ボタンを作成して、それに上記VBAを貼り付けているという形です。

補足日時:2004/06/23 18:19
    • good
    • 0

最後に


Msgbox Error.Description
でエラー内容を出してみたらどうでしょう?

この回答への補足

エラーもまったくでないです;;

補足日時:2004/06/23 17:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!