Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


604 / 13645 ツリー ←次へ | 前へ→

【79473】セルにマクロ登録 SANO 17/10/25(水) 17:52 質問[未読]
【79475】Re:セルにマクロ登録 γ 17/10/25(水) 21:28 発言[未読]
【79476】Re:セルにマクロ登録 γ 17/10/26(木) 7:28 発言[未読]
【79477】Re:セルにマクロ登録 SANO 17/10/26(木) 8:29 お礼[未読]
【79478】Re:セルにマクロ登録 マルチネス 17/10/26(木) 9:37 発言[未読]
【79481】Re:セルにマクロ登録 マナ 17/10/26(木) 19:00 発言[未読]
【79482】Re:セルにマクロ登録 γ 17/10/26(木) 20:58 発言[未読]
【79483】Re:セルにマクロ登録 γ 17/10/27(金) 6:55 発言[未読]
【79484】Re:セルにマクロ登録 SANO 17/10/27(金) 8:42 お礼[未読]

【79473】セルにマクロ登録
質問  SANO  - 17/10/25(水) 17:52 -

引用なし
パスワード
   長文失礼します。
コマンドボタンで実行していたマクロを任意のセルで実行したいです。
下記はsheet1のB8に入力した数値でsheet4を印刷するマクロです。
※5枚以上印刷はメッセージボックスが出ます
このマクロをsheet1のB10を印刷ボタンとしてEnter押した時に実行などできますでしょうか?
ご教示の程宜しくお願いいたします。

Sub 印刷()

With Sheets("Sheet1")
If .Range("B8").Value > 5 Then
If MsgBox("枚数を確認してください" & _
vbLf & "続けますか?", vbYesNo) = vbNo Then
Exit Sub
End If
End If
Sheets("Sheet4").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=.Range("B8").Value, Copies:=1
End With
Application.Goto Sheets("Sheet1").Range("B6")

End Sub

ちなみにsheet1のモジュールに下記の構文をいれましたが、
B10に数値入力しEnterを押すと上記のマクロは作動しました。
B8入力のB10で印刷したいです。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B10")) Is Nothing Then Exit Sub
If IsNumeric(Target) Then
Worksheets("Sheet4").PrintOut Copies:=Target.Value

End If
End Sub

【79475】Re:セルにマクロ登録
発言  γ  - 17/10/25(水) 21:28 -

引用なし
パスワード
   ダブルクリックまたは右クリックをトリガーとした
イベントプロシージャを使うのが一般的だと思います。

【79476】Re:セルにマクロ登録
発言  γ  - 17/10/26(木) 7:28 -

引用なし
パスワード
   セルにマクロを登録することはできませんが、
それができたとしても、
発生する副作用(意図せざる印刷が発生してしまう)や、
そのことをユーザーが認知しているか、
といったことを考えるべきでしょう。

その点で、ボタンが最善だし、なぜボタンでは駄目なのか理解に苦しみます。

なお、マルチポストと知らずに、最初の回答をしましたが、
こうしたこともきちんと理解したうえで利用してください。

こちらのサイトの基本方針を読んで下さい。
> マルチポストについて
> 別のサイト(掲示板)にまったく同じ目的の投稿をすることを、
> 一般に「マルチポスト」といいます。当質問箱では、マルチポストは
> 原則認めています。つまり、ほかのサイトで質問したことをこのサイトで
> 質問してもかまわないということです。
>
> しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を
> 出しました」ということを宣言してください。
> そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を
> 書いてください。質問しっぱなし、というのはモラルに反します。
> 「解決したからいいや」というのではありません。
>
> また、マルチポストを明示的に禁止しているサイトとのマルチポストを
> してはいけません。
サロンはマルチポストを禁止していますから、ここで同じ発言してはいけません。

こちらを放置しないようにしてください。
人間性が問われますよ。(大げさか)

【79477】Re:セルにマクロ登録
お礼  SANO  - 17/10/26(木) 8:29 -

引用なし
パスワード
   マルチポスト失礼しました。
サロンは削除の仕方がわからなかったので解決済みとしました。

なぜボタンではダメなのかと言いますと。
マウスを使わずエンターのみで操作をしたいからです。
セル、ボタンのロックを外してシート保護をしてもセルからボタンにはカーソルが飛びませんでした。

何か他の方法を考えます。

回答ありがとうございました

【79478】Re:セルにマクロ登録
発言  マルチネス  - 17/10/26(木) 9:37 -

引用なし
パスワード
   サロンの方が解決済みになっているとは言い難い。
回答者へのお礼やマルチポストの謝罪が全くなされていない。
平気なのか?

回答が付いているのに削除しようとすることも考えられない。

【79481】Re:セルにマクロ登録
発言  マナ  - 17/10/26(木) 19:00 -

引用なし
パスワード
   ▼SANO さん:

>なぜボタンではダメなのかと言いますと。
>マウスを使わずエンターのみで操作をしたいからです。
>セル、ボタンのロックを外してシート保護をしてもセルからボタンにはカーソルが飛びませんでした。

わたしは、あまり便利に思いませんが
Acceleratorプロパティは使えませんか。

【79482】Re:セルにマクロ登録
発言  γ  - 17/10/26(木) 20:58 -

引用なし
パスワード
   >マウスを使わずエンターのみで操作をしたいからです。

であれば、
その印刷マクロにショートカットキーを関連づければ、
キー操作だけでマクロの起動ができますが。

ところで、
その印刷は、それほどの頻度と迅速性が求められているんですか。
キー操作で高速に指示を出さないと、時期を逸してしまうのでしょうか。

【79483】Re:セルにマクロ登録
発言  γ  - 17/10/27(金) 6:55 -

引用なし
パスワード
   どうしても、文字通り、Enterキーが押されたことを認識させる必要がある、
ということなら、それは可能ではあるでしょう。
GetAsyncKeyStateをキーワードにして検索してみて下さい。

ただし、Enterキーを察知して、特定条件を満たしたら印刷を実行したいなら、
入力されたキーを絶えず監視するコードを走らせる必要があります。
(組込のイベントプロシージャとは違いますから)
Excelは、そのコードの実行のためだけに資源が使われますから、
ほかの処理はそっちのけということになります。

喩えれば、人が息を吸ったときに、何かのチェックをさせるようなもので、
ありふれていることだけに、24時間、息を吸ったかどうかを監視し続けるので、
人はろくなことができません。ノイローゼになります。それと同じです。

むろん、監視コードの開始と終了をユーザーから指示させれば、
四六時中の監視は不要になりますが、
印刷の指示は省けても余計なことが増えて、
かえって手間がかかることになります。

頻繁には起きることのない印刷なんですから、
ボタンを押すとか、特定セルへの入力(Changeイベントでキャッチ)くらいのことは、甘受してはどうでしょうか。

【79484】Re:セルにマクロ登録
お礼  SANO  - 17/10/27(金) 8:42 -

引用なし
パスワード
   ご回答ありがとうございます。

GetAsyncKeyStateをキーワードですね。
勉強してみます。

ところでエンターで完結したい理由なのですが、大した理由ではありません。
以前は誰かが作成したaccessの印刷するフォームを使用しているのですが、
そのPCが不調となりました。
空いているPCのofficeにはaccessが入って無く…仕方なく触った事の無いマクロで作成してみました。
なんとか同じように印刷できるようになったのですが、最後の印刷ボタンがコマンドボタンなのでマウスを使うため今回の質問となりました。

入力確認の為に一旦手を話してマウス使用もよいですね。


ご丁寧に回答ありがとう御座いました。
またマルチポストでもご迷惑をお掛けしました。

604 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free