Excel VBA質問箱 IV

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

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


5499 / 13646 ツリー ←次へ | 前へ→

【50454】SendKeysがうまく動作しない問題について やまP 07/7/26(木) 10:29 質問[未読]
【50456】Re:SendKeysがうまく動作しない問題について Jaka 07/7/26(木) 10:52 発言[未読]
【50465】Re:SendKeysがうまく動作しない問題について やまP 07/7/26(木) 15:26 お礼[未読]
【50459】Re:SendKeysがうまく動作しない問題について Ned 07/7/26(木) 12:52 発言[未読]
【50460】Re:SendKeysがうまく動作しない問題について Ned 07/7/26(木) 12:55 発言[未読]
【50466】Re:SendKeysがうまく動作しない問題について やまP 07/7/26(木) 15:33 お礼[未読]

【50454】SendKeysがうまく動作しない問題について
質問  やまP E-MAIL  - 07/7/26(木) 10:29 -

引用なし
パスワード
   Auto_Open()とSendKeysメソッドを用いて、
Shift+Ctrl+Jを「値を貼り付け」ショートカットにしようと思っております。
ですが、以下のコードを実装してもうまく動作しません。
どこかコード上でおかしいところがあれば教えて頂けますでしょうか?
また、コードが正しい場合、他にどのような原因があるのでしょうか。
よろしくお願いします。

【環境】
OS:Microsoft WindowsXP Professional Version2002 Service Pack2
VBA実装環境:Excel2002 SP3のVBE上にて

【準備】
エクセルの[ツール]>[ユーザー設定]>[コマンド]タブ>[編集]
によって、[編集(E)]>[値の貼り付け(V)]を作成。
("Alt+EV"で値のみ貼り付ける動作がうまく行くことは確認済み)

【コード】
Sub Auto_Open()
  'Shift+Ctrl+Jで、値の貼り付け
  Application.OnKey "+^j", "AS_PasteValue"
End Sub

Private Sub AS_PasteValue()
  '値の貼り付けコマンドを実行
  Application.SendKeys "%ev"
End Sub

【実行結果】
エクセル上で式を持ったセルをコピーして他セルで、"Shift+Ctrl+J"としても何も起こりません。

コードはどこかのWebにあったものを利用しています。
エラーなどは出ておりません。

原因が分からないので、よろしくお願いします。

【50456】Re:SendKeysがうまく動作しない問題につ...
発言  Jaka  - 07/7/26(木) 10:52 -

引用なし
パスワード
   >Application.SendKeys "%ev"
Win2000 & EXL2002SP3 の私の環境では、編集メニューが開くだけでした。

一応、
【38684】貼り付け時、常に値のみ貼り付けにする方法方...を加工

【50459】Re:SendKeysがうまく動作しない問題につ...
発言  Ned  - 07/7/26(木) 12:52 -

引用なし
パスワード
   ▼やまP さん:
こんにちは。横から失礼。
>エクセル上で式を持ったセルをコピーして他セルで、"Shift+Ctrl+J"としても何も起こりません。
ShiftキーとCtrlキーを押しながらSendKeysを実行している状態になってしまっているのでしょう。
ですので、マクロショートカットキーとSendKeysの組み合わせは厳しいのではないでしょうか。
Application.OnKeyでセットされるなら、ShiftやCtrlを使わなければ良いのではないですか?
Jakaさんご指摘の【38684】のように{F12}キーに登録とか。

または、
Sub AS_PasteValue()
  '値の貼り付けコマンドを実行
'  Application.SendKeys "%ev"
  On Error Resume Next
  CommandBars.FindControl(ID:=370).Execute
End Sub
これでできるかも。
できたとして、"Shift+Ctrl+J"を使いたい場合、Application.OnKeyよりも
[マクロ]-[オプション]でショートカットキーを設定した方が良いと思えます。

元々SendKeysを使おうと思われたのは[元に戻す]機能を残したかったからなのですよね?
そうでなければ
On Error Resume Next
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
とすれば良いかもしれませんね。

【50460】Re:SendKeysがうまく動作しない問題につ...
発言  Ned  - 07/7/26(木) 12:55 -

引用なし
パスワード
   あら^ ^;ごめんなさい。
>CommandBars.FindControl(ID:=370).Execute
では元に戻せませんねorz

【50465】Re:SendKeysがうまく動作しない問題につ...
お礼  やまP E-MAIL  - 07/7/26(木) 15:26 -

引用なし
パスワード
   ▼Jaka さん:
>>Application.SendKeys "%ev"
>Win2000 & EXL2002SP3 の私の環境では、編集メニューが開くだけでした。
>
>一応、
>【38684】貼り付け時、常に値のみ貼り付けにする方法方...を加工
Jakaさん>
どうもありがとうございます。
私の場合でも、少し方法を変えると編集メニューが開くだけの状態がありましたが、どうやらShift+「編集メニュー」と同じ扱いになり、
それだと図を編集する時のメニューになってしまうみたいですね。

【38684】で値を貼り付ける方法を参照させて頂きました。
Shiftを使わなければ可能みたいですので、キー割り当てを変えるなど、対処法を考えて見ます。

【50466】Re:SendKeysがうまく動作しない問題につ...
お礼  やまP E-MAIL  - 07/7/26(木) 15:33 -

引用なし
パスワード
   ▼Ned さん:
>▼やまP さん:
>こんにちは。横から失礼。
>>エクセル上で式を持ったセルをコピーして他セルで、"Shift+Ctrl+J"としても何も起こりません。
>ShiftキーとCtrlキーを押しながらSendKeysを実行している状態になってしまっているのでしょう。
>ですので、マクロショートカットキーとSendKeysの組み合わせは厳しいのではないでしょうか。
>Application.OnKeyでセットされるなら、ShiftやCtrlを使わなければ良いのではないですか?
>Jakaさんご指摘の【38684】のように{F12}キーに登録とか。
>
>または、
>Sub AS_PasteValue()
>  '値の貼り付けコマンドを実行
>'  Application.SendKeys "%ev"
>  On Error Resume Next
>  CommandBars.FindControl(ID:=370).Execute
>End Sub
>これでできるかも。
>できたとして、"Shift+Ctrl+J"を使いたい場合、Application.OnKeyよりも
>[マクロ]-[オプション]でショートカットキーを設定した方が良いと思えます。
>
>元々SendKeysを使おうと思われたのは[元に戻す]機能を残したかったからなのですよね?
>そうでなければ
>On Error Resume Next
>Selection.PasteSpecial Paste:=xlValues
>Application.CutCopyMode = False
>とすれば良いかもしれませんね。

Nedさん>
どうもありがとうございます。
確かに、Shiftを押したままでは厳しいみたいです。
おっしゃる通り、マクロで普通に処理してしまうと、Undo(元に戻す)が使えなくなることを避けるために、マクロで処理コマンドを送るだけを行おうと思いました。
ですが、一度処理にマクロを通してしまうと、Undoは結局できないみたいで。

それならば、
>Selection.PasteSpecial Paste:=xlValues
>Application.CutCopyMode = False
で処理して、マクロオプションでキーを割り当てたほうが楽ですね。
参考になりました。

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