Excel VBA質問箱 IV

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

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


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

【30837】Comboboxの複数使用時のマクロ記述について kiyoshi 05/11/5(土) 17:42 質問[未読]
【30838】Re:Comboboxの複数使用時のマクロ記述につ... かみちゃん 05/11/5(土) 18:01 発言[未読]
【30861】Re:Comboboxの複数使用時のマクロ記述に... kiyoshi 05/11/6(日) 2:01 質問[未読]
【30873】Re:Comboboxの複数使用時のマクロ記述に... かみちゃん 05/11/6(日) 14:02 発言[未読]
【30876】Re:Comboboxの複数使用時のマクロ記述に... kiyoshi 05/11/6(日) 14:25 お礼[未読]

【30837】Comboboxの複数使用時のマクロ記述につい...
質問  kiyoshi  - 05/11/5(土) 17:42 -

引用なし
パスワード
   はじめまして、色々なページを検索した結果近い回答がなかったので質問させて
頂きます。ちなみに初心者なのでよろしくお願いします。

現在、見積書の雛形を作成しており製品リストをDATAシートに展開しております。
---DATA1シート---
 製品名   単価
 製品A   \10000
 製品B   \20000
 製品C   \30000
こんな感じです。
上記、製品名を選択し、単価を自動で単価セルに表示する形式です。

選択用のComboboxは約5〜6個にしております。
(Conboboxは、上記DATA1の製品名を使用)
この時のVBA上の記載をシンプルにしたくて上手く行く方法を探しています。
現在、SELECT文をComboboxの数だけ作成しております。
これをFor〜Next文を使って設定できないでしょうか?
説明不足かもしれませんが、よろしくお願い致します。

【30838】Re:Comboboxの複数使用時のマクロ記述に...
発言  かみちゃん  - 05/11/5(土) 18:01 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>上記、製品名を選択し、単価を自動で単価セルに表示する形式です。
>
>選択用のComboBoxは約5〜6個にしております。
>(ComboBoxは、上記DATA1の製品名を使用)
>この時のVBA上の記載をシンプルにしたくて上手く行く方法を探しています。
>現在、SELECT文をComboboxの数だけ作成しております。

質問の趣旨が今ひとつつかめません。
ComboBoxが5〜6個あるのですか?
もしかして、選択肢が5〜6個ではないのでしょうか?
もし、ご自分でできているものがあるならば、コードを提示することはできませんか?

【30861】Re:Comboboxの複数使用時のマクロ記述に...
質問  kiyoshi  - 05/11/6(日) 2:01 -

引用なし
パスワード
   こんばんは、かみちゃんさま・・・よろしくお願いします。
中途半端な説明ですみません。
記述は以下の状態です。
----以下

Private Sub ComboBox1_Change()
  
Dim tanka As Variant '単価
Dim kisuu As Variant '個数
Dim i As Long
i = Me.ComboBox1.ListIndex + 1
  Worksheets("Data1").Cells(4, 4) = i
  'Select Case ComboBox1.Value
  'Case "製品A(基本) (C-A000)"
  Select Case i
  Case 1   '"製品A(基本) (C-A000)"
     Worksheets("Sheet1").Cells(20, 25) = Worksheets("Data1").Cells(2, 3)
     tanka = Worksheets("Data1").Cells(2, 3)
     kisuu = Worksheets("Sheet1").Cells(20, 33)
     Worksheets("Sheet1").Cells(20, 39) = tanka * kisuu
  Case 2   '"製品A(タイプ1) (C-A001)"
     Worksheets("Sheet1").Cells(20, 25) = Worksheets("Data1").Cells(3, 3)
     tanka = Worksheets("Data1").Cells(3, 3)
     kisuu = Worksheets("Sheet1").Cells(20, 33)
     Worksheets("Sheet1").Cells(20, 39) = tanka * kisuu
   ・
  (途中省略)
   ・
  Case 10  '"製品B(オプションb) (C-B01b)"
     Worksheets("Sheet1").Cells(20, 25) = Worksheets("Data1").Cells(11, 3)
     tanka = Worksheets("Data1").Cells(11, 3)
     kisuu = Worksheets("Sheet1").Cells(20, 33)
     Worksheets("Sheet1").Cells(20, 39) = tanka * kisuu
  Case Else
    
     Exit Sub
  
  End Select

End Sub

