
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
またまた登場、myRangeです。
>このキーダウンイベントは、
>1つ1つ入力していくしか方法はありませんでしょうか?
>(現在はTextBox[3]の[]の部分を手作業で次々と増やしていってみています)
面倒でもその方法が現時点での質問者にとっては簡単確実な方法だと思われます。
参考までにいうとコピペしないでやる方法を2つほど挙げることができます。
(1)VBAでコードを自動生成する方法
(2)Classを作成し擬似的にTextBoxのコントロール配列を作成する方法
(因みに、どちらのコードも30行程度でできるでしょう)
これらの利点としては、TextBoxに増減があってもコードの変更の必要がないことです。
増減があったときは、1回実行すればOK。
例えば、TextBoxを50個追加したとすると、
50個追加した後で1回実行すれば、その50個もtabで飛ぶようになるというこです。
但し、(1)はちょっとした制限があるのでそれを解除する必要があります。
これらはコード的には短いものですが少々VBAの知識を要しますので、
変更があったときに対処できないできない(質問から判断)でしょうから
今の時点では地道にコピペを繰り返した方がベターだと考えます。
以上です。
No.7
- 回答日時:
IF文を入れ忘れてました
Private Sub MoveTab(nTextBoxNo As Integer, ByVal KeyCode As MSForms.ReturnInteger)
Dim sTextBoxNo As String
Dim arryaTab As Variant
If KeyCode <> 9 Then ' TABキーのKeyCode
Exit Sub
End If
arryaTab = Array(4, 3, 1, 2)
'TextBox1 -> TextBox4
'TextBox2 -> TextBox3
'TextBox3 -> TextBox1
'TextBox4 -> TextBox2
sTextBoxNo = "TextBox" & arryaTab(nTextBoxNo - 1)
Sheets("Sheet1").OLEObjects(sTextBoxNo).Activate
End Sub
No.6
- 回答日時:
コントロールとイベント関数は1対1なので、コントロールを追加したら、関数も自分で追加しないといけません
(VBのコントロール配列がVBAでも使えたらできるのですけどね)
横着関数を作ってみました
MoveTab()のarryaTabでTAB順を定義しますので、TAB順番の変更が楽にできます
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call MoveTab(1, KeyCode)
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call MoveTab(2, KeyCode)
End Sub
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call MoveTab(3, KeyCode)
End Sub
Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call MoveTab(4, KeyCode)
End Sub
Private Sub MoveTab(nTextBoxNo As Integer, ByVal KeyCode As MSForms.ReturnInteger)
Dim sTextBoxNo As String
Dim arryaTab As Variant
arryaTab = Array(4, 3, 1, 2)
'TextBox1 -> TextBox4
'TextBox2 -> TextBox3
'TextBox3 -> TextBox1
'TextBox4 -> TextBox2
sTextBoxNo = "TextBox" & arryaTab(nTextBoxNo - 1)
Sheets("Sheet1").OLEObjects(sTextBoxNo).Activate
End Sub
No.5
- 回答日時:
myRangeさん 感謝です(目から鱗)
オートシェイプのテキストボックスに気づきませんでした
オートシェイプのイベント制御はできそうですけど、難度が高いです
http://www.vbalab.net/vbaqa/data/excel/log/tree_ …
TextBoxコントロールに変更するか、オートシェイプのテキストボックスをタグ順になるように貼りなおす
かですね。。。
★混乱させてすみません
この回答への補足
nagare様
myRange様
本当にありがとうございました!!!
だいぶ理解が出来、Tabキーで移動する事ができました!
本当に申し訳ないんですが、
最後に1つだけ質問させて下さい。
このキーダウンイベントは、
1つ1つ入力していくしか方法はありませんでしょうか?
(現在はTextBox[3]の[]の部分を手作業で次々と増やしていってみています)
No.4
- 回答日時:
回答者のnagareさんへ、、、
質問の文言に
>名前ボックスに「テキスト1」「テキスト3」、、、様に表示され
とありますから、質問者のいうテキストボックスは、
図形ツールバーからの「テキストボックス」ではないでしょうか。
●質問者のテキストボックスでは質問の件はできませんねので
どうしてもというなら、nagareさんのTextBoxを使ってください。
「コントロールツールボックス」ツールバーにあるTextBoxコントロールです。
以上です。
No.3
- 回答日時:
VBA自体が動かないのでしょうか?
・マクロのセキュリティ レベル
セキュリティ レベル を[中]にする必要があります
http://g.www.ms.akadns.net/japan/office/ork/2003 …
・コードの確認
VBAのデザインモードで、Excel上のTextBox1をWクリックしてください
VBAエディタがTextBox1_KeyDownを開けばOKです
開かなければ、コピペする場所を間違えてます
★わからない用語を使っていましたらすみません
No.2
- 回答日時:
Forms.TextBox.1の方でしたか(解答したのはUserFormでのやり方でした)
キーダウンイベントでやるしかないようです
こんな感じです
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Then ' TABキーのKeyCode
TextBox2.Activate
End If
End Sub
この回答への補足
何度もスミマセン。
しかも本当に初歩的な話になってしまうと思うのですが、、、
書いて下さったキーダウンイベントを実行してみたいのですが、
方法が分からなくて…
お時間のある時で良いので教えて頂けないでしょうか。
一応、書いて頂いた
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Then ' TABキーのKeyCode
TextBox2.Activate
End If
End Sub
をVBを開いて実行させたいSheetのコードにコピペしてみたのですが、
上書き保存して再度開いてみても変わりありませんでした。
やはり方法が間違っているのでしょうか。
宜しくお願い致します。
No.1
- 回答日時:
TabIndexプロパティで設定します
設定値は0から順番に設定します
今回の場合だと
「テキスト1」←0
「テキスト2」←1
「テキスト3」←2
「テキスト4」←3
★TabStopプロパティがTrueであること
補足:TabIndexプロパティの値は必ず「ユニーク」になりますので、同じ値を設定すると、自動でずれますので注意してください
この回答への補足
早速のご回答ありがとうございました!
TabIndexとの事ですが、これはVBでという事でしょうか?
テキストボックスは普通にExcelの画面で作成しているのですが、
それでも設定できますかね??
初歩的な質問で申し訳ないのですがどうぞ宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。 3 2023/03/19 18:31
- その他(Microsoft Office) 逆順 3 2023/08/24 09:30
- Excel(エクセル) Excel 2019 のピン留めブック名一覧の上下順序変更 4 2022/05/04 08:21
- PDF PDFのテキストを追加機能 1 2022/06/18 12:45
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- マウス・キーボード Tabキーとテンキーが右側にあるワイヤレスキーボード を探しています。 仕事上数字を入力することが多 3 2022/09/22 21:13
- モニター・ディスプレイ Win11マルチディスプレイでの異なる仮想デスクトップの表示 3 2023/02/01 10:02
- Excel(エクセル) Excelで在庫表(クエリ、ピボット) 2 2022/04/11 17:11
- Excel(エクセル) Excelで日付のグラフへの表示 2 2022/04/15 11:04
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataGridViewで行の展開みたい...
-
Wordテキストコントロールが未...
-
テキストボックス(VBA)でEnter...
-
C# TEXTが空白であるLABELは何...
-
エクセル VBA ユーザーフォーム...
-
ユーザーフォームに日付を表示...
-
ListViewでのリスト表示(初歩...
-
カスタムコントロールInputMan...
-
リストコントロールのデータの...
-
エクセル入力規制リスト行数
-
checkbox付きListViewで デフ...
-
ADOのCursorLocationプロパティ
-
Enabled=Falseのテキストボック...
-
ListViewで1つを選択して詳細...
-
VB6でPNGファイルを扱うには?
-
デザインモードを解除すると消...
-
TreeViewでToolTipTextを表示し...
-
VBで、tableの列を動的に増やす...
-
VC++でエクセルのような表
-
VBのデータグリッドが表示され...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
Wordテキストコントロールが未...
-
エクセルの画像にツールチップ...
-
ユーザーフォームに日付を表示...
-
C# TEXTが空白であるLABELは何...
-
エクセル入力規制リスト行数
-
MSFlexGrid
-
コンボボックスの高さを変更し...
-
ACCESS2010 ActiveXコントロー...
-
Enabled=Falseのテキストボック...
-
VB6でLabelの最前面にText Box...
-
ADOのCursorLocationプロパティ
-
DataGridViewで行の展開みたい...
-
checkbox付きListViewで デフ...
-
VB2005 コードでのコントロー...
-
チェックボックスの文字色の変え方
-
VB6でPNGファイルを扱うには?
-
PictureBoxの背景色変更(VB.NET)
-
VB.NETで縦書表示をしたいので...
-
MFCでbitmapを背景にしてstatic...
おすすめ情報