Excel VBA質問箱 IV

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

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


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

【42122】列の選択をシート上のリストボックスからユーザーフォーム上に変更する GPA 06/9/1(金) 21:12 質問[未読]
【42123】Re:列の選択をシート上のリストボックス... ponpon 06/9/1(金) 23:08 発言[未読]
【42125】Re:列の選択をシート上のリストボックス... GPA 06/9/2(土) 11:37 お礼[未読]
【42160】Re:列の選択をシート上のリストボックス... ponpon 06/9/3(日) 9:47 発言[未読]
【42124】Re:列の選択をシート上のリストボックスか... ichinose 06/9/1(金) 23:19 発言[未読]
【42126】Re:列の選択をシート上のリストボックスか... GPA 06/9/2(土) 11:53 質問[未読]
【42142】Re:列の選択をシート上のリストボックスか... ichinose 06/9/2(土) 19:25 発言[未読]
【42145】Re:列の選択をシート上のリストボックスか... GPA 06/9/2(土) 20:27 お礼[未読]

【42122】列の選択をシート上のリストボックスから...
質問  GPA  - 06/9/1(金) 21:12 -

引用なし
パスワード
   コンボボックスの値を、シートA列からE列に入力するようにしています。
シート上のリストボックスのリンク先をCells(6,7)として列選択を
しています。この列選択をフォーム上に作成するには、どのように
すると良いのでしょうか、アドバイスお願いします。


Private Sub CommandButton1_Click()
  Cells(65536, Cells(6, 7).Value).End(xlUp).Offset(1) = ComboBox1.Value
End Sub

【42123】Re:列の選択をシート上のリストボックス...
発言  ponpon  - 06/9/1(金) 23:08 -

引用なし
パスワード
   ▼GPA さん:
>コンボボックスの値を、シートA列からE列に入力するようにしています。
>シート上のリストボックスのリンク先をCells(6,7)として列選択を
>しています。この列選択をフォーム上に作成するには、どのように
>すると良いのでしょうか、アドバイスお願いします。
>
>
>Private Sub CommandButton1_Click()
>  Cells(65536, Cells(6, 7).Value).End(xlUp).Offset(1) = ComboBox1.Value
>End Sub

いまいち仕様が良くわかっていませんが、
今シート上のCells(6,7)に"1","2","3","4"としているのを、
ユーザーフォーム上でやりたいということですか?
私なら、もうひとつのコンボボックスから"A","B","C","D","E"を選択させますね。
テキストボックスに欠かせてもいいし、リストボックスでもいいと思います。
また、フレームを用意して、オプションボタンを五つ、ラベルを五つ用意しても
いいと思いますが、私は、コンボボックスのほうが好きです。
こんな感じでしょうか?
コンボボックスにした場合:

Private Sub CommandButton1_Click()
 
  Sheets("Sheet1").Cells(65536, Me.ComboBox2.Value).End(xlUp).Offset(1) = ComboBox1.Value
End Sub


Private Sub UserForm_Initialize()
   Me.ComboBox1.List = Array("あ", "い", "う", "え", "お", "か", "き", "く") 
        ’これは、勝手にやってます。
   Me.ComboBox2.List = Array("A", "B", "C", "D", "E")
End Sub

【42124】Re:列の選択をシート上のリストボックス...
発言  ichinose  - 06/9/1(金) 23:19 -

引用なし
パスワード
   ▼GPA さん:
こんばんは。

>コンボボックスの値を、シートA列からE列に入力するようにしています。
>シート上のリストボックスのリンク先をCells(6,7)として列選択を
>しています。この列選択をフォーム上に作成するには、どのように
>すると良いのでしょうか、アドバイスお願いします。
>
>
>Private Sub CommandButton1_Click()
>  Cells(65536, Cells(6, 7).Value).End(xlUp).Offset(1) = ComboBox1.Value
>End Sub
↑このコードを変更なしで使うなら・・・・、

Userform1にリストボックス(Listbox1)を配置してください。
このフォームのモジュールに

'=========================================================
Private Sub UserForm_Initialize()
  With ListBox1
    .ControlSource = "sheet1!g6"
'    これは、事前にプロパティ設定もできます
'   リストボックスで選択した列番号を入力したいセルをシート名から指定する
    .List = Array(1, 2, 3, 4, 5)
    .ListIndex = 0
    End With
End Sub

これで指定シートのセルG6にリストボックスで選択した列番号が
入ります。


試してみてください。

【42125】Re:列の選択をシート上のリストボックス...
お礼  GPA  - 06/9/2(土) 11:37 -

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

