Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Home Premium : Excel 2010)
SendKeyが動作しない
投稿日時: 20/08/09 12:23:55
投稿者: shimoichimabu

セルA1に入力規則を設定しています。
ドロップダウンリストにA、B、Cという文字が選択できるようにしています。
ファイルを開くとき、ドロップダウンリストを出し、リストの2番目の
Bを選択するという設定で、ThisWorkbookにコードを作成してみました。
このコードはあくまでもSendkeyの動作を確認したく、作成したものです。
結果ですが、MsgBox "WW"でいったんコードを止めてから実行すると、
ドロップダウンリストが表示されます。しかし、MsgBox "WW"がないと、
SendKeyコマンドは実行されません。また、ドロップダウンリストで
カーソルを下に下ろすことができませんでした。
以上のことから、
 
1. Workbook_Open内では MsgBox "WW" のように一旦コードを止めないと実行されない。
2. SendKeys "{DOWN}"はドロップダウンリスト内では動作しなく、セルに限定される
 
という理解で宜しいでしようか?
あるいは、何か回避策があるのでしようか?
 
Public WSH As Object
 
Private Sub Workbook_Open()
 
    Set WSH = CreateObject("WScript.Shell")
   
    Range("A1").Activate
   
    MsgBox "WW" ← ダミーで挿入
 
   ThisWorkbook.WSH.SendKeys "%{DOWN}", True
         
        DoEvents
    Application.Wait Now + TimeValue("0:00:01")
     
    ThisWorkbook.WSH.SendKeys "{DOWN}", True
     
        DoEvents
    Application.Wait Now + TimeValue("0:00:01")
     
    ThisWorkbook.WSH.SendKeys "{DOWN}", True
              
End Sub

回答
投稿日時: 20/08/09 12:46:47
投稿者: simple

本当に実行できたんでしょうか?
ThisWorkbook.WSH.SendKeys "%{DOWN}", True
の行でエラーになるはずです。
 
Workbookオブジェクトは、WSHなどというメソッドもプロパティも感知しないですよ。
あんまり適当なこと書かないで下さい。
 
Application.SendKeys で十分では?
それが機能せず、WSH.SendKeysしか機能しないという理由があるんでしょうか?

回答
投稿日時: 20/08/09 12:59:46
投稿者: simple

あなたが質問された前のスレッド
「入力規則のリストボックスの操作」
https://www.moug.net/faq/viewtopic.php?t=79593
で、リスト表示中は、セルの編集中と同じであろうからマクロは動作しない、
と言う話じゃなかったですか?
 
そもそも、Bという選択肢が予め決まっているなら、
A1セルの.ValueプロパティにBを直接書き込めばいいだけです。

投稿日時: 20/08/10 12:09:59
投稿者: shimoichimabu

simple さんいつもお世話になっております。
 
>本当に実行できたんでしょうか?
>ThisWorkbook.WSH.SendKeys "%{DOWN}", True
>の行でエラーになるはずです。
エラーまでは出ませんでした。
再度、実行したら、実行されず、スルーされています。確認不足でした。
昨日は実行(ドロップダウンリストが開く)されたのに????? SendKeysは不安定?
 
>Application.SendKeys で十分では?
Application.SendKeys "%{DOWN}"で実行したところ、
上記と同様にスルーされました。
 
>リスト表示中は、セルの編集中と同じであろうからマクロは動作しない、
>と言う話じゃなかったですか?
確かに、おっしゃる通りでした。
 
私の頭の中で、いったん整理してみます。
一旦、閉じさせてもらいます。
simple さん、大変失礼しました。