回答編集履歴

4

コード追記

2020/11/17 13:48

投稿

hatena19
hatena19

スコア34075

test CHANGED
@@ -22,22 +22,98 @@
22
22
 
23
23
 
24
24
 
25
- ントロ配置て初期状態ままならタブキで次ントロールへフォーカスが移動します。
25
+ マルチページにテキストボックスが多数あると同じコー繰り返記述することになるクラスモジュルを使ってイベント共通化をすると、イベントを一か所に記述するだけですみます。
26
-
27
- どこかで初期値から変更しているのだと思います。
28
26
 
29
27
 
30
28
 
31
- ユーザーフォームのモジュール
29
+ クラスモジュールを挿入して、オブジェクト名を、`exTextBox` します。
32
30
 
33
- `TextBox1.TabKeyBehavior = True`
31
+ そこに下記のコードを記述します。
34
32
 
33
+ ```vba
34
+
35
+ Option Explicit
36
+
35
- というコードがあったらこれを削除してください。`TextBox1` というのは実際のテキストボックスの名前です。
37
+ Private WithEvents TB As MSForms.TextBox
36
38
 
37
39
 
38
40
 
39
- または、TextBox1_KeyDownイベントでタブキーを無効にしているかもしれませんので、TextBox1_KeyDown というプロシージャがないか確認してみてください。
41
+ Public Sub SetCtrl(new_ctrl As MSForms.TextBox)
42
+
43
+ Set TB = new_ctrl
44
+
45
+ End Sub
40
46
 
41
47
 
42
48
 
49
+ Private Sub TB_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
50
+
51
+ If Shift = 2 And KeyCode = vbKeyTab Then 'Ctrl+Tabキーのとき
52
+
53
+ KeyCode = 0
54
+
55
+ With TB.Parent.Parent 'テキストボックスの親(Page)の親(MultiPage)
56
+
57
+ If .Value = .Pages.Count - 1 Then '最終ページなら
58
+
59
+ .Value = 0
60
+
61
+ Else
62
+
63
+ .Value = .Value + 1
64
+
65
+ End If
66
+
67
+ End With
68
+
69
+ End If
70
+
71
+ End Sub
72
+
73
+ ```
74
+
75
+
76
+
77
+ ユーザーフォームのモジュール
78
+
79
+ ```vba
80
+
81
+ Option Explicit
82
+
83
+
84
+
43
- あるいはほかのコントロールの Tabstop False になっていたらTrueに変更してください。
85
+ Private TBCol As Collection 'exTextBoxクラス格納用コレクション
86
+
87
+
88
+
89
+ Private Sub UserForm_Initialize()
90
+
91
+ Set TBCol = New Collection
92
+
93
+
94
+
95
+ Dim myCtrl As Control
96
+
97
+ Dim myObj As exTextBox
98
+
99
+ For Each myCtrl In Me.Controls
100
+
101
+ If TypeName(myCtrl) = "TextBox" And TypeName(myCtrl.Parent) = "Page" Then
102
+
103
+ Set myObj = New exTextBox
104
+
105
+ myObj.SetCtrl myCtrl
106
+
107
+ TBCol.Add myObj
108
+
109
+ End If
110
+
111
+ Next
112
+
113
+ End Sub
114
+
115
+ ```
116
+
117
+
118
+
119
+ 以上です。

3

説明追加

2020/11/17 13:48

投稿

hatena19
hatena19

スコア34075

test CHANGED
@@ -1,3 +1,27 @@
1
+ マルチページ(MultiPage1)の1ページ目にテキストボックス(TextBox1)があるのなら、KeyDownイベントに下記のように設定すればいいでしょう。すべてのテキストボックスにこのようにKeyDownイベントを設定します。(MultiPage1.Value=0 で1ページ目選択になります。)
2
+
3
+
4
+
5
+ ```vba
6
+
7
+ Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
8
+
9
+ If Shift = 2 And KeyCode = vbKeyTab Then
10
+
11
+ KeyCode = 0
12
+
13
+ Me.MultiPage1.Value = 1
14
+
15
+ End If
16
+
17
+ End Sub
18
+
19
+ ```
20
+
21
+ ---
22
+
23
+
24
+
1
25
  コントロールを配置して初期状態のままなら、タブキーで次のコントロールへフォーカスが移動します。
2
26
 
3
27
  どこかで初期値から変更しているのだと思います。

2

説明の改善

2020/11/17 02:19

投稿

hatena19
hatena19

スコア34075

test CHANGED
@@ -12,4 +12,8 @@
12
12
 
13
13
 
14
14
 
15
+ または、TextBox1_KeyDownイベントでタブキーを無効にしているかもしれませんので、TextBox1_KeyDown というプロシージャがないか確認してみてください。
16
+
17
+
18
+
15
19
  あるいはほかのコントロールの Tabstop が False になっていたらTrueに変更してください。

1

誤字修正

2020/11/17 01:10

投稿

hatena19
hatena19

スコア34075

test CHANGED
@@ -12,4 +12,4 @@
12
12
 
13
13
 
14
14
 
15
- あるいはほかのコントロールの Tabstop が False になっていたらTrueに変更て見てください。
15
+ あるいはほかのコントロールの Tabstop が False になっていたらTrueに変更てください。