Excel VBA質問箱 IV

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

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


5269 / 13644 ツリー ←次へ | 前へ→

【51785】コンボボックスで選択したのをシートに。 gori 07/10/4(木) 15:37 質問[未読]
【51787】Re:コンボボックスで選択したのをシートに。 Jaka 07/10/4(木) 16:15 発言[未読]
【51789】Re:コンボボックスで選択したのをシートに。 gori 07/10/4(木) 17:04 発言[未読]
【51790】Re:コンボボックスで選択したのをシートに。 Jaka 07/10/4(木) 17:39 発言[未読]
【51802】Re:コンボボックスで選択したのをシートに。 gori 07/10/5(金) 10:04 発言[未読]
【51805】Re:コンボボックスで選択したのをシートに。 Jaka 07/10/5(金) 11:11 発言[未読]
【51807】Re:コンボボックスで選択したのをシートに。 gori 07/10/5(金) 11:57 発言[未読]
【51810】Re:コンボボックスで選択したのをシートに。 Jaka 07/10/5(金) 13:14 発言[未読]
【51814】Re:コンボボックスで選択したのをシートに。 gori 07/10/5(金) 15:26 お礼[未読]

【51785】コンボボックスで選択したのをシートに。
質問  gori  - 07/10/4(木) 15:37 -

引用なし
パスワード
   こんにちは。

超ど級の初心者です。
見よう見まねで作ってみたのですが、思い通りにいきません。

ユーザーフォームにはテキストボックスとコンボボックスがあって
全てに記入したあと、登録ボタンを押すとシートに入力するようにしたいのですが、
登録ボタンを押して、ユーザーフォームを閉じないと反映しないのです。
ユーザーフォームを閉じずに次々と入力していきたいのですが・・・。

全くおかしなコードかもしれませんが、載せてみます。
どうかよろしくお願いします。

Private Sub UserForm_Initialize()
  'コンボボックス1の設定
  Me.ComboBox1.BoundColumn = 0

  Me.ComboBox1.AddItem "10000"
  Me.ComboBox1.AddItem "20000"
  Me.ComboBox1.AddItem "30000"
  Me.ComboBox1.AddItem "40000"
  Me.ComboBox1.AddItem "50000"
  Me.ComboBox1.AddItem "60000"
  Me.ComboBox1.AddItem "70000"
  
  'コンボボックス2の設定
  Me.ComboBox2.BoundColumn = 0

  Me.ComboBox2.AddItem "100"
  Me.ComboBox2.AddItem "200"
  Me.ComboBox2.AddItem "300"
  Me.ComboBox2.AddItem "400"

End Sub


Private Sub CommandButton1_Click()

  Application.ScreenUpdating = False

  Dim a As Long
  
  Set WS1 = Worksheets("database")
  Set WS2 = Worksheets("個人集計")
  
  WS1.Select
 
  a = ActiveSheet.UsedRange.Rows.Count
  
 '日付
  Cells(a, 1).Select

    ActiveCell.Offset(1).Select
    ActiveCell = TextBox1.Value
 '採番
  Cells(a, 2).Select

    ActiveCell.Offset(1).Select
    ActiveCell = TextBox2.Value
 '金額1
  Cells(a, 3).Select

    ActiveCell.Offset(1).Select
    ActiveCell = Me.ComboBox1.Text
 '金額2
  
  Cells(a, 4).Select

    ActiveCell.Offset(1).Select
    ActiveCell = Me.ComboBox2.Text
    

End Sub

【51787】Re:コンボボックスで選択したのをシート...
発言  Jaka  - 07/10/4(木) 16:15 -

引用なし
パスワード
   2002ヘルプより

*************
ScreenUpdating プロパティ
関連項目 対象 使用例 アプリケーション情報
True の場合、マクロの実行中に画面表示を更新します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。

解説
マクロの速度を向上させるため、画面を更新しないようにします。この場合、マクロの処理過程は見ることができませんが、実行速度が速くなります。

マクロが終了した後は、ScreenUpdating プロパティの値を True に戻してください。
*************

ろくなことが書いてない....。
要するにfalseにすると画面の書き換えが行われないということです。

【51789】Re:コンボボックスで選択したのをシート...
発言  gori  - 07/10/4(木) 17:04 -

引用なし
パスワード
   Jaka さんへ

ありがとうございます!
あまり意味もわからずチラチラしないから使っていました^^;
ばっちり入力してくれました。

質問に質問を重ねて申し訳ないのですが。。。。

フォームからシートに入力後、フォーム内の値をクリアにしたいのですが
UserForm1.TextBox1.Clear
ではできません・・・。
どうすればいいのでしょうか?

あと、フォーム内のフォーカスの移動なんですが、タブではなく、エンターで
フォーカス移動ってできるんでしょうか?

よろしくお願いいたいます。

【51790】Re:コンボボックスで選択したのをシート...
発言  Jaka  - 07/10/4(木) 17:39 -

引用なし
パスワード
   ▼gori さん:
>あまり意味もわからずチラチラしないから使っていました^^;
>ばっちり入力してくれました。
入力はしてあるんだけど、画面を更新してないから前のままだと言うことです

