• ベストアンサー

エクセル VBA フォーム設定について

いつもお世話になっています。 エクセル VBAでユーザーフォームについて教えてください。 あるシートのデータをフォームに読み込み、違うシートにそのデータを書き込んでいます。元データの列順と書き込むシートの列順が違うので、VBAで設定して使っています。 書き込みはうまくいっています。ただ、書き込む際にフォーム上で少しデータを修正して書き込みを行うのですが、編集したいフォーム上のテキストボックスをクリックすると、データの最後のほうにカーソルが飛んでしまいます。 テキストボックスをできるだけ大きくして対応していますが、限度があります。テキストボックスをクリックした際にデータの最後(文字データで言うと文章の最後を表示してしまう)まで動かずに、クリックしても先頭のままになるようにするにはどうすればいいのでしょうか。 同じように、コンボボックスもクリックするとリストの最後から表示されます。リストの先頭から表示させる方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >テキストボックスをクリックすると、データの最後のほうにカーソルが飛んでしまいます。 再現性がありません。そのようにするイベントが入ってるのではありませんか?通常は、クリックした場所の位置になるはずです。 >コンボボックスもクリックするとリストの最後から表示されます。リストの先頭から表示させる方法を教えてください。 こちらも再現性がありません。クリックしてリストの最後から表示されるというコードを組まなければ、そのようには出来ないはずです。UserFormを再度立ち上げない限りは、単に、前回、選択したものが残るだけです。 できれば、どのように組んであるか教えてくだされば、別の回答もつくかと思います。一応、そういうものがないとして、ご要望の動作は、以下のようなものになるかと思いますが、何か別にプログラムが組んであれば、以下のものはうまく働かない可能性があります。 Textbox: >クリックしても先頭のままになるようにするにはどうすればいいのでしょうか。 以下は、クリックしたら先頭に行くようになります。 Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)  TextBox1.SelStart = 0 End Sub ComboBox: >リストの先頭から表示させる方法を教えてください。 Private Sub ComboBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)  ComboBox1.ListIndex = 0 End Sub

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。KenKen_SP です。 Wendy02 さんのコメントのとおり、再現できないのですが、、 Enterキーによるフォーカス移動に対応するなら、次のようなコード を Wendy02 さんのコードに加えても良いかも。 Private Sub TextBox1_Enter()   SendKeys "^{LEFT}" End Sub

関連するQ&A