Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4587 / 13646 ツリー ←次へ | 前へ→

【55727】テキストボックスを選択するには? ZARDist 08/5/17(土) 6:46 質問[未読]
【55732】Re:テキストボックスを選択するには? りん 08/5/17(土) 12:23 回答[未読]
【55772】Re:テキストボックスを選択するには? ZARDist 08/5/19(月) 10:15 質問[未読]
【55800】Re:テキストボックスを選択するには? りん 08/5/20(火) 6:54 発言[未読]
【55734】Re:テキストボックスを選択するには? kanabun 08/5/17(土) 13:46 発言[未読]
【55736】Re:テキストボックスを選択するには? kanabun 08/5/17(土) 14:01 発言[未読]
【55774】Re:テキストボックスを選択するには? ZARDist 08/5/19(月) 10:49 質問[未読]
【55776】Re:テキストボックスを選択するには? kanabun 08/5/19(月) 11:25 発言[未読]
【55781】Re:テキストボックスを選択するには? ZARDist 08/5/19(月) 14:02 質問[未読]
【55783】Re:テキストボックスを選択するには? kanabun 08/5/19(月) 14:24 発言[未読]
【55799】Re:テキストボックスを選択するには? ZARDist 08/5/20(火) 4:55 お礼[未読]

【55727】テキストボックスを選択するには?
質問  ZARDist  - 08/5/17(土) 6:46 -

引用なし
パスワード
   おはようございます。
ある品名をテキストボックスに入力するとその型式が検索できる簡易システムをユーザーフォームを使って作りました。
一応検索は出来るのですが、テキストボックスに文字を入力する前にクリック(選択)しないと文字入力できません。(クリックが面倒なので)直接文字入力したいのですがどのようにすればよいでしょうか?ご教示をよろしくお願い致します。


Private Sub cmdCancel_Click()
ActiveWorkbook.Close False
End Sub

Private Sub cmdOK_Click()
Dim hinmei As Variant
Dim X As Variant
Dim Y As Variant
On Error GoTo 10
hinmei = TextBox1.Text
Range("f1").Value = hinmei
Application.ScreenUpdating = False
  With ThisWorkbook.Worksheets("Sheet1").Range("f1")
   .Value = Me.TextBox1.Value
   .SetPhonetic
   .Value = StrConv(Application.WorksheetFunction.Phonetic(.Offset(0, 0)), vbHiragana)
  End With
 Application.ScreenUpdating = True
X = Range("j1").Value
Y = Range("h1").Value
If hinmei = "ここに品名を入力" Then
   MsgBox "何も入力されていません。", vbExclamation, "未入力"
   UserForm_Initialize
   Exit Sub
ElseIf hinmei = "" Then
   MsgBox "何も入力されていません。", vbExclamation, "未入力"
   UserForm_Initialize
   Exit Sub
Else
   MsgBox Y & " " & "の型式は" & " " & "【" & X & "】", , "検索結果"
   UserForm_Initialize
   Exit Sub
 End If
10 MsgBox "検索できませんでした。入力方法を変えてみてください。", vbExclamation, "検索不可"
UserForm_Initialize
End Sub

Private Sub UserForm_Initialize()
 With TextBox1
  .SelStart = 0
  .SelLength = Len(.Text)
  .SetFocus
 End With
End Sub

【55732】Re:テキストボックスを選択するには?
回答  りん E-MAIL  - 08/5/17(土) 12:23 -

引用なし
パスワード
   ZARDist さん、こんにちわ。

>一応検索は出来るのですが、テキストボックスに文字を入力する前にクリック(選択)しないと文字入力できません。(クリックが面倒なので)直接文字入力したいのですがどのようにすればよいでしょうか?ご教示をよろしくお願い致します。

テキストボックスにフォーカスを与えたいということですかね。

フォームを表示する前に以下を実行するようにしてみてください。

  With Me.TextBox1
   .SetFocus        'フォーカス移動
   If .Text <> "" Then
     .SelStart = 0     '何か入ってるときはその文字列を選択しておく
     .SelLength = Len(.Text)
   End If
  End With

こんな感じです。

【55734】Re:テキストボックスを選択するには?
発言  kanabun  - 08/5/17(土) 13:46 -

引用なし
パスワード
   おじゃまします。

▼ZARDist さん:
>(クリックが面倒なので)直接文字入力したいのですが

>Private Sub UserForm_Initialize()
> With TextBox1
>  .SelStart = 0
>  .SelLength = Len(.Text)
>  .SetFocus
> End With
>End Sub

Sub UserForm_Initialize() プロシージャに書いていることを、
  ↓
Sub UserForm_Initialize() プロシージャに移動してみてください。

これだけでいいかもしれません。↓

Private Sub UserForm_Activate()
 TextBox1.SetFocus
End Sub

【55736】Re:テキストボックスを選択するには?
発言  kanabun  - 08/5/17(土) 14:01 -

引用なし
パスワード
   すみません。↑文章が意味不明でした

>Sub UserForm_Initialize() プロシージャに書いていることを、
>  ↓
Sub UserForm_Activate() プロシージャに移動してみてください。

のまちがいでした。 ごめんなさい。

【55772】Re:テキストボックスを選択するには?
質問  ZARDist  - 08/5/19(月) 10:15 -

引用なし
パスワード
   ▼りん さん:
りんさん、こんにちわ。
ご回答有難うございます。
以下の様にやってみたのですがコンパイルエラー(Meキーワードの使用方法が不正です)になってしまいます。
UserForm1_activateとUserForm1.Showの順番を逆にしてもみましたがフォーカスはテキストボックスに移動しませんでした。
申し訳ないですがもう一度ご教授頂けませんか?
よろしくお願い致します。<(_ _)>


Sub auto_open()
Application.WindowState = xlMinimized
UserForm1_activate
UserForm1.Show
End Sub

Private Sub UserForm1_activate()
With Me.TextBox1
   .SetFocus        'フォーカス移動
   If .Text <> "" Then
     .SelStart = 0     '何か入ってるときはその文字列を選択しておく
     .SelLength = Len(.Text)
   End If
  End With
End Sub

【55774】Re:テキストボックスを選択するには?
質問  ZARDist  - 08/5/19(月) 10:49 -

引用なし
パスワード
   ▼さん:
kanabunさんこんにちは。
ご回答有難うございます。
以下の様にしたところ見事にテキストボックスが選択されたのですが、タスクバーが点滅してフォームが表示されなくなってしまいました。点滅しているタスクバーをクリックすればフォームが表示されて検索ができます。
なぜフォームが表示されなくなってしまったのでしょうか?
ご教授をお願い致します。


Private Sub cmdCancel_Click()
ActiveWorkbook.Close False
End Sub


Private Sub cmdOK_Click()
Dim hinmei As Variant
Dim X As Variant
Dim Y As Variant
On Error GoTo 10
hinmei = TextBox1.Text
Range("f1").Value = hinmei
Application.ScreenUpdating = False
  With ThisWorkbook.Worksheets("Sheet1").Range("f1")
   .Value = Me.TextBox1.Value
   .SetPhonetic
   .Value = StrConv(Application.WorksheetFunction.Phonetic(.Offset(0, 0)), vbHiragana)
  End With
Application.ScreenUpdating = True
X = Range("j1").Value
Y = Range("h1").Value
If hinmei = "ここに品名を入力" Then
   MsgBox "何も入力されていません。", vbExclamation, "未入力"
   UserForm_Activate
   Exit Sub
ElseIf hinmei = "" Then
   MsgBox "何も入力されていません。", vbExclamation, "未入力"
   UserForm_Activate
   Exit Sub
Else
   MsgBox Y & " " & "の型式は" & " " & "【" & X & "】", , "検索結果"
   UserForm_Activate
   Exit Sub
 End If
10 MsgBox "検索できませんでした。入力方法を変えてみてください。", vbExclamation, "検索不可"
UserForm_Activate
End Sub

Private Sub UserForm_Activate()
 With TextBox1
  .SelStart = 0
  .SelLength = Len(.Text)
  .SetFocus
 End With
End Sub


Sub auto_open()
Application.WindowState = xlMinimized
UserForm1.Show
End Sub

【55776】Re:テキストボックスを選択するには?
発言  kanabun  - 08/5/19(月) 11:25 -

引用なし
パスワード
   >以下の様にしたところ見事にテキストボックスが選択されたのですが、タスクバーが点滅してフォームが表示されなくなってしまいました。点滅しているタスクバーをクリックすればフォームが表示されて検索ができます。
>なぜフォームが表示されなくなってしまったのでしょうか?

すみません。よくわかりません。

標準モジュールの
>Sub auto_open()
> Application.WindowState = xlMinimized
> UserForm1.Show
>End Sub

ここを、単に
>Sub auto_open()
'Application.WindowState = xlMinimized 画面の制御しない
 UserForm1.Show 0
>End Sub

としたら、どうなりますか?
Excel画面を最小化したら、
UserFormを終了するとき(OKボタンの最後 とか Cancelボタンの最後とか、で)
Excelを元のサイズに戻さないといけないですよね?

【55781】Re:テキストボックスを選択するには?
質問  ZARDist  - 08/5/19(月) 14:02 -

引用なし
パスワード
   ▼kanabun さん:
kanabunさんこんにちは。
ご回答有難うございます。
kanabunさんがおっしゃるように画面制御を止めればフォームは表示できます。
(タスクバーの点滅もなくなります)
ただエクセルシートには品名と型式の対応リストが書いてあり、他の人に
データ操作されたくないため非表示としたいです。
もしご存知でしたらその方法を教えて頂けませんか?
度々で申し訳ございませんがよろしくお願い致します。

【55783】Re:テキストボックスを選択するには?
発言  kanabun  - 08/5/19(月) 14:24 -

引用なし
パスワード
   ▼ZARDist さん:

>ただエクセルシートには品名と型式の対応リストが書いてあり、他の人に
>データ操作されたくないため非表示としたいです。

それでしたら、ユーザーフォームを、
最初におやりになっているように、
 UserForm1.Show
と、モーダル表示すれば、フォームが表示されているあいだは
ワークシートをアクティブにすることはできません。

あるいは、
リストの書いてあるシートを非表示にしてもいいでしょう。

【55799】Re:テキストボックスを選択するには?
お礼  ZARDist  - 08/5/20(火) 4:55 -

引用なし
パスワード
   kanabun さんおはようございます。
今回は色々と教えて頂き誠に有難うございました。
とても助かりました。
また質問させて頂く事があるかと思いますがどうぞよろしくお願い致します。

【55800】Re:テキストボックスを選択するには?
発言  りん E-MAIL  - 08/5/20(火) 6:54 -

引用なし
パスワード
         ZARDist さん、おはようございます。

>以下の様にやってみたのですがコンパイルエラー(Meキーワードの使用方法が不正です)になってしまいます。

>Sub auto_open()
> Application.WindowState = xlMinimized
> 'UserForm1_activate ←これは不要です
> UserForm1.Show
>End Sub

↓この部分は標準モジュールではなくて、フォームのモジュールに書いてください。
>Private Sub UserForm1_activate()
> With Me.TextBox1
>   .SetFocus        'フォーカス移動
>   If .Text <> "" Then
>     .SelStart = 0     '何か入ってるときはその文字列を選択しておく
>     .SelLength = Len(.Text)
>   End If
>  End With
>End Sub
すると、

Private Sub UserForm1_activate() ではなくて、
Private Sub UserForm_Activate()  となるはずです。

4587 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free