• ベストアンサー

エクセルVBA これってバグ??

エクセルVBAで下記のような文章を作っています。 Dim r As Range On Error Resume Next Set r = Application.InputBox("クリック", "セル", Type:=8) r.EntireRow.Delete これで任意のセルをクリックすると、きちんとそのセルの行がデリートされるのですが、上下にスクロールを一回でもかけると、まったく動いてくれなくなります。 これって解消方法とかありますか??

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.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

nanny
質問者

お礼

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

その他の回答 (7)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.7

#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 でも同じエラーが出ますか? 新規ブックでも上記の流れでエラーが出るならお手上げです。

nanny
質問者

補足

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

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.6

#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

nanny
質問者

補足

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

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.5

#4です。 Excel2003が無いので、検証出来ないのですが。 > 上下にスクロールした後はエラーでとまってしまいます。 エラーメッセージの内容は?

nanny
質問者

補足

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

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

何やら見覚えのあるコードです。(^-^) コード自体には特に問題無いと思いますが、、、 InputBoxを表示中にスクロールさせると動かなくなるでしょうか? On Error Resume Next に'を付けてコメントアウトしたらエラーになる? 'On Error Resume Next Excelのバージョン? ボタンは何処に置いている? ボタンはコントロールツールボックスのボタン? それとも、表示-ツール-フォームのボタン? ボタンからの呼び出し方は? 呼び出し部分も含めて全文掲載した方が良いでしょう。

nanny
質問者

補足

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

  • ryoppemag
  • ベストアンサー率15% (15/96)
回答No.3

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

nanny
質問者

補足

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

回答No.2

前後のやり取りが不明ですのでなんともいえませんが その命令が発生するイベントのタイミングの問題ではないでしょうか?

nanny
質問者

補足

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

  • ryoppemag
  • ベストアンサー率15% (15/96)
回答No.1

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

nanny
質問者

補足

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

関連するQ&A