Excel VBA質問箱 IV

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

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


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

【37781】コンボボックスについて ゼロ 06/5/18(木) 17:34 質問[未読]
【37783】Re:コンボボックスについて kobasan 06/5/18(木) 17:44 回答[未読]
【37785】Re:コンボボックスについて ゼロ 06/5/18(木) 18:01 お礼[未読]
【37786】Re:コンボボックスについて kobasan 06/5/18(木) 18:12 発言[未読]
【37788】Re:コンボボックスについて ゼロ 06/5/18(木) 18:29 お礼[未読]
【37790】Re:コンボボックスについて T 06/5/18(木) 20:14 発言[未読]
【37793】Re:コンボボックスについて kobasan 06/5/18(木) 20:42 発言[未読]
【37797】Re:コンボボックスについて T 06/5/18(木) 21:07 質問[未読]
【37799】Re:コンボボックスについて kobasan 06/5/18(木) 21:24 発言[未読]
【37804】Re:コンボボックスについて T 06/5/18(木) 22:25 お礼[未読]
【37807】Re:コンボボックスについて kobasan 06/5/18(木) 23:49 発言[未読]
【37809】Re:コンボボックスについて T 06/5/19(金) 6:27 お礼[未読]
【37836】Re:コンボボックスについて kobasan 06/5/19(金) 22:00 発言[未読]
【37845】Re:コンボボックスについて T 06/5/20(土) 18:28 お礼[未読]

【37781】コンボボックスについて
質問  ゼロ  - 06/5/18(木) 17:34 -

引用なし
パスワード
   コンボボックスについて教えて頂きたいです。

ユーザーフォーム上にコンボボックスを配置して
それをセルに格納するというマクロです。

Private Sub test_click()
With Sheet2
  .Cells(10, 1) = ComboBox1
  .Cells(11, 1) = ComboBox2
  .Cells(12, 1) = ComboBox3
  .Cells(13, 1) = ComboBox4
End With
End Sub

のように、コンボボックスが増える時
ループさせてすっきりさせたいんですが、可能なのでしょうか?

For〜nextで試したんですが、
ComboBox(n) の()内の記述が分かりませんでした・・・

ご教授お願いします。

【37783】Re:コンボボックスについて
回答  kobasan  - 06/5/18(木) 17:44 -

引用なし
パスワード
   今晩は。

>Private Sub test_click()
>With Sheet2
  for i=1 to 4
   .Cells(9+i, 1) = me("ComboBox" & i)
  next

>End With
>End Sub

これでできます。


>のように、コンボボックスが増える時
>ループさせてすっきりさせたいんですが、可能なのでしょうか?
>
>For〜nextで試したんですが、
>ComboBox(n) の()内の記述が分かりませんでした・・・
>
>ご教授お願いします。

【37785】Re:コンボボックスについて
お礼  ゼロ  - 06/5/18(木) 18:01 -

引用なし
パスワード
   kobasanさん、早速の返信ありがとうございます。

me.controlsでチャレンジしてたんですが、ダメでした・・・

>>Private Sub test_click()
>>With Sheet2
>  for i=1 to 4
>   .Cells(9+i, 1) = me("ComboBox" & i)
>  next
>
>>End With
>>End Sub

=me() というのは、me.controlsと同じと解釈していいんですよね?
省略できるのは初めて知りました!
ありがとうございます!

【37786】Re:コンボボックスについて
発言  kobasan  - 06/5/18(木) 18:12 -

引用なし
パスワード
   ゼロ さん 今晩は。


>=me() というのは、me.controlsと同じと解釈していいんですよね?

そうです。UserForm上のコントロールということです。


   .Cells(9 + i, 1) = Me("ComboBox" & i).Value

今回は、Me()を使ってみました。
Controlsを使うなら、

   .Cells(9 + i, 1) = Me.Controls("ComboBox" & i).Value
です。

【37788】Re:コンボボックスについて
お礼  ゼロ  - 06/5/18(木) 18:29 -

引用なし
パスワード
   kobasanさん

すごく親切な回答ありがとうございます!
助かります!

また質問するかと思いますがよろしくお願いします!

【37790】Re:コンボボックスについて
発言  T  - 06/5/18(木) 20:14 -

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

お邪魔します。
何か小生にもこの種の内容が利用させていただけそうな気がするのですが

Private Sub test_click()
With Sheet2
  For i = 1 To 4
   .Cells(9 + i, 1) = Me("ComboBox" & i)
  Next

End With
End Sub

このコードはどこに貼り付けるのでしょうか?
教えていただけませんでしょうか。

【37793】Re:コンボボックスについて
発言  kobasan  - 06/5/18(木) 20:42 -

引用なし
パスワード
   T さん 今晩は。

>このコードはどこに貼り付けるのでしょうか?
>教えていただけませんでしょうか。

ユーザーフォームをつくり、ユーザーフォームのモジュールに貼り付けます。

【37797】Re:コンボボックスについて
質問  T  - 06/5/18(木) 21:07 -

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

>ユーザーフォームをつくり、ユーザーフォームのモジュールに貼り付けます。
ありがとう御座います。

ユーザーフォームでは
Private Sub CommandButton1_Click()
Private Sub UserForm_Click()
はよく使うんですが・・・

UserForm1を作り、Combobox1を配しましたが・・・
Private Sub test_click()
は、どの部分に貼り付けるんでしょうか?Userform1のCommandBottunなのでしょうか?

【37799】Re:コンボボックスについて
発言  kobasan  - 06/5/18(木) 21:24 -

引用なし
パスワード
   今晩は。

>Private Sub test_click()
の中のコードを、CommandButton が CommandButton1なら

Private Sub CommandButton1_Click()
  ここに貼り付ける
End Sub

これで、CommandButton1をクリックすると実行されます。

>は、どの部分に貼り付けるんでしょうか?Userform1のCommandBottunなのでしょうか?

【37804】Re:コンボボックスについて
お礼  T  - 06/5/18(木) 22:25 -

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

ありがとう御座いました。

Private Sub test_click()
と書かれていたものですから、一寸勘違いをしました。
Private Sub CommandButton1_Click()
のことだったのですね。

動作は、
少し小生のイメージと異なる動作でした。

4行ずつ、尺取のようなことをイメージしていました。
10行目から4行、次は15行目から4行・・・繰り返し・・・を入力していくような
作業をしているものですから・・・
もし、時間が許せましたら、このコードも書いていただけませんでしょか。
不躾なお願いで失礼します。

でも勉強になりました。ありがとう御座いました。
横からお邪魔し、ご無礼致しました。

【37807】Re:コンボボックスについて
発言  kobasan  - 06/5/18(木) 23:49 -

引用なし
パスワード
   T さん 今晩は。

>4行ずつ、尺取のようなことをイメージしていました。
>10行目から4行、次は15行目から4行・・・繰り返し・・・を入力していくような
>作業をしているものですから・・・
>もし、時間が許せましたら、このコードも書いていただけませんでしょか。

A列に転記するのなら、こんなコードになります。

Private Sub CommandButton1_Click()
Dim LastRow As Long, i As Long
  With Sheet1
    LastRow = .Cells(65536, 1).End(xlUp).Row
    For i = 1 To 4
      If LastRow < 10 Then LastRow = 9
      .Cells(LastRow + i, 1) = Me("ComboBox" & i).Value
      '.Cells(LastRow + i, 1) = Me.Controls("ComboBox" & i).Value
    Next
  End With
End Sub

【37809】Re:コンボボックスについて
お礼  T  - 06/5/19(金) 6:27 -

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

おはよう御座います。

早速ご回答を頂きまして、感謝しております。
この方法を利用させていただきます。
ありがとう御座いました。

テキストボックスでも同じ動作が出来ますね。

コンボボックスの理解をこれから深めたいと思いますが、
コンボボックスの一つの窓で4行ないし5行のデータを
入れて(手作業で)データをエクセルに貼り込んでいくということも
できるのでしょうか。結果は今回ご回答いただいたものと
同じにさせることができるのでしょうか。

今回頂きましたコードは非常に参考になり、喜んでおります。
ありがとう御座いました。

【37836】Re:コンボボックスについて
発言  kobasan  - 06/5/19(金) 22:00 -

引用なし
パスワード
   T さん 今晩は。

>コンボボックスの一つの窓で4行ないし5行のデータを
>入れて(手作業で)データをエクセルに貼り込んでいくということも
>できるのでしょうか。結果は今回ご回答いただいたものと
>同じにさせることができるのでしょうか。


コンボボックスでは複数のデータを選ぶことはできません。

ListBoxのMultiSelectを使うと、複数のデータを選ぶことはできますが、ListBoxでデータをセレクトした順とセルに出力する順のことなどを考えると、あまり良い方法とは思えません。

セレクトした順とセルに出力する順のことも考え、いろいろ試してみましたが、コードが複雑になったり、もっと細かく考えないと良い仕上がりにならないと思いました。

簡単に済まそうと思えば、これまでのコンボボックスを複数使った方法の方が良いと思います。

【37845】Re:コンボボックスについて
お礼  T  - 06/5/20(土) 18:28 -

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

ありがとう御座いました。
よく理解できました。今後ともよろしくお願いします。

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