アプリ版:「スタンプのみでお礼する」機能のリリースについて

Access VBAでコードを書いています。

最近パソコンを新しいもの買えたのですが、コードを書いていてTabキーを押した際、以前よりカーソルの移動幅がかなり小さくなりました。

1回Tabキーを押したときのカーソル移動幅の変更をしたいのですが、方法がわかりません。
どなたか教えてください。

A 回答 (2件)

Access VBAでは、Tabキーを押したときのカーソルの移動幅を変更するために、以下の手順をお試しください。



Visual Basicエディタを開きます。
モジュールを選択し、コードを編集します。
カーソルの移動幅を変更するためのコードを追加します。
以下に、カーソル移動幅を変更する例を示します。

vba
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Sub ChangeTabWidth()
' Tabキーを押したときのカーソル移動幅を変更する
Const VK_TAB As Long = &H9
Const GWL_WNDPROC As Long = -4
Const WM_KEYDOWN As Long = &H100
Const WM_GETDLGCODE As Long = &H87

Dim hWnd As Long
Dim PrevWndProc As Long

' カーソル移動幅を設定する値(ピクセル単位)
Dim tabWidth As Integer
tabWidth = 20 ' 例として20ピクセルに設定

' 現在のウィンドウプロシージャを取得
hWnd = Application.hWndAccessApp
PrevWndProc = GetWindowLong(hWnd, GWL_WNDPROC)

' ウィンドウプロシージャを変更
SetWindowLong hWnd, GWL_WNDPROC, AddressOf NewWndProc

' ウィンドウプロシージャの新しい定義
Function NewWndProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case WM_KEYDOWN
If wParam = VK_TAB Then
' カーソル移動幅を設定
SendMessage hWnd, WM_GETDLGCODE, 0, ByVal 0&
SetCursorPos(tabWidth, 0)
NewWndProc = 1
Else
NewWndProc = CallWindowProc(PrevWndProc, hWnd, uMsg, wParam, lParam)
End If
Case Else
NewWndProc = CallWindowProc(PrevWndProc, hWnd, uMsg, wParam, lParam)
End Select
End Function
End Sub

上記のコードでは、ChangeTabWidthというサブルーチンを定義し、Tabキーが押されたときにカーソルの移動幅を変更します。tabWidthの値を適宜調整してください。

このコードを実行すると、Tabキーを押したときのカーソル移動幅が設定した値に変更されるはずです。

この方法はAccessのウィンドウプロシージャを変更することで実現しており、他の動作にも影響を与える可能性があります。
注意して使用してください。
    • good
    • 0

ツール→オプション


編集タブにある、「タブ間隔」の数値(移動文字数)を変えてみて下さい。

・・・こういう事を質問されてると解釈しました。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています