• 締切済み

アクティブセルが移動しない

エクセルでマクロを作成したのですがマクロ実行後にアクティブセルが方向キーで移動しない場合があります。(マウスでクリックするとそこへアクティブセルは移動できますが) マクロにはInputBoxがあり正常に処理が進んだ場合はアクティブセルは移動できますが、キャンセルした場合やマクロで規定した値以外を入力した場合にアクティブセルが移動しなくなります。移動しなくなってもそのファイルを閉じて再度開くと正常にアクティブセルは移動できます。 マクロの記述に問題があるとは思っていますがどうしたら良いかわかりません。どうかご教授ください。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

Wendy02です。 間違いに気がつきました。今回は、数字のみですから、以下のように、IsNumeric が適切でした。 訂正します。お調べください。 '----------------------------------------------------------------------  Dim ret As Variant  Dim myDate As Integer  ret = Application.InputBox(Prompt:="値を入れてください", Title:="タイトル", Default:="", Type:=2)  If Not IsNumeric(ret) Or ret = "False" Then    MsgBox "値が数値でないか、空かキャンセルしました"    Exit Sub  End If   'Integer 型に変換   myDate = CInt(ret)  If myDate >= 1 And myDate <= 31 Then   '  ---処理---   Else   MsgBox "日付が無効です"  End If '----------------------------------------------------------------------

frfr
質問者

お礼

提示していただいた様にやってみましたがやはりアクティブセルが移動しません。勤務先のパソコンでも同じ現象が起きます。せっかくのアドバイスですが解決できませんでした。 ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 実際、私は、もう少し複雑なコードを書きますが、簡単な書き方ですと、以下のようになります。 私の場合は、実際に、日付として通るのかどうかチェックを入れます。例えば、6/31 などはありませんね。また、「"値から空かキャンセルしました"」以外は、本来は、ループして、再び、「"値を入れてください。"」 と出すようにします。 以下のコードでは、ループ になっていないので、InputBox の前で、Start: ~ MsgBox "日付が無効です" の後に、Goto Start などとしますが、これは、あまり一般的ではありません。 Type:1 ですと、何も入れないで、「OK」を押したときに、エラーが返ります。 On Error トラップでは、キャッチできないはずです。 '-----------------------------------------  Dim ret As Variant  Dim myDate As Integer  ret = Application.InputBox(Prompt:="値を入れてください", Title:="タイトル", Default:="", Type:=2)  If ret = "" Or ret = "False" Then    MsgBox "値が空か、キャンセルしました"    Exit Sub  End If   'Integer 型に変換   myDate = CInt(ret)  If myDate >= 1 And myDate <= 31 Then   '  ---処理---   Else   MsgBox "日付が無効です"  End If '-----------------------------------------

  • NCU
  • ベストアンサー率10% (32/318)
回答No.3

再現できませんし、ご提示のコードで特定のキーが無効になるはずもありません。 多分これ以上一歩も進まないと思います。

frfr
質問者

お礼

お礼が遅くなり申し訳ありません。 勤務先のパソコンでも同様の現象が起き解決できませんでした。NCUさんが言われる通り「これ以上一歩も進みません」でした。できればこの解決方法やヒントなどをいただきたかったと思います。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >マクロの記述に問題があるとは思っていますがどうしたら良いかわかりません。 そのマクロの内容を当ててくださいってことかな(^_^;) ただ、一応、マクロの記述に問題があるというなら、それを公開するのは、掲示板の共通のマナーです。自分が、どのような値を入れたときに、こういうコードで、問題が発生する、ということを書いてください。 InputBox は、二種類あって、片方がメソッド、もう片方が関数ですね。それさえ明示していません。 >InputBoxがあり正常に処理が進んだ場合はアクティブセルは移動できますが、キャンセルした場合やマクロで規定した値以外を入力した場合にアクティブセルが移動しなくなります。 エラーが出ていませんか? 'サンプル Sub TestInputBoxes()  Dim ret As Variant    'InputBox関数  ret = InputBox("値を入れてください")  If ret <> "" Then   MsgBox "InputBox関数: " & ret  Else   MsgBox "戻り値が空です。"  End If    'InputBoxメソッド  ret = Application.InputBox("値を入れてください", "Inputメソッド", Type:=2)  If Not (ret = "" Or ret = "False") Then   MsgBox "InputBoxメソッド: " & ret  Else   MsgBox "規定値以外です。"  End If End Sub

frfr
質問者

補足

マクロの概要を示さず大変失礼しました。以下の通りです。 Sub TestInputBoxes() Dim myDate As Variant myDate = Application.InputBox(Prompt:="値を入れてください", Title:="タイトル", Default:="",Type:=1)  If myDate >= 1 and myDate <=31 Then   ---処理---  Else   MsgBox "日付が無効またはキャンセルしました"  End If End Sub

noname#187541
noname#187541
回答No.1

こんばんは。 マクロに問題があると思うなら、そのマクロを提示するべきでは? キャンセルや規定以外の値を入力した場合の処理はどうなっているのでしょうか?

関連するQ&A