[[20040824033446]] 『ユーザーフォームについて』(鈴本) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォームについて』(鈴本)

お世話になっております。またわからないことがありましたので、質問させていただきます。

例 商品名 システムバスA システムバスB 仕入価格 10000 20000

ユーザーフョームで、Label1に「商品名」と変更します。次にcomboBox1に「システムバスA」「システムバスB」の項目を選択できるようにします。そのときにシステムバスAを選択したら、10000と認識され、システムバスBを選択したら、20000と認識できるようにして、計算したいのですが、コードの記述の仕方が分からないて困っております。仕事の関係上、どうしても仕入価格の金額をコンボボックスなどに表示せずにシークレットにしておきたいので、どなたかご教授お願します。セル上にデータはなく、ユーザーフョーム内のデータはコードの記述で追加します。そうしますと、計算のコードの記述で、「comboBox1」の部分をどのようにコードを記述したらよいか分からないので、お手数ですが、こちらのほうもご教授お願します。

下記は、計算のコードの記述です。

Private Sub CommandButton1_Click()

TextBox1.Text = ComboBox1 / (1 - Format(ComboBox2.Value, "0.00") + Format(ComboBox3.Value, "0.000"))


 まず最初にそのユーザーフォームのGeneral Declarations(モジュールの1番上)に
 Dim data As Longと宣言し
 そのフォームのモジュールに

  Private Sub ComboBox1_Change()
    data = IIf(ComboBox1 = "システムバスA", 10000, 20000)
 End Sub
 '---------------------
 Private Sub CommandButton1_Click()

 TextBox1.Text = data/ (1 - Format(ComboBox2.Value, "0.00") + Format(ComboBox3.Value, "0.000"))

 でいっぺん試してみておくんなはれ。
     (弥太郎)


弥太郎さんご回答ありがとうございます。上記に書かれているコードを記述したところ、解決しました。後、大変申し訳ないのですが、comboBox1の項目をシステムバスA、システムバスB、システムバスC、システムバスD、システムバスE…と項目を追加して、システムバスA=10000 システムバスB=20000 システムC=30000 システムバスD=40000 システムバスE=50000…と認識させて計算するには、どのようにコードを記述したらよいかわかりません。お手数ですが、ご教授お願します。


 関西弁のVBAおじさんはオリンピック観戦かな?
代打です。
システムバスA〜システムバスEが順序良くListindexの0から4に
収まっており、例示のように10000ずつ数値が定量的に増えていくものと
すれば、ComboBox1_Changeイベントを次のように書き換えます。
 
 Private Sub ComboBox1_Change()
    data = Me.ComboBox1.ListIndex * 10000 + 10000
 End Sub
 
(KAMIYA)


KAMIYAさんご回答ありがとうございます。私の例示の書き方がおかしくて申し訳ないのですが、確かにコンボボックスから、システムバスA等の複数の項目を追加して
選んで、数字として認識させるようにして計算したいのですが、数字が定量的に増えていく等の規則はないのですが、それでも数字として認識させることは、可能でしょうか?可能でしたらコードの記述の仕方がわからないので、お手数ですが、ご教授お願します。

 >数字が定量的に増えていく等の規則はないのですが、
最初から規則性がない旨書いていただくか、
実際に使用する数値を書いていただくかしないと
仕切りなおしになってお互いが時間を浪費しちゃいます。
プログラミングをする人は「なるべく単純に」が癖になるので
単純化した例には単純化した回答しか返ってこない場合が多いです。
なるべく『ネタの後出し』『ネタの小出し』のないように心がけると
仕切り直しが少なくて済みます。
 
この学校では「そっぽ」向いちゃうほどの人は少ないですが。
下記例はConstの部分で数値のメンテナンスを行います。
 Private Sub ComboBox1_Change()
 Dim MyVar
 Const MyStr = "10000,10100,12300,14000,20000"
 MyVar = Split(MyStr, ",")
    data = Val(MyVar(Me.ComboBox1.ListIndex))
 End Sub
 
計算は弥太郎さんのCommandButton1_Clickがそのまま使えます。 
(KAMIYA)


KAMIYAさんまたご回答ありがとうございます。上記のコードを記述しましたところ解決しました。 今後質問していくときは、KAMIYAさんのおっしゃるとおり気をつけたいと思います。手間を取らせて申し訳ないです。


 KAMIYAはん、毎度おおきに。
 変人の巣窟からも、弥太郎の背後霊、やなかった、守護神からもなかなか脱却でけま
 へんなぁ。 ま、Mr.KAMIYAの運命やと諦める事が肝心デス。(笑)

 >この学校では「そっぽ」向いちゃうほどの人は少ないですが。
 正直に白状すれば私はその少ない方に入ってます、ハイ。
 せやから、もし今日仕事が無うてパソコンの前に座っとったら髪の毛ぇが逆立ってまし
 たやろなぁ、危ない、危ない。(笑)
 なんちゅうことは無い、私のレスは全く無意味という事になりますさかいなぁ。

 なにはともあれ、いつもお助け頂いて(チームプレイやがな(笑))おおきに、おおき
 に。
        ほな...(弥太郎)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.