このように同じ内容の記述をComboboxが増える毎に記述するのかな?
と疑問思っています。
できれば、一つのPrivate Subだけで、他のComboboxも処理できればと
思っておりますが、可能でしょうか?
説明不足な点がありましたら、またコメントをお願いします。

【30873】Re:Comboboxの複数使用時のマクロ記述に...
発言  かみちゃん  - 05/11/6(日) 14:02 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>このように同じ内容の記述をComboboxが増える毎に記述するのかな?
>と疑問思っています。
>できれば、一つのPrivate Subだけで、他のComboboxも処理できればと
>思っておりますが、可能でしょうか?

まだ、各ComboBoxの機能がよく見えないのですが、以下のような感じでできると思います。

Private Sub ComboBox1_Change()
 
 Dim tanka As Variant '単価
 Dim kisuu As Variant '個数
 Dim i As Long
 i = Me.ComboBox1.ListIndex + 1
 
 If i < 1 Or i > 10 Then Exit Sub
 With Worksheets("Data1")
  .Cells(4, 4).Value = i
  tanka = .Cells(i + 1, 3).Value
 End With
 
 With Worksheets("Sheet1")
  .Cells(20, 25).Value = tanka
  kisuu = .Cells(20, 33).Value
  .Cells(20, 39).Value = tanka * kisuu
 End With
End Sub

このコードを各ComboBoxとも同じようにするのであれば、以下のような感じでできるかと思います。

Private Sub ComboBox1_Change()
 TankaKisuu
End Sub

Private Sub ComboBox2_Change()
 TankaKisuu
End Sub

Function TankaKisuu()
 Dim tanka As Variant '単価
 Dim kisuu As Variant '個数
 Dim i As Long
 i = Me.ComboBox1.ListIndex + 1
 
 If i < 1 Or i > 10 Then Exit Sub
 With Worksheets("Data1")
  .Cells(4, 4).Value = i
  tanka = .Cells(i + 1, 3).Value
 End With
 
 With Worksheets("Sheet1")
  .Cells(20, 25).Value = tanka
  kisuu = .Cells(20, 33).Value
  .Cells(20, 39).Value = tanka * kisuu
 End With
End Function

【30876】Re:Comboboxの複数使用時のマクロ記述に...
お礼  kiyoshi  - 05/11/6(日) 14:25 -

引用なし
パスワード
   こんにちは、kiyoshiです。

かみちゃんさんありがとうございます。

かなりわかり易く教えていただきありがとうございます。
また、こちらで質問させて頂くことがあると思いますので、
よろしくお願い致します。

▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>このように同じ内容の記述をComboboxが増える毎に記述するのかな?
>>と疑問思っています。
>>できれば、一つのPrivate Subだけで、他のComboboxも処理できればと
>>思っておりますが、可能でしょうか?
>
>まだ、各ComboBoxの機能がよく見えないのですが、以下のような感じでできると思います。
>
>Private Sub ComboBox1_Change()
> 
> Dim tanka As Variant '単価
> Dim kisuu As Variant '個数
> Dim i As Long
> i = Me.ComboBox1.ListIndex + 1
> 
> If i < 1 Or i > 10 Then Exit Sub
> With Worksheets("Data1")
>  .Cells(4, 4).Value = i
>  tanka = .Cells(i + 1, 3).Value
> End With
> 
> With Worksheets("Sheet1")
>  .Cells(20, 25).Value = tanka
>  kisuu = .Cells(20, 33).Value
>  .Cells(20, 39).Value = tanka * kisuu
> End With
>End Sub
>
>このコードを各ComboBoxとも同じようにするのであれば、以下のような感じでできるかと思います。
>
>Private Sub ComboBox1_Change()
> TankaKisuu
>End Sub
>
>Private Sub ComboBox2_Change()
> TankaKisuu
>End Sub
>
>Function TankaKisuu()
> Dim tanka As Variant '単価
> Dim kisuu As Variant '個数
> Dim i As Long
> i = Me.ComboBox1.ListIndex + 1
> 
> If i < 1 Or i > 10 Then Exit Sub
> With Worksheets("Data1")
>  .Cells(4, 4).Value = i
>  tanka = .Cells(i + 1, 3).Value
> End With
> 
> With Worksheets("Sheet1")
>  .Cells(20, 25).Value = tanka
>  kisuu = .Cells(20, 33).Value
>  .Cells(20, 39).Value = tanka * kisuu
> End With
>End Function

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