分かりにくい説明で恐縮しています。
回答ありがとうございました。考えていたフォームの仕上げが
出来ました。これが最終のコードです。
2行目をMe.ComboBox2.Valueでエラーがでて、Valueを外すと
上手く動作しました。理由が分かりませんが??

Private Sub CommandButton1_Click()
  Cells(65536, Me.ComboBox2).End(xlUp).Offset(1) = ComboBox1.Value
End Sub


Private Sub UserForm_Initialize()
  Me.ComboBox1.List = Sheets("Sheet2").Range("F6:F25").Value
  Me.ComboBox2.List = Array(1, 2, 3, 4, 5)

End Sub

フォームの作成をこれからも学びたくまた質問をさせていただきます。
その折には、またご指導のほどよろしくお願いします。

【42126】Re:列の選択をシート上のリストボックス...
質問  GPA  - 06/9/2(土) 11:53 -

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

おはようございます。ご回答ありがとうございました。
試して見ました、ありがとうございます。

>Private Sub UserForm_Initialize()
>  With ListBox1
>    .ControlSource = "sheet1!g6"
>'    これは、事前にプロパティ設定もできます
>'   リストボックスで選択した列番号を入力したいセルをシート名から指定する
>    .List = Array(1, 2, 3, 4, 5)
>    .ListIndex = 0
>    End With
>End Sub

フォームのリストボックスからsheet!g6の値を1〜5まで変更をすることは
出来ませんですね。あくまでシートのg6の値が優先して反映されると
理解しても良いでしょうか?
出来得れば、フォーム上からg6の値を変更できると、ありがたいのですが。

【42142】Re:列の選択をシート上のリストボックス...
発言  ichinose  - 06/9/2(土) 19:25 -

引用なし
パスワード
   ▼GPA さん:
こんばんは。

>
>おはようございます。ご回答ありがとうございました。
>試して見ました、ありがとうございます。
>
>>Private Sub UserForm_Initialize()
>>  With ListBox1
>>    .ControlSource = "sheet1!g6"
>>'    これは、事前にプロパティ設定もできます
>>'   リストボックスで選択した列番号を入力したいセルをシート名から指定する
>>    .List = Array(1, 2, 3, 4, 5)
>>    .ListIndex = 0
>>    End With
>>End Sub
>
>フォームのリストボックスからsheet!g6の値を1〜5まで変更をすることは
>出来ませんですね。
上記のコードでリストボックスの選択を変更すればセルSheet1!G6の値は
変更されますが、確認できませんか?

>あくまでシートのg6の値が優先して反映されると
>理解しても良いでしょうか?
↑これの意味がわかりませんが・・・。


>出来得れば、フォーム上からg6の値を変更できると、ありがたいのですが。
上記のコードのリストボックスのControlSourceというプロパティを
使用しなくてもセルSheet1!G6の値を変更する方法はあります。
例えば、
worksheets("sheet1").range("g6").value=listbox1.value

でも、ControlSourceで同じことが出来るなら、
それに越したことはないと思いますけどね!!
まっ、どの方法が最適かは、これは仕様によって違ってきますから
試してみてください。

【42145】Re:列の選択をシート上のリストボックス...
お礼  GPA  - 06/9/2(土) 20:27 -

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

ありがとうございました。今分かりました。
連絡を入れようと思い、掲示板を開きましたら、
ichinoseさんから新たに連絡を入れていただき
恐縮しています。

何度も、お手数をおかけしました。
ありがとうございました。

【42160】Re:列の選択をシート上のリストボックス...
発言  ponpon  - 06/9/3(日) 9:47 -

引用なし
パスワード
   ▼GPA さん:
解決済みなので、もう見ていないかもしれませんが・・・

>2行目をMe.ComboBox2.Valueでエラーがでて、Valueを外すと
>上手く動作しました。理由が分かりませんが??

私が提示したのが、
Me.ComboBox2.List = Array("A", "B", "C", "D", "E")

GPA さんのは、
>Me.ComboBox2.List = Array(1, 2, 3, 4, 5)

コンボボックスの値は、文字として扱われると思うので、
私のは、うまくいきCell(65536,"A")、
GPA さんのはは、Cell(65536,"1")でエラーになるのでは?
.valueをはずすと、エクセル君が賢く数字として判断してくれたのでは
ないでしょうか?
数値として判断させるためには、
Cells(65536, Val(Me.ComboBox2.Value)).End(xlUp).Offset(1) = ComboBox1.Value
とすれば、良いと思います。
内部で文字として扱われているというのは
間違っているかもしれません。
詳しい方解説を お願いします。

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