UserForm1.TextBox1.Value = ""
(文字数が多すぎなければ)

>あと、フォーム内のフォーカスの移動なんですが、タブではなく、エンターで
>フォーカス移動ってできるんでしょうか?
ものによっては、できないけど、できるのもあるはずですけど。
できないものは、キーダウンかキーアップイベントで対応してください。
探せばありそうです。

【51802】Re:コンボボックスで選択したのをシート...
発言  gori  - 07/10/5(金) 10:04 -

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

ありがとうございます。

>UserForm1.TextBox1.Value = ""

うまく行きました。

エンターキーでのフォーカス移動なんですが、色々調べたんですが
説明自体が理解できずさっぱりです・・・(泣)
>略///www.atmarkit.co.jp/fdotnet/dotnettips/231winentermove/winentermove.html
textbox が二つとcomboboxが二つ、コマンドボタンで入力するような
ユーザーフォームなのですが、コマンドボタンまでは勝手にエンターで移動します。
コマンドボタンでエンター後textbox1に移動したんですが。。。

ご教授お願いします。。。

【51805】Re:コンボボックスで選択したのをシート...
発言  Jaka  - 07/10/5(金) 11:11 -

引用なし
パスワード
   ▼gori さん:
>ユーザーフォームなのですが、コマンドボタンまでは勝手にエンターで移動します。
>コマンドボタンでエンター後textbox1に移動したんですが。。。
これ、逆に使いづらくないですか?
コマンドボタン上でENTキーを押すとクリックと同じ効果があるんですけど、
これがなくなると余計に使いづらいような気がしますし、使う側から見ると
「何これ?」って感じになりませんか?
私だったら、KeyDownを使って矢印キーで対応させますけど。

こんな感じに押されたキー番号を判定して、フォカーカスを持たせたいコントロールにファーカスを移動させる。

Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

MsgBox KeyCode '←キー番号は、これで調べられます

KeyCode = 0 '←KeyCodeに対応したキーが押されたことを無効にする。
       'Entキーだったら、キーを押したこと自体を無効にしないと、
       'ボタンクリックイベントが発生するから、必須。(IF分等で分岐処理する)
End Sub

【51807】Re:コンボボックスで選択したのをシート...
発言  gori  - 07/10/5(金) 11:57 -

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

早々にお返事ありがとうございます。

>これ、逆に使いづらくないですか?
>コマンドボタン上でENTキーを押すとクリックと同じ効果があるんですけど、
>これがなくなると余計に使いづらいような気がしますし、使う側から見ると
>「何これ?」って感じになりませんか?

>私だったら、KeyDownを使って矢印キーで対応させますけど。
>
>こんな感じに押されたキー番号を判定して、フォカーカスを持たせたいコントロールにファーカスを移動させる。
>
>Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
>
>MsgBox KeyCode '←キー番号は、これで調べられます
>
>KeyCode = 0 '←KeyCodeに対応したキーが押されたことを無効にする。
>       'Entキーだったら、キーを押したこと自体を無効にしないと、
>       'ボタンクリックイベントが発生するから、必須。(IF分等で分岐処理する)
>End Sub

エンターキーを無効にするということは、
フォームに入力してコマンドボタンでエンターを押すと、
データはシートに入力されずに、textbox1にフォーカスだけが移動するって
ことですよね???

要は、テンキーだけで入力し続けたいんです。。。
コマンドボタンで実行した後、textbox1に戻ってまたすぐ入力できる。。みたいな。

やっぱり、矢印キーなど他のキーでないと出来ないんでしょうか・・・・。

【51810】Re:コンボボックスで選択したのをシート...
発言  Jaka  - 07/10/5(金) 13:14 -

引用なし
パスワード
   ▼gori さん:
>要は、テンキーだけで入力し続けたいんです。。。
>コマンドボタンで実行した後、textbox1に戻ってまたすぐ入力できる。。みたいな。
>
>やっぱり、矢印キーなど他のキーでないと出来ないんでしょうか・・・・。
初めてフォーカスを持った時にフラグを立てて、処理を実行したり、フォーカスを失った時に、フラグを降ろすとかの判定を盛り込めば、何とかできるとは思いますが、この手の判定を色々と状況判断しないといけないような気がします。
入力を取り消したい時やその他のメンテが大変だと思います。

【51814】Re:コンボボックスで選択したのをシート...
お礼  gori  - 07/10/5(金) 15:26 -

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

>初めてフォーカスを持った時にフラグを立てて、処理を実行したり、フォーカスを失った時に、フラグを降ろすとかの判定を盛り込めば、何とかできるとは思いますが、この手の判定を色々と状況判断しないといけないような気がします。
>入力を取り消したい時やその他のメンテが大変だと思います。
↑↑
難しすぎて私にはまったく分からないです(泣)


>要は、テンキーだけで入力し続けたいんです。。。
>コマンドボタンで実行した後、textbox1に戻ってまたすぐ入力できる。。みたいな。

  たまたまなんですが、
  UserForm1.TextBox1.SetFocus
  で出来ました。

結果オーライということで。。。
jakaさん、有難うございました(御礼)

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