KeyDownイベントでTABの仮想KEYコードを取得する方法を教えてください。

A 回答 (1件)

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)


 If KeyCode = vbKeyTab Then
  MsgBox "TAB押したよ!"
 End If
End If
ってことでしょうか?


API使うなら、
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Public Function TabOn() As Boolean
 If GetAsyncKeyState(vbKeyTab) <> 0 Then
  TabOn = True
 End If
End Function
って感じかな。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q文字コード変換で文字コード取得

文字コードと改行コードを変更するマクロなのですが今のコードだと
読み込み元の文字コードがUTF-8のLFでないと正しい形で取り込むことができません。
そこで文字コードがUTF-8か改行コードがLFの時という条件を組みたいのですが色々試したのですができません
皆様のお力をおかしください。

Sub UTF8_LF→SJIS_CRLF()

Dim strFilePath As String
Dim objReadStream As Object
Dim objWriteStream As Object
Dim bytData() As Byte

Const adTypeText = 2
Const adTypeBinary = 1
Const adReadLine = -2
Const adWriteLine = 1
Const adLF = 10
Const adCRLF = -1
Const adSaveCreateOverWrite = 2
Dim opnFile As Variant
Dim fFilter As String
Dim i As Integer

fFilter = "xml Files ,*.xml"
opnFile = Application.GetOpenFilename(FileFilter:=fFilter, MultiSelect:=True)
If IsArray(opnFile) Then
For i = 1 To UBound(opnFile)
strFilePath = opnFile(i)

Set objReadStream = CreateObject("ADODB.Stream")
Set objWriteStream = CreateObject("ADODB.Stream")

' 読み込み元(Shift_JIS,CRLF)
With objReadStream
.Open
.Type = adTypeText
.Charset = "UTF-8"
.LineSeparator = adLF
.LoadFromFile strFilePath
End With
' 書き込み先(UTF-8,LF)
With objWriteStream
.Open
.Type = adTypeText
.Charset = "Shift_JIS"
.LineSeparator = adCRLF
End With

' 1行ずつ変換
Application.DisplayStatusBar = True 'ステータスバーの表示
Application.StatusBar = Dir(opnFile(i)) & "を取得中・・・" 'ステータスバーに文字列表示
Do Until objReadStream.EOS
objWriteStream.WriteText objReadStream.ReadText(adReadLine), adWriteLine
Loop
Application.StatusBar = False 'ステータスバーの制御を通常に戻す
objReadStream.Close

With objWriteStream
.Position = 0
.Type = adTypeBinary
.Position = 0
bytData = .Read
.Close

.Open
.Position = 0
.Type = adTypeBinary
.Write bytData
.SaveToFile strFilePath, adSaveCreateOverWrite
.Close
End With

Next

Else
MsgBox "キャンセルしました"
End
End If

宜しくお願いします。

文字コードと改行コードを変更するマクロなのですが今のコードだと
読み込み元の文字コードがUTF-8のLFでないと正しい形で取り込むことができません。
そこで文字コードがUTF-8か改行コードがLFの時という条件を組みたいのですが色々試したのですができません
皆様のお力をおかしください。

Sub UTF8_LF→SJIS_CRLF()

Dim strFilePath As String
Dim objReadStream As Object
Dim objWriteStream As Object
Dim bytData() As Byte

Const adTypeText = 2
Const adTypeBinary = 1
...続きを読む

Aベストアンサー

こんにちは。

ご自身のコードだと思いますから、少しのアドバイスすればお分かりになると思います。
 .xml ファイル自体は、テキストファイルですから、一行目のencodingを読んで判定させればいいのではありませんか。LF がセパレータになっているかは、同じくLF 検索すればよいのではありませんか。

QAccessで差分取得する方法は? LEFT JOIN エラー

Accessで差分抽出するSQLを教えてください。

【旧テーブル】t1
id, class, number, value
1, "a", 1, "aka"
2, "a", 2, "aki"
3, "a", 3, "aku"

【新テーブル】t2
id, class, number, value
1, "a", 1, "aka"
2, "a", 2, "更新"
3, "a", 3, "aku"
4, "a", 4, "新規"
5, "b", 1, "新規"

【ダメだったクエリ】
SELECT t2.*
FROM t2 INNER JOIN t1
WHERE t1.class IS NULL OR t1.number IS NULL

【望む結果】
4, "a", 4, "新規"
5, "b", 1, "新規"

*列 id は各テーブルの主キーですが、新旧テーブル間の関連はありません(リレーションではありません)。

Aベストアンサー

また違ってましたね。

SELECT T2.*
FROM T2 LEFT JOIN T1 ON T2.number = T1.number AND T2.class = T1.class
WHERE T1.class Is Null OR T1.number Is Null

QYes・Noで表示するメッセージで、Yesの場合はコードを実行するので

Yes・Noで表示するメッセージで、Yesの場合はコードを実行するのですが、
Noの場合にも「完了」が最後に表示されてしまいます。
Noの場合は何もなく終了したいのですが、どのようにしたらいいでしょうか?


Sub test()

Dim i As Long, r As Long
Dim SH As Worksheet
Dim ans As Integer


Set SH = Sheets("シート")
ans = MsgBox("入力年月日、入力担当は正しいですか?", vbYesNo)
If ans = vbYes Then

実行コードfor ~Next

  End If


MsgBox "完了"

End Sub

Aベストアンサー

MsgBox "完了" をIf文の最後に入れる


If ans = vbYes Then

実行コードfor ~Next

MsgBox "完了"
End If

QこのサイトでVBAコードのインデントを反映させる方法?

いつもお世話になっております。

このサイトでVBAの質問をよくさせていただいております。
今回、疑問に思ったのは、自分で書いたコードをVBEからここにコピペすると、入っているはずのインデントがすべて消えてしまっているということです。
他の方の投稿を見るとやはり同じように消えているものや、ちゃんとはいっているものもあります。

どうやったら、インデントを反映させることができるのでしょうか?

Aベストアンサー

こんにちは。

>今回、疑問に思ったのは、自分で書いたコードをVBEからここにコピペすると、入っているはずのインデントがすべて消えてしまっているということです。

古くからやっている人は知っているのですが、「全角空白」を入れているのです。
私の場合は、正規表現で、半角空白を一定の決まりで、置換しています。(内容的にはエディタのマクロです)ただ、半角空白が消えているわけではないようです。

本来は、必要ないのですけれどね、長い慣習のようですね。それに、これは、VB/VBA独特の仕様だと思います。これは、他の言語では、厳禁ですから、気をつけたほうがよいです。それに、VBAの親戚のVBScript でも、エラーをはきますし、他の言語ではハングします。

QWORD2000 TABキーについて

TABキーを押すと、15mmずつ字下げされますが、SHIFT+TABで解除できないパソコンがあります。
設定があるのでしょうか? ご教授お願いします。

Aベストアンサー

TABキーを押すと、15mmずつ字下げされるのは、Wordの規定値です。
「書式」-「タブとリーダー」で数値を変えれば字下げの位置を変更できます。
規定値を「0」にすればTABキーを押しても字下げされません。

また、TABキーで字下げされたものはBS(Back Space)キーを押せば元に戻ります。

TABの位置はルーラーを使って設定できます。
文字だけで説明するのは難しいので参考URLの図を参照してください。

参考URL:http://www.suzugamine.ac.jp/~ueda/manual/word/text_layout.html,http://www.mccoy.jp/chie/zaitaku/word_dshosiki.html


このカテゴリの人気Q&Aランキング

おすすめ情報