- ベストアンサー
文字をアクティブにする方法
テキストボックスを2つ作成(text1,text2)し、 text2にはあらかじめ文字を入れておきます。 text1からtext2へTabキーで移動したときに、 text2に入力されている文字がアクティブ(反転というのでしょうか) にすることはできますか? つまりアクティブになっていれば、文字の書き換えをしたいときに、 「BackSpace」キーなどで削除しなくても、 そのまま文字を打てば上書きされるようにしたいのです。 ご存知のかたがおりましたら教えてください。 Private Sub text1_Change() SendKeys "{tab}", False 'text2へ移動する End Sub
- mashiro78
- お礼率81% (26/32)
- Visual Basic
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 text2のGotFocusイベントに次のように書きます。 Private Sub text2_GotFocus() With text2 .SelStart = 0 .SelLength = Len(.Text) End With End Sub ただし、この場合text2にいつフォーカスがあったても全選択になってしまいますので、text1から移動した時にTrueになるようなフラグを作って判別するといいと思います。 では。
その他の回答 (2)
- josyo_m
- ベストアンサー率63% (28/44)
お疲れ様です。 ごめんなさい。先ほどだとText1になっていたのでText2の間違いです。 Option Explicit Private Sub Text2_GotFocus() With Text2 .SelStart = 0 '// 選択開始位置 .SelLength = Len(Text2.Text) '// 選択する長さ End With End Sub です。
お礼
すばやい解答ありがとうございました。 アドバイス通りにやったらうまくいきました。m(._.)m
- josyo_m
- ベストアンサー率63% (28/44)
お疲れ様です。 こんな感じでどうでしょうか Option Explicit Private Sub Text1_GotFocus() With Text1 .SelStart = 0 '// 選択開始位置 .SelLength = Len(Text1.Text) '// 選択する長さ End With End Sub で反転状態になると思います。 間違っていたらごめんなさい。
関連するQ&A
- テキストボックスでMAX文字数を入れたらTABで飛びたい
テキストボックスで、2バイト入力されたらTABで次のテキストボックス に移動すると言うイベントを4つのテキストボックスのKeyUpイベント に記述しました。 サンプルとして一つ書きます。 Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) If Len(Text1.Text) = 2 Then SendKeys "{TAB}" KeyCode = 0 End If End Sub 上記のソースでプログラムを実行し、Text1に2バイト入力されると、 次のテキストボックス(Text2)に移動します。 更にText2,Text3に、2バイト入力しますと、カーソルがText4に来ます。 ここで、マウスでText1にカーソルを持っていき、値を変更すると、 Text2に移動するはずが、Text4にカーソルが移動します。 なぜでしょうか?? くだらない質問ですが、よろしくお願いします。
- ベストアンサー
- Visual Basic
- EXCEL VBA ユーザーフォーム内に入力パットを設置する方法について
EXCEL VBAについて質問があります。うまく説明できるかちょっと自信が無いのですが。 Userformを挿入し、フォーム内にテキストボックスを一個と コマンドボタンを複数設置する。 コマンドボタンはTakeFocusOnClickをFalseにする。 Private Sub CommandButton1_Click() SendKeys "{A}" End Sub これで テキストボックスに「A」という文字が入るはずですが、 このやり方で日本語入力を行い、スペースキーを押して 漢字変換が出来るようにするにはどうしたらよろしいのでしょうか。 SendKeys "{あ}" では確定された「あ」が入力されてしまい、 スペースキーを押しても変換が出来ません。 SendKeys "{a}" だと変換は出来るのですが、あ~おまでの母音だけしか入力ができず、か行以降の入力が出来ませんでした。 IMEの設定と関係があるのかなとも思ったのですが、色々いじっても どうもうまく出来ませんでした。 どうぞよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excel VBAを使って給紙方法を変更する(キーストローク使用)
ExcelのVBAを使って印刷するものによって給紙方法を変えたいと思っています。 調べてみたところ'SendKeysステートメントを使うと設定できそうだったので、下記のような命令文を作ってみたのですがうまく動きません。 どなたか詳しい方いらっしゃいましたら教えていただけないでしょうか? OS:WindowsXP 使用ソフト:Microsoft Excel2003 使用プリンタ:NEC PR-2860N 【コマンドボタン】 本書印刷 → 印刷範囲:「一枚目」(あらかじめ設定してある名前) 給紙方法:自動 控え印刷 → 印刷範囲:「二枚目」 給紙方法:ホッパー2 Private Sub 控え印刷_Click() With ActiveSheet.PageSetup .PrintArea = "二枚目" End With MyPrinterSet ActiveSheet.PrintOut End Sub ―――――――――――――――――――――――――――――― Private Sub 本書印刷_Click() With ActiveSheet.PageSetup .PrintArea = "一枚目" End With MyPrinterSet2 ActiveSheet.PrintOut End Sub ――――――――――――――――――――――――――――――― Private Sub MyPrinterSet() 'SendKeysステートメントでプリンタ設定 '自動給紙から手差しへ変更 ActiveSheet.Select SendKeys "%FU" 'Excel画面でファイル(F)、ページ設定... SendKeys "%O" ‘オプション SendKeys "{TAB 8}" ‘一番端の[メイン]のタブに合わせる SendKeys "{RIGHT}" ‘一つ右の[用紙]タブへ移動 SendKeys "%S" ‘給紙方法選択 SendKeys "{DOWN 2}" 'ホッパー2に設定 SendKeys "{ENTER}" SendKeys "{TAB 5}" ‘[用紙]タブを選択 SendKeys "{LEFT}" ‘一つ左の[メイン]タブへ移動 SendKeys "{ENTER 2}" ―――――――――――――――――――――――――――――― End Sub Private Sub MyPrinterSet2() 'SendKeysステートメントでプリンタ設定 '例、EPSON LP-****を手差しから自動へ変更 ActiveSheet.Select SendKeys "%FU" 'Excel画面でファイル(F)、ページ設定... SendKeys "%O" SendKeys "{TAB 4}" ‘初期値へ戻すを選ぶ SendKeys "{ENTER 4}" End Sub ――――――――――――――――――――――――――――――
- ベストアンサー
- オフィス系ソフト
- テキストボックス内の文字を常に1字に制限する方法を教えてください。
例えば、Private Sub Text1_KeyPress(KeyAscii) の中で Text1.text=Right(Text1.text,1) のようにすれば、常に右端の1字だけ表示されると思うのですが、 実際にやってみると、2文字表示されてしまうことがしばしばです。
- 締切済み
- Visual Basic
- 特定の文字だけ太文字にするには・・
簡易チャット作ってます。発言者の名前の部分だけ太文字にしようとしてい ます。 テキストボックス2に文を書いてエンターを押すとテキストボックス1に書 花子:~~~ と書き込まれるようにはできました。花子の部分 だけふと文字にするには?? Private Sub Text2_KeyPress(KeyAscii As Integer) If (KeyAscii = 13) Then Text1.Text = Text1.Text + "花子:" + Text2.Text + vbCrLf Text2.Text = "" KeyAscii = 0 End If End Sub
- ベストアンサー
- Visual Basic
- テキストボックスの桁数をカウントして、フォーカス移動
Win2000、VB6.0です。 テキストボックスとADOコントロールを使用して、レコードを編集・更新するフォームを作っています。 ただ、簡単に書く為に下の説明文ではDBについては書きません。 Form1に、Text1とText2があるとします。 Tab移動だけではなく、Text1に4桁目まで入力された時点で、Text2へフォーカスが移動するようにしたいと考えています。 Text1のChangeイベントで、 ------------------------------------ Private Sub Text1_Change() If Len(Text1.Text) >= 4 Then Text2.SetFocus End If End Sub ------------------------------------ 以上のように記述しています。 ただ、Form1のロード時に、 ------------------------------------ Private Sub Form_Load() Text1.Text = "1111" End Sub ------------------------------------ 以上のように記述すると、 「実行時エラー"5";」 「プロシージャの呼び出し、または引数が不正です。」 とエラーが発生してしまいます。 ロード時にテキストボックスに表示しつつ、入力された現在の桁数をカウントして、フォーカス移動する方法は無いのでしょうか? よろしくお願いします。
- ベストアンサー
- Visual Basic
- エクセルの印刷ダイアログをSendkeysで操作したい。
エクセルのマクロ処理でフォーム上のボタンから 印刷ダイアログを呼び出して、そのダイアログを Sendkeysでもって両面印刷設定にし印刷させると いう処理を行いたいのですが上手くいきません。 印刷ダイアログが表示された段階で止まり(エラーで 止まるわけではなく単に処理が止まる)、その先の Sendkeysによる命令へ進みません。 Private Sub CommandButton1_Click() Application.Dialogs(xlDialogPrint).Show SendKeys "%r", True SendKeys "%k", True SendKeys "^{tab}", True SendKeys "^{tab}", True SendKeys "^{tab}", True SendKeys "%r", True SendKeys "{enter}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "{enter}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "+{tab}", True SendKeys "{enter}", True End Sub よくSendKeysは環境によって誤作動などが起こるので 使わない方がいいと言われますが、一度どのように 動くのか試してみたいと思っています。 ちなみに上のコードは当方のプリンタでの設定手順となります。 SendKeysで印刷ダイアログにキーを送ることは できないのでしょうか? 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBSでブラウザ上のテキストボックスに文字列を打ち込み、ボタンを押す方法
VBSでブラウザ上のテキストボックスに文字列を打ち込み、ボタンを押す方法を教えてください。 現在、下のような方法で行っているのですが応用が利かないので改善したいと思っています。 Set IE = CreateObject("InternetExplorer.Application") Set WshShell = CreateObject("WScript.Shell") IE.Visible = True IE.Navigate("https://サイトのURL") Do Until IE.Busy = False WScript.Sleep 1000 WshShell.SendKeys "y" Loop '(セキュリティの警告が出るため) WScript.Sleep 100 WshShell.SendKeys "{TAB}" WScript.Sleep 100 WshShell.SendKeys "loginid" WScript.Sleep 100 WshShell.SendKeys "{TAB}" WScript.Sleep 100 WshShell.SendKeys "password" WScript.Sleep 100 WshShell.SendKeys "{TAB}" WshShell.SendKeys "{ENTER}" 操作したいページのソースの一部を抜粋すると下記のようになっています。 テキストボックス <INPUT type="text" name="loginId" class="Necessary" size="20" maxlength="5" value="" tabindex="20"> ボタン <INPUT class="button10" type="button" name="sentaku" value="認証" onClick="javascript:execute・・・・略 うまく操作できる方法を教えてください。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- EXCEL VBA Sendkeys {TAB}
済みません、EXCELのマクロで自動でタブ移動が出来なく困っています。 いろいろ参考にして作ってみましたが、Sendkeysがセルに対して動作していないようです。 ご教授をお願いします。 Private Sub Tab_Count_Click() Worksheets("音楽リスト").Activate Range("A4:AF8").Select For i = 1 To 3 SendKeys "{TAB}", True MsgBox "OK" Next End Sub
- 締切済み
- その他([技術者向] コンピューター)
- VBA初心者です。
VBA初心者です。 ユーザーフォームにテキストボックスとコンボボックスを1つずつ作り、それらを Private Sub ComboBox1_Change() TextBox1.Value = ComboBox1.Value End Sub というふうに繋いでるとき、テキストボックスにフォーカスをあてさせないようするため、 Private Sub UserForm_Initialize() TextBox1.Enabled = False End Sub このようにしました。ここまでは問題ありません。質問したいことは、このときテキストボックスに表示させる文字が淡色になるのを防ぐ方法です。 TextBox1.Locked = True これを上に付け加えればうまくいきそうなのですが、うまくいきませんでした…。どなたか解決方法を教えて下さい。
- ベストアンサー
- Visual Basic
お礼
フラグのアドバイスまでありがとうございました。 実行したらうまくいきました。