Excel VBA質問箱 IV

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

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


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

【73554】コンボボックスと複数のテキストボックスの連動について チロル 13/1/20(日) 23:22 質問[未読]
【73555】Re:コンボボックスと複数のテキストボック... kanabun 13/1/21(月) 0:34 発言[未読]
【73558】Re:コンボボックスと複数のテキストボック... チロル 13/1/21(月) 10:36 質問[未読]
【73559】Re:コンボボックスと複数のテキストボック... UO3 13/1/21(月) 10:59 発言[未読]
【73560】Re:コンボボックスと複数のテキストボック... UO3 13/1/21(月) 11:04 発言[未読]
【73561】Re:コンボボックスと複数のテキストボック... チロル 13/1/21(月) 12:13 発言[未読]
【73562】Re:コンボボックスと複数のテキストボック... UO3 13/1/21(月) 12:30 発言[未読]
【73565】Re:コンボボックスと複数のテキストボック... チロル 13/1/21(月) 12:49 発言[未読]
【73566】Re:コンボボックスと複数のテキストボック... kanabun 13/1/21(月) 12:56 発言[未読]
【73563】Re:コンボボックスと複数のテキストボック... kanabun 13/1/21(月) 12:44 発言[未読]
【73567】Re:コンボボックスと複数のテキストボック... チロル 13/1/21(月) 13:15 お礼[未読]
【73564】Re:コンボボックスと複数のテキストボック... UO3 13/1/21(月) 12:47 発言[未読]
【73568】Re:コンボボックスと複数のテキストボック... チロル 13/1/21(月) 13:35 お礼[未読]

【73554】コンボボックスと複数のテキストボックス...
質問  チロル  - 13/1/20(日) 23:22 -

引用なし
パスワード
   初めまして。チロルと申します。VBAをまだ勉強しはじめたばかりの初心者です。
下記内容をYAHOO知恵袋で同じ質問をいたしました。

コンボボックスと複数のテキストボックスの連動について教えて頂きたいと思います。

別シートに↓のような表を作成し、コンボボックスに3列表示しています。

  A    B       C
1  1  りんご     青森
2  2  もも       岡山
3  3  いちご     福岡
4  4  さくらんぼ    山形

コンボボックスで「1」を選んだら、textbox1に「りんご」、textbox2には「青森」を表示させたいのです。

現在のコードは↓です。

Private Sub UserForm_initialize()

With Me.bunrui
.ColumnCount = 3
.RowSource = Sheet3.Range("F10", Sheet3.Range("H250").End(xlUp)).Address(, , , True)
.ColumnHeads = True
.ListWidth = 500
.ColumnWidths = "50;300;100"

End With
End Sub

================
'入力データ貼り付け
Private Sub ChangeMe()
○○○.ControlSource = "b" & myRowN
○○○.ControlSource = "c" & myRowN
・・・・・・↓↓
bunrui.ControlSource = "p" & myRowN
TextBox1.ControlSource = "q" & myRowN
TextBox2.ControlSource = "r" & myRowN

================
Private Sub bunrui_Change()
With Me.bunrui
Me.TextBox1.Value = .Column(1)
Me.TextBox2.Value = .Column(2)
End With
End Sub

実行する時に「実行時エラー381 columnプロパティの値が取得できません。」と出て、「 Me.TextBox1.Value = .Column(1)」が黄色に表示されます。

何がいけなかったのか、分かりません。ご教授お願いしたいと思います。
どうぞよろしくお願いいたします。

【73555】Re:コンボボックスと複数のテキストボッ...
発言  kanabun  - 13/1/21(月) 0:34 -

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

>別シートに↓のような表を作成し、コンボボックスに3列表示しています。
>
>  A    B       C
>1  1  りんご     青森
>2  2  もも       岡山
>3  3  いちご     福岡
>4  4  さくらんぼ    山形

コードのRowSourceは ↑の説明とちがって Sheet3[F10]からの3列のようですが?

>実行する時に「実行時エラー381 columnプロパティの値が取得できません。」と出て、「 Me.TextBox1.Value = .Column(1)」が黄色に表示されます。

以下だけなら、そのようなエラーは出ず、首尾よくリストされ、ComboBoxで
どれかを選ぶと、TextBoxに リストの2列目と3列目が表示されます。

'---------------------------------------
Option Explicit

Private Sub UserForm_initialize()

  With bunrui
    .ColumnCount = 3
    .RowSource = Sheet3.Range("F10", _
          Sheet3.Range("H250").End(xlUp)) _
          .Address(, , , True)
    .ColumnHeads = True
    .ListWidth = 500
    .ColumnWidths = "50;300;100"
  End With
End Sub

Private Sub bunrui_Change()
  With bunrui
    TextBox1.Value = .Column(1)
    TextBox2.Value = .Column(2)
  End With
End Sub

(Meは不要です)

【73558】Re:コンボボックスと複数のテキストボッ...
質問  チロル  - 13/1/21(月) 10:36 -

引用なし
パスワード
   >kanabun さん:

早速のご回答ありがとうございました。
>コードのRowSourceは ↑の説明とちがって Sheet3[F10]からの3列のようですが?
ご指摘のとおり、f列からです。すいませんでした。

早速、ご回答いただいたとおりにしてみたのですが、前回と同じエラーが出て実行できませんでした。

どうすればいいのか分かりません。
何度もすいませんが、よろしくお願いいたします。

>▼チロル さん
>'---------------------------------------
>Option Explicit
>
>Private Sub UserForm_initialize()
>
>  With bunrui
>    .ColumnCount = 3
>    .RowSource = Sheet3.Range("F10", _
>          Sheet3.Range("H250").End(xlUp)) _
>          .Address(, , , True)
>    .ColumnHeads = True
>    .ListWidth = 500
>    .ColumnWidths = "50;300;100"
>  End With
>End Sub
>
>Private Sub bunrui_Change()
>  With bunrui
>    TextBox1.Value = .Column(1)
>    TextBox2.Value = .Column(2)
>  End With
>End Sub
>
>(Meは不要です)

【73559】Re:コンボボックスと複数のテキストボッ...
発言  UO3  - 13/1/21(月) 10:59 -

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

こんにちは

ヨコから失礼します。
操作としてコンボボックスリストから選ばず、コンボボックスに直接入力していません?
もし、その場合、リストにない数字を打ち込んでも(しかも1文字打ち込むだけで)
Changeイベントが発生します。
それが、リストにある値ならOKですが、なかった場合はりすととの紐つけができませんので
エラーになります。

Private Sub bunrui_Change()
  With bunrui
    If .ListIndex >= 0 Then
      TextBox1.Value = .Column(1)
      TextBox2.Value = .Column(2)
    End If
  End With
End Sub

こうしてみるとどうでしょうか?

【73560】Re:コンボボックスと複数のテキストボッ...
発言  UO3  - 13/1/21(月) 11:04 -

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

追伸でテーマとははずれますが・・・

私自身の好みといいましょうか、ユーザーフォームのコンボボックス処理において
Changeイベントは原則使わないようにしています。
コンボボックスに限らずテキストボックスなんかでも同様なんですが
とくにコンボボックスの場合、↑でいいましたようにユーザーフォームのChangeイベントは
シートのセルのChangeイベントとは異なり、「1文字」ごとに発生します。

シートのセルのChageいべんとなら、入力が完了した時点で1回だけ発生するわけですが。
で、ユーザーフォームのイベントで、シートのセルのChangeイベントにあたるものは
AfterUpdate とか BeforeUpdate といった Exit系のイベントです。
ですので、私は、このExit系のイベントを利用しますね。

【73561】Re:コンボボックスと複数のテキストボッ...
発言  チロル  - 13/1/21(月) 12:13 -

引用なし
パスワード
   >UO3 さん:
こんにちは。ご回答ありがとうございます。
コンボボックスはリストの数字を選んでいます。

>Changeイベントは原則使わないようにしています。
初心者なもので、他に良いやり方がありましたらご教授おねがいします。

【73562】Re:コンボボックスと複数のテキストボッ...
発言  UO3  - 13/1/21(月) 12:30 -

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

>コンボボックスはリストの数字を選んでいます。

であれば、kanabunさんのコードで問題はないと思いますが?
こちらで、そのまま貼り付けて動かしてますけど、「スイスイ」いきますよ?

>>Changeイベントは原則使わないようにしています。
>初心者なもので、他に良いやり方がありましたらご教授おねがいします。

時間がとれれば、ちょっとコード案を書いてみます。

【73563】Re:コンボボックスと複数のテキストボッ...
発言  kanabun  - 13/1/21(月) 12:44 -

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

>Private Sub bunrui_Change()
>  With bunrui
>    TextBox1.Value = .Column(1)
>    TextBox2.Value = .Column(2)
>  End With
>End Sub

このプロシージャ名を

Private Sub bunrui_Click()

としてみても、同じですか?

【73564】Re:コンボボックスと複数のテキストボッ...
発言  UO3  - 13/1/21(月) 12:47 -

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

Exit系のイベントでコードをアップしようと思ったんですが、ちょっと躊躇しました。
アップされたコード以外の部分が見えないのですがユーザーフォーム上で、
どのような手順で入力されるのかによってはExit系のイベントでは
TextBoxへの反映のタイミングで不平不満がでるかも?
(選択したり入力した時点では転記されず、コンボボックスから別のコントロールに
 フォーカスが移った時点での転記になりますので)

なので、現行の通り、Changeイベントで処理されるのがいいかもしれません。
ただ、存在しない値だった場合に、TextBoxをクリアしたほうがいいかもしれませんね。

Private Sub bunrui_Change()
  With bunrui
    If .ListIndex < 0 Then
      TextBox1.Value = Empty
      TextBox2.Value = Empty
    Else
      TextBox1.Value = .Column(1)
      TextBox2.Value = .Column(2)
    End If
  End With
End Sub

【73565】Re:コンボボックスと複数のテキストボッ...
発言  チロル  - 13/1/21(月) 12:49 -

引用なし
パスワード
   >UO3 さん:

>であれば、kanabunさんのコードで問題はないと思いますが?
>こちらで、そのまま貼り付けて動かしてますけど、「スイスイ」いきますよ?
試しに新規シートを作って動かすと私にもできました。
ただ、今、作成中のシートに組み込むとエラーが出ます。

controlsoursで、表示したものを別のシートに反映させるので、何か変になるのでしょうか?

>時間がとれれば、ちょっとコード案を書いてみます。
お手数おかけしますが、よろしくお願いいたします。

【73566】Re:コンボボックスと複数のテキストボッ...
発言  kanabun  - 13/1/21(月) 12:56 -

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

>controlsoursで、表示したものを別のシートに反映させるので、何か変になるのでしょうか?

ですねぇ、すなおに

シートのセル.Value = TextBox1.Text

のように書けないですか?


【73567】Re:コンボボックスと複数のテキストボッ...
お礼  チロル  - 13/1/21(月) 13:15 -

引用なし
パスワード
   >kanabun さん:


>Private Sub bunrui_Click()
>としてみても、同じですか?

変更したら、できました!
本当にありがとうございました!

【73568】Re:コンボボックスと複数のテキストボッ...
お礼  チロル  - 13/1/21(月) 13:35 -

引用なし
パスワード
   >UO3さん

Change→Clickに変更したらできました。

UO3さんのご回答を見て、いろんなやり方があるんだなー…と本当に勉強になりました。

私もこれから、頑張って勉強したいと思います。
本当にありがとうございました。

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