エクセルマクロを実行した後、
マウスを使わずに、
直接いきなりセルへ入力すると、
ツールバーのコマンド選択バー(というのかな?)
が出てきてしまいます。

例えば、
「H」と入力すると、ヘルプのバー。
「F」と入力すると、ファイルのバー。
「E」と入力すると・・・ですね。
にゅーっと出てきてしまうのです。

エクセルマクロの実行内容は、
実行すると、他のファイルを開いて、
閉じるということをやっています。

上記のいう「H」が、
セルへ入力できればいいのですが、
何が原因なのかさっぱりわかりません。

「Application.EnableEvents = ・・・」や
「Application.ScreenUpdating = ・・・」
かな?

誰か対処方法がありましたら、
伝授のほうをよろしくおねがいします。

OS:windows95
ソフト:Excel97

         です。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

VBAの公開ありがとうございました。


これはコピー・貼り付けされたものでしょうか?
手で書き写したとしたら、たぶん外してます。

Prc_opmaster()の中の2行目で

Workbooks("sheet1").Activat

Worksheets("sheet1").Activate
じゃないかなと思います。

エクセル2000だとエラーになります。

では。
    • good
    • 0

#1の方のおっしゃる通りで、なぜか「ALT」が押された状態のようです。



マクロって、VBAのことですよね?
原因を取り除くか、入力したいセルを選択状態にしてしまうというのはどうでしょうか?
Range("C8").Select
(例はC8セルに入力したい場合)

頑張ってくださいね。

この回答への補足

では、おもいきってVBAの中身を、
公開しちゃいます。
みなさんからの意見がいただけますように・・・。

---ここから------------------------------------
Private Sub Workbook_Open()
 Application.ScreenUpdating = False
 Sheets("sheet1").Activate
 Prc_opmaster   '//Bというファイルを開く
 ActiveWindow.Visible = False   '//Bというファイルを非表示

 '(なにかやってます)

 Prc_clsmaster  '//Bというファイルを閉じる
 Application.ScreenUpdating = True
 Range("A1").Select
End Sub

Sub Prc_opmaster()
 Workbooks.Open ("Bというファイルのパス"), ReadOnly:=True
 Workbooks("sheet1").Activate
End Sub

Sub Prc_clsmaster()
 Workbooks("B.xls").Close False
End Sub
---ここまで------------------------------------

「Prc_opmaster」と「Prc_clsmaster」の2つのプロシージャーは、
標準モジュールに記述してあります。

わかっていることは、
Bというファイルを開く処理をすると、
バーがにゅーっと現象が起きてしまいます。
それがなぜだかわからんのです。

こんな補足、大丈夫かな・・・・

補足日時:2001/06/06 10:19
    • good
    • 0
この回答へのお礼

ありがとうございます。
はい、マクロはVBAのことです。

Range("C8").Select
と最後に入れてみたんですけど、
だめですねー。

なんででしょうかねー。

お礼日時:2001/06/06 10:00

多分、「ALT」キーが押された状態になっていると考えられます。

マクロの内容が不明なので、原因は分かりませんが、
一回「ESC」キーを押して入力してみてはどうでしょうか。
多分入力はできるような気がしますが・・・・・
情報不足の感があります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
また情報不足を指摘されてしまった・・・。

「ESC」キー押してみたんですけど、
だめでしたねー。

なんででしょうかねー。

お礼日時:2001/06/06 09:57

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【EXCEL】あるセルにAという値が入力されたら既定範囲にマクロを自動実行したい

「あるセルにAという値が入力されると,既定範囲にマクロを自動実行する」ということはできますか?

たとえばB2に「欠席」という値が入ったらその下のB3~B8までセルを斜線にする.
    C3に「欠席」という値が入ったらその下のC3~C8までセルを斜線にする.

という感じです.マクロサイトもいくつかみたのですが分かりません.お願いします.

Aベストアンサー

#02です。
>結合して斜線1本にしたかったです
結合するならこんな感じでしょう。ざっとしかテストしてませんが…
ただしB3:B8の複数セルに値が入力されていると、先頭セル以外の値は消えてしまいますがよいですね。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r, trg As Range
 Set trg = Intersect(Target, Range("B2:C2"))
 If Not trg Is Nothing Then
  For Each r In trg
   If r.Value = "欠席" Then
    Application.DisplayAlerts = False
    r.Offset(1, 0).Resize(6, 1).Merge
    Application.DisplayAlerts = True
    r.Offset(1, 0).MergeArea.Borders(xlDiagonalDown) _
        .LineStyle = xlContinuous
   Else
    r.Offset(1, 0).Resize(6, 1).MergeCells = False
    r.Offset(1, 0).Resize(6, 1).Borders(xlDiagonalDown) _
        .LineStyle = xlNone
   End If
  Next r
 End If
End Sub

#02です。
>結合して斜線1本にしたかったです
結合するならこんな感じでしょう。ざっとしかテストしてませんが…
ただしB3:B8の複数セルに値が入力されていると、先頭セル以外の値は消えてしまいますがよいですね。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r, trg As Range
 Set trg = Intersect(Target, Range("B2:C2"))
 If Not trg Is Nothing Then
  For Each r In trg
   If r.Value = "欠席" Then
    Application.DisplayAlerts = False
    r.Offset(1...続きを読む

Qあるセルに入力したら実行するマクロの組み方

過去ログで探しきれなかったのでお願いします。
エクセル2003です。
A1に「りんご」と入力するとB1とC1が結合されて「○」と出て
A1にりんご以外の何かを入力すると同じく結合されて「×」とでるマクロの組み方をご教示願います。

どうしても結合させる必要があるので、関数では無理かと思います。
よろしくお願いします。

Aベストアンサー

入力するシートのワークシートモジュールに以下のコードを記述

Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$A$1" Then
    Range("B1:C1").MergeCells = True   'セルの結合
    If Target.Value = "りんご" Then
      Range("B1").Value = "○"
    Else
      Range("B1").Value = "×"
    End If
  End If
End Sub

Worksheet_Changeはワークシートに変更があった際にコールされるマクロでTargetに変更のあったセルです。

Qエクセルでセルに文字が入力されたらマクロを実行

前回どなたかが質問されて回答を見せてもらったら私のやりたいことと同じだったので実行してみましたが出来なかったのでもう一度質問をさせてください。
1.実行したのですが、なにも実行されません。
2.実行したらメッセジBOXだけは実行するのですが、後のコマンドが実行されずにエラーになります。
もう一度詳しく教えてください。
マクロ初心者ですよろしくお願いします。
1.【シートモジュールで条件判定し、マクロを起動する】
通常はこちらの方法が使われます。
Private Sub Worksheet_Change(ByVal Target As Range)
  '変化のあったセルがA1セルか?
  If Target.Address = "$A$1" Then
     '条件判定:A1セルの値は 1 か?
    If Target.Value = 1 Then
      MsgBox "A1セルは条件を満たしました"
    End If
  End If
End Sub
2.【ワークシート上で条件判定し、マクロを起動する】
処理内容にもよっては不向きな場合もありますが、こんな方法も
あります。
マクロを Sub ではなく、Function 、、つまり関数にしてしまいます。
Function TestMacro() '<-- Sub を Function に替える
  MsgBox "A1セルは条件を満たしました"
  TestMacro = "" '戻り値はなし
End Function
そして、ワークシートの B1 セルに次の式を入力します。()は必須
です。
 =IF(A1=1,TestMacro(),"")

前回どなたかが質問されて回答を見せてもらったら私のやりたいことと同じだったので実行してみましたが出来なかったのでもう一度質問をさせてください。
1.実行したのですが、なにも実行されません。
2.実行したらメッセジBOXだけは実行するのですが、後のコマンドが実行されずにエラーになります。
もう一度詳しく教えてください。
マクロ初心者ですよろしくお願いします。
1.【シートモジュールで条件判定し、マクロを起動する】
通常はこちらの方法が使われます。
Private Sub Worksheet_Change(ByV...続きを読む

Aベストアンサー

全てのセルで1が入力されたら実行するには、

>  '変化のあったセルがA1セルか?
>  If Target.Address = "$A$1" Then

この部分を改造します。具体的に言うとコメントアウトしてください。もしくは削除する。これに対応するEnd Ifも忘れずに。

親切にコメントで動作を書いてあるのに無駄なようですね残念です。

Q検索の実行で、ヒットした行のA列の番号を、セルB3に自動入力するマクロ

検索の実行で、ヒットした行のA列の番号を、セルB3に自動入力するマクロを教えてください。
エクセルの6行目から約19000行目まで、A列には1からの番号、B列に薬名、C列に剤形、D列にコードが入力されている薬台帳があるのですが、この台帳から薬名を検索して、最初にヒットしたA列の番号をセルB3に表示したいのです。
どなたかよろしくお願いします。

Aベストアンサー

>標準モジュールに貼り付けたのですが、動いてくれません。

動作しないのは、まるまる提示のコードを実行しようとしているか、あなたの質問に不備があるか、です。
当然のことながら、「What:="薬名"」の"薬名"の部分は検索したい薬名に正確に修正しないとダメです。
それでも動作しないなら、質問に記載されていない事項があるためです。

たとえば、新規ブックに、A6:A10に1から順に番号を振り、B10にでも「薬名」と入れて、提示したコードを貼り付け実行すれば、B3に5と表示されます。やりたいことと違う場合は再度質問を読み直されることをお勧めします。

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報