• 締切済み

ユーザフォームをどの画面からでもショートカットキーで呼ぶ出すには

ユーザフォームをどのActiveブックからでもショートカットキーでユーザーフォーム6を呼ぶ出せるようにしたいのですが、どうしたらよいでしょうか。 下記のマクロでは全く反応がありません。 初心者の質問で申し訳ないのですが、知識をお持ちの方のお力をお借りしたく、投稿させていただきました。宜しくお願いいたします。 Sub ファイル検索 Macro () ' Keyboard Shortcut: Ctrl+q' UserForm6.Show vbModeless End Sub

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

こんな方法は? マクロを Sub ファイル検索 Macro () UserForm6.Show vbModeless End Sub として、VBEを閉じてsheetを表示させ [Alt]を押したまま[T][M][M]の順番でキーを押す ファイル検索 Macroを選択して [Alt]+[O] [Q] [OK]で終了 後は[Ctrl]+[q]でマクロが起動します 以上参考まで

  • Azzz___
  • ベストアンサー率40% (9/22)
回答No.2

こんにちは。 私もExcelが起動したらショートカットキーを使ってフォームではないですが ある機能ができるようにしていますので同じ形でいけると思います。 (私の場合はアドインを使ってExcelが起動したら必ずこのショートカットが有効になるようにしています。) 方法はいくつかあると思いますが、質問者さんのフォームのあるブックが 必ず開かれているという前提ならば そのブックのOpenイベントに記述すれば対応可能かと思います。 Application.OnKey "^{F1}", "ファイル検索 Macro" 上記はF1キーで指定したプロシージャが起動できます。 ちなみにF1キーで割り当てるとExcel2007ではリボンの表示切り替えが無効になります。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

個人用マクロブックPERSONAL.XLSに、ユーザーフォームも作成できます。マクロの自動記録時に、個人用マクロブックへの記録を選択できますので、ショートカットキーもそちらに登録しておけば、どのブックからでも呼び出せます。当然、フォームに関する機能は、PERSONAL.XLSで作り込み、ActiveSheetに対して処理する様なコードにする必要はあります。以上、XL2000に関する知見ですので、2007あたりで通用しなかったら申し訳ありません。 http://allabout.co.jp/gm/gc/3917/

関連するQ&A

  • Excel、マクロの記録、ショートカットキーが使えません

    Excelで下記のようにマクロの記録をしました。 1. Sub 改ページ() '表示-改ページのマクロです。 ' 改ページ Macro ' マクロ記録日 : 2009/11/26 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+a ' ActiveWindow.View = xlPageBreakPreview End Sub 2. Sub 標準() '表示-標準のマクロです。 ' 標準 Macro ' マクロ記録日 : 2009/11/26 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+z ' ActiveWindow.View = xlNormalView End Sub 3. Sub 改ページ範囲() '改ページ範囲を設定するマクロです。 ' 改ページ範囲 Macro ' マクロ記録日 : 2009/11/26 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+q ' ActiveSheet.PageSetup.PrintArea = "$A$1:$P$27" End Sub ここで、1及び2についてはショートカットキーが使えるのですが、 3のショートカットキーを押しても何の反応もありません。 メニューバーのツール-マクロ-マクロのダイアログボックスを表示させてから、 「改ページ範囲」のマクロを選ぶと改ページされます。 そこで質問なのですが、 なぜ、ショートカットキーが使えないのでしょうか? よろしくお願いします。

  • ユーザーフォームの切り替えについて・・・

    UserForm1とUserForm2の2つのユーザーフォームがあります。 UserForm1の中にあるcommandButton1をクリックすると、UserForm2が表示される仕組みになっています。 (ちなみに、UserForm2にもコマンドボタンがあり、クリックするとUserForm1に戻るようになっています) UserForm1の方に、 Private Sub CommandButton1_Click() UserForm2.Show 0 Unload UserForm1 End Sub UserForm2の方に、 Private Sub CommandButton1_Click() UserForm1.Show 0 Unload UserForm2 End Sub と記述してあります。 ところが、それぞれのユーザーフォームには、閉じると同時にブックが閉じるように Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ActiveWorkbook.Save 'ブックを保存 ActiveWorkbook.Close 'ブックを閉じる Application.Quit 'excelを終了 End If End Sub というコードを記述しているため、UserForm1からUserForm2へ移るときにブックが閉じてしまいます。 右上の「×」を押したときだけブックを閉じるようにしたいのですが、どういうコードを書いたらいいのですか? 宜しくお願いします。(*´Д`人)

  • Excelで複数のマクロを一本化する方法

    Macro5とMacro6を組み合わせて下記のような処理をさせたいのですが方法がわかりません。 お知恵をお貸しください。 1 日付を確認する 2 Macro6でコピー 3 日付にあわせてMacro5で貼り付け   今日が1日ならC14から貼り付け   2日ならC25から貼り付け   3日ならC36から貼り付け    ・      ・    ・   31日ならc344から貼り付け 作成したマクロ ' Macro5 Macro ' マクロ記録日 : 2007/4/25 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+r ' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub Sub Macro6() ' Macro6 Macro ' マクロ記録日 : 2007/4/25 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+q ' Range("C2:AD12").Select Selection.Copy End Sub

  • エクセルのユーザーフォームでご教授ください

    マクロの知識はほぼなく、調べながらエクセルの入力用のユーザーフォームを作りましたが、うまく作動しません。 UserForm1 ~~~~~~~~~~~~~~~~~~~~~~~~~ Option Explicit Private Declare Function ReleaseCapture Lib "user32" _ () As Long Private Sub UserForm_Initialize() Me.Show End Sub Private Sub Button_cxl_Click() Me.Hide End Sub Private Sub ok_Click() Dim RowNum As Long Dim Ctrl As Control RowNum = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(RowNum, 1).Value = Me.txt_date Cells(RowNum, 2).Value = Me.txt_guest Cells(RowNum, 3).Value = Me.txt_person Cells(RowNum, 4).Value = Me.txt_begin Cells(RowNum, 5).Value = Me.txt_finish For Each Ctrl In Me.Controls If Ctrl.Name Like "txt*" Then Ctrl.Value = "" RowNum = 0 End If Next Ctrl Me.Hide ReleaseCapture UserForm2.Show vbModal End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~ UserForm2 ~~~~~~~~~~~~~~~~~~~~~~~~~ Option Explicit Private Declare Function ReleaseCapture Lib "user32" _ () As Long Private Sub UserForm_Initialize() End Sub Private Sub ButtonEnd_Click() Unload Me UserForm1.Hide End Sub Private Sub ButtonNext_Click() Unload Me ReleaseCapture UserForm1.Show vbModal End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~ Module1 ~~~~~~~~~~~~~~~~~~~~~~~~~ Sub ユーザーフォーム() UserForm1.Show End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~ UserForm1を開き、Button_cxlで閉じず、もう一度Button_cxlをクリックで閉じる。 UserForm1を開き、Button_okでUserForm2を出し、ButtonEndをクリックでUserForm1にもどる(1と2を数度行き来しても同じ) UserForm1を開き、Button_okでUserForm2を出しButtonNextをクリックでUserForm1にもどりButton_cxlをクリックで閉じず、もう一度クリックしても閉じず、三回目で閉じる。 現状、エクセルを開いた直後のみで発生してます。 一度ユーザーフォームを出し、閉じたあとは意図通り動き、再度エクセルを開くまで発生しません。 ちなみにUserForm2の Private Sub ButtonEnd_Click() Unload Me UserForm1.Hide End Sub 部分の、UserForm1.HideをUnload UserForm1にすると、「オブジェクト変数または With ブロック変数が設定されていません」と出てデバックでModule1の UserForm1.Show が黄色になります。 どこが悪いか教えてください。

  • 複数のユーザーフォームをコマンドボタンにて表示・非表示させるには

    VBA勉強中のものです。 複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。 例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、   コマンドボタン1→ユーザーフォーム1を表示   コマンドボタン2→ユーザーフォーム2を表示   コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。  そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。   どなたか、どのようにしたらいいかご教授ねがいます。 サンプルコード) --------------------------------------------------- 'UserForm1のコード Private Sub CommandButton2_Click() Call UserForm2_show UserForm1.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm1.Hide End Sub ---------------------------------------------------- 'UserForm2のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm2.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm2.Hide End Sub ------------------------------------------------------- 'UserForm3のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm3.Hide End Sub Private Sub CommandButton2_Click() Call UserForm2_show UserForm3.Hide End Sub ------------------------------------------------------------ '標準モジュール コード Sub UserForm1_show() UserForm1.Show End Sub Sub UserForm2_show() UserForm2.Show End Sub Sub UserForm3_show() UserForm3.Show End Sub

  • デバッグモードから回復後にユーザーフォームを開く

    Sub Auto_Open() UserForm1.Show vbModeless End Sub というプログラムを使って、xlsmファイル起動とともに ユーザーフォームが開くように設定してあります。 ところがプログラム実行中にエラーがあったときなどに デバッグモードに入り、その後に回復するとユーザーフォームが自動で閉じられてしまいます。 これを毎回自分で開く必要があるのですが、 デバッグモードから回復後に自動でユーザーフォームを開くようにするにはどうしたら良いでしょうか?

  • ExcelのVBAでフォームが表示されない

    Sub フォーム起動() UserForm1.Show End Sub 上記の内容をModule1にしてショートカットキーをを設定し、いつでも他に作ってあるユーザーフォームが起動するようにしていました。しかし先日、久しぶりに使ってみようと、設定したショートカットキーを押したら、VBAもマクロも全くいじっていないにも関わらず、「UserForm1.Show」の部分で「実行時エラー'380': Valueプロパティを設定できません。プロパティの値が無効です。」とエラーが表示されフォームが起動できません。これはいったい何が原因なのでしょうか。

  • ユーザーフォーム 背景に色が付かない。

    前処理が済んだ時点でuserformを表示し、 本処理に入る方法を教えていただきました。 そして以下のようにコーディングしました。 Sub userformd() 前処理 UserForm1.Show vbModeless 本処理 Unload UserForm1 End Sub 思った通り処理が出来たのですが、 背景に色を付けてみようと、以下のように手を加えたのですが、 色が付きません。 原因と対応法をお教え下さい。 Sub userformd() 前処理 UserForm1.BackColor = RGB(255, 0, 0) UserForm1.Show vbModeless 本処理 Unload UserForm1 End Sub 宜しくお願いします。

  • 隠していたユーザーフォームを再び表示したい

    ExcelVBA をExcel2007で苦戦している初心者です。 マクロ記載のAブックとBブックを使っています。 Aブックのユーザーフォーム「表紙」にあるボタンをクリックして Private Sub CommandButton11_Click() 表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\改善案.xlsm" Sheets(1).Select End Sub Bブック(改善案)に飛び、作業後これを閉じ、Aブックに戻したいです。 Aブックは、まだ閉じてはいません。 同時に、ユーザーフォーム「表紙」を再表示したいです。 Private Sub CommandButton2_Click() Unload UserForm1 Application.DisplayAlerts = False ThisWorkbook.Close Application.DisplayAlerts = True 表紙.show End Sub すると次のエラーが表示され 「コンパイルエラー 変数が定義されていません」 表紙.showの表紙が反転表示されます。 Aブックに戻ったときにユーザーフォーム「表紙」を表示するには どうしたらよろしいでしょうか。よろしくお願いします。

  • Excel VBAで別のブックからユーザーフォームの閉じる

    Excel VBAで別のブックからユーザーフォームの閉じたいのですが うまくいきません。 教えてください。 Private Sub CommandButton2_Click() Application.Visible = False Unload Workbook.("材料リスクマップ検索Ver2.xls")UserForm3・・・・※ Workbooks.Close userform3:=ThisWorkbook.Path & "あああ.xls" Workbooks("\いいい.xls").Close savechanges:=False UserForm1.Show vbModeless End Sub ※印のところが赤字にかわります。 コマンドボタン2は、いいい.xlsにあり、フォームを閉じたいのはあああ.xlsのUserform3です。 その後、ファイル名いいい.xlsは閉じます。 コードが間違っているかと思いますが、どんな風にすればよいかわかりません。初歩的なこととは思いますがよろしくお願い致します。

専門家に質問してみよう