|
▼ichinose さん:
>まず、Application.Onkeyがどんなメソッドなのか
>Helpで確認された方がよいです。
>たぶん、勘違いされています。
>> Application.OnKey "{ENTER}", "kizyutu" 'NumKeyのEnterで実行する
>というコードでEnterキーを察知し即kizyutuというプロシジャーを実行する
>わけではありませんよ!!これは、キーに関連付けを設定するコードです。
はい勘違いしてました。inoue さん,ichinose さんありがとうございます。投稿後に考えてみて,Target.RangeのチェンジでApplication.Onkeyが初めて有効になるので一度目はだめなはずだと気づきました。わたくしの仕様の場合Auto_Open()にDelKeyの方だけ入れて対処しようかと考えていました。
>
>それとApplication.Onkeyでは、Changeイベント内で完全にはキーを
>制御できないみたいですよ!!
そうなんですか。参考になります。それに下のは大変興味深いです。VBAをやっとかじれるぐらいになったところなのでC系のは新鮮です。ありがとうございます。
>
>
>新規ブックのThisworkbookのモジュールに
>'============================================================
>Private Declare Function GetAsyncKeyState Lib _
> "User32.dll" (ByVal vKey As Long) As Long
>'==========================================================================
>Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
> If Target.Column = 6 Then
> Select Case key_code
> Case 13
> MsgBox ("kizyutusaimasu")
> Case 46
> MsgBox ("sakuzyosiimasu")
> End Select
> MsgBox "F列です"
> End If
>End Sub
>'===========================================================
>Function key_code() As Long
> Dim inkey As Long
> key_code = 0
> Do While key_code = 0
> inkey = GetAsyncKeyState(13)
> If inkey <> 0 Then
> key_code = 13
> Else
> inkey = GetAsyncKeyState(46)
> If inkey <> 0 Then
> key_code = 46
> End If
> End If
> Loop
>End Function
>
>として、F列に値を入力してEnterキーで確定したり、
>Delキーで削除したりしてみて下さい。
>この二つのキーに反応するはずです。
>
>簡単なテストではうまく作動していますが、
>私もシートチェンジイベントでキーの取得と言うことを
>初めて試してみたので完全に大丈夫かはわかりません。
>(私は、こういう大変な仕様には大概しません・・・)
|
|