• 締切済み

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

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

  • frfr
  • お礼率58% (21/36)

みんなの回答

  • 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

  • Excel のアクティブセルが移動しなくなった。

    Excel2007 を使っています。 突然変な現象が発生して使いにくくなってしまいました。 解決方法を教えてください。 アクティブセルを移動するために方向キーを押したとき、アクティブセルの位置が固定したまま、ワークシート全体が上下左右にスクロールします。 アクティブセルが画面からはみ出して見えなくなっても、方向キーでのスクロールは続きます。 使いにくいので、解決策を教えてください。 よろしくお願いします。

  • エクセルのアクティブセルの移動が方向キーで行えなくなりました。

    エクセルのアクティブセルの移動が方向キーで行えなくなりました。 VistaのExcel2007を使っています。 先ごろまではアクティブセルの移動に方向キーが使えていたと思いますが、いつからか(1ヶ月以内)方向キーではアクティブセルは移動せず表示される範囲が全体的に移動するだけです。 無意識にその様に設定を変えてしまったのかもしれませんが復帰する方法が分かりません。何方かご教示いただければ幸いです。

  • Excel2003 方向キーでアクティブセルの移動ができない

    Excel2003で方向キーを押すと、アクティブセルが動いていましたが、 突然(?)セルの移動ではなくスクロールするようになってしまいました。 どこかの設定をイジってしまったのではないかと思いますが、どこの 設定をイジでば、元のようにアクティブセルの移動ができるようにな るのでしょうか?

  • エクセル マクロ アクティブセル領域を移動させたい

    いつもお世話になっております。 当方マクロ超初心者です。 アクティブセルの大きさは変えずに、 範囲だけを移動させるマクロがつくりたいです。 例えば A1 B1 A2 B2 A3 B3 の6つのセルがアクティブの時に実行すると B3 C3 B4 C4 B5 C5 がアクティブになるマクロを作りたいです。 (この場合だとアクティブセルが 右へ2つ、下へ1つ移動したイメージ) 何卒よろしくお願いいたします。

  • ExelVBAでのアクティブセルの記述

    Excelマクロ初心者です。 今会社で出勤表のマクロを組んでいるのですが、 「アクティブセルが○列にあった場合、アクティブセルを2行下、30列左に移動させ、それ以外だと右に一つ移動」 という構文は、 「If アクティブセルが○列にある Then ActiveCell.Offset(2, -30).Select Else ActiveCell.Offset(0, 1).Select End If」 となると思うのですが、その肝心な「アクティブセルが○列にある」の記述の仕方が分かりません。 どうかご教授ください。

  • 値を入力後、自動的にアクティブセルが移動するマクロ

    (1)エクセルファイルを開けたときのアクティブセルを設定。 (2)そのセルに値を入力後、ENTERで違うセルに移動。  (違うセルは、隣接していない) (3)入力後、ENTERでまた違うセルに移動。 (4)数個のセルに入力後は、任意のセルに値を入力できるようにする。 マクロでできることなのかわかりませんが、 よろしくお願いします。

  • アクティブセルをキーにして並べ替えするマクロ

    EXCEL2003で、ボタンを押すと、「アクティブセルがある列」をキーにして、 降順で並べ替えが実行されるようなマクロを組みたいと考えています。 表自体は、「A1:Z1000」 の範囲でデータがあるのですが、 その内、「D2:Y999」 の部分だけが並び替わるようにしたいのです。 したがって、アクティブセルが、「A列~C列とZ列」の範囲内にあるときは無効で、 「D列~Y列」の中にあるときだけ動作するようにしたいです。 どんなふうに記述すればよいか、教えていただけませんでしょうか? どうかよろしくお願いいたします。

  • inputbox のキャンセルの戻り値について(VBA×エクセル)

    VBA初心者で、ユーザフォームにはまだ手出ししたくなく、INPUTBOXで値を取得しているのですが、 INPUTBOXでキャンセルボタンを押したときに、マクロを終了するように書きたいのですが、どのように記述したらよいのでしょうか? INPUTBOXからはどんな値が返ってきているかわからず、 メッセージボックスで確認してみたのですが、空欄なので、 IF RetIPT ="" then マクロ終了 endif としてみたのですが、「マクロ終了」には進んでくれず... 回答をお願いします~

  • ”アクティブセル行」の一行下を選択”するマクロ

    ■ ”アクティブセルの、1個下の行を選択し、新しい空白行を一行挿入” ■次にその”アクティブセルのA列とB列の値を、  新しく作った空白行に、コピー  ・・・といったマクロを組もうとしております。 たとえば 12行目を選択するプログラム(コマンド?マクロ?)は、  Rows(12:12) となっていたので、それにならって Rows(activecell:B) などとやってみたのですが、うまくいきませんでした。 このような場合、どうしたらよいのかアドバイスをいただけると助かります。 どうぞ、よろしくお願いいたします。  

  • エクセルVBAのInputBoxメソッドについて

    InputBoxメソッド(Application.InputBox)を組み込んだマクロを一度実行させると、キーボードの矢印キーの操作によるスクロール(カレントセルの移動)ができなくなってしまいます。 対処する方法があれば教えてください。(Excel2000)

専門家に質問してみよう