Excel VBA質問箱 IV

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

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


4912 / 13644 ツリー ←次へ | 前へ→

【53634】セル内での改行 DONPON 08/1/27(日) 16:37 質問[未読]
【53637】Re:セル内での改行 ichinose 08/1/27(日) 20:40 発言[未読]
【53658】Re:セル内での改行 DONPON 08/1/29(火) 21:50 お礼[未読]

【53634】セル内での改行
質問  DONPON  - 08/1/27(日) 16:37 -

引用なし
パスワード
   はじめまして、DONPONと申します。
初めて投稿させていただきます。

Excelのセル内で改行しようとするとき、通常は、「Alt+Enter」で
できますが、これを「Enter」だけで改行できるように、VBAで作ろうと
思いました。

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$D$4" Then
    Range("$D$4").Select
    SendKeys "{F2}", True
    SendKeys "%{ENTER}", True
  End If
End Sub

上記のように、コードを作ってみました。
セル(D4)で「Enter」を押すだけでセル内で改行されるようになったのですが、
この場合、「Enter」でなくても、セルからフォーカスがなくなると
実行されてしまいます。(「Escape」を押したときのみ、実行されません)

これを「Enter」を押したときだけ、実行されるようにしたいのですが、
TextBoxなどのように、セルでも「KeyPress」や「KeyDown」のような
機能があればいいのですが・・・。

どなたかいい方法を教えていただけないでしょうか?
よろしくお願いいたします。

【53637】Re:セル内での改行
発言  ichinose  - 08/1/27(日) 20:40 -

引用なし
パスワード
   ▼DONPON さん:
こんばんは。

>Excelのセル内で改行しようとするとき、通常は、「Alt+Enter」で
>できますが、これを「Enter」だけで改行できるように、VBAで作ろうと
>思いました。
Excelのインターフェースを敢えて替えるなんてことは
私は、絶対にしませんけどねえ!!
(それなら仕様書でAlt+Enterという仕様をくどいくらい説明します)


当該シートモジュールに
'======================================================
Private Declare Function GetAsyncKeyState Lib _
    "User32.dll" (ByVal vKey As Long) As Long
'========================================================
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range
  For Each rng In Target
   If key_code(13) = 13 Then
     rng.Select
     SendKeys "{F2}", True
     SendKeys "%{ENTER}", True
     End If
   Next
End Sub
'=====================================================
Function key_code(code As Long) As Long
  Dim inkey As Long
  key_code = 0
  inkey = GetAsyncKeyState(code)
  If inkey <> 0 Then key_code = code
End Function

なんてすると、Enterキー改行、
マウスで別のセルの選択やTabでは改行はしません。

参考程度に見てください。

【53658】Re:セル内での改行
お礼  DONPON  - 08/1/29(火) 21:50 -

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

こんばんは。
回答ありがとうございました。参考にさせていただきます。

たしかにExcelの機能を変えるのは邪道なのかもしれません。
ただ、操作をするのが年配の方で、片手の指一本で文字を
入力している現状です。それがあったので、「Alt+Enter」を
してもらうのもちょっと難しいかなと思い、VBAで作ろうと
したのが発端でした。

また何か分からないことがあれば、よろしくお願いします!

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