[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コンパイルエラー:プロシャージが大きすぎます』(超初心者)
お疲れ様です。 お伺いさせてください。 ユーザーフォーム作成中です。 コンボボックス1の値により、データベース(シート部品A) からの情報をテキストボックス1、2,3・・・と、 それぞれに値を代入する、というものを作っています。 とりあえずこんなもんです。
Private Sub コンボボックス1_Change()
If コンボボックス1.Value = "商品A" Then テキストボックス1.Value = Sheets("部品A").Range("C2").Offset(コンボボックス1.ListIndex).Value テキストボックス2.Value = Sheets("部品A").Range("D2").Offset(コンボボックス1.ListIndex).Value ElseIf コンボボックス1.Value = "商品B" Then テキストボックス1.Value = Sheets("部品A").Range("C2").Offse(コンボボックス1.ListIndex).Value テキストボックス2.Value = Sheets("部品A").Range("D2").Offset(コンボボックス1.ListIndex).Value . . .
EndIf
End Sub
となっています。
シート部品Aは
A B C D 1 2 商品A aaa bbb 3 商品B CCC DDD . . . となってます。
(わかりにくくてすいません)
下にどんどん書き足していくと、 「コンパイルエラー:プロシャージが大きすぎます」 って出るんですが、どうしたらよいでしょうか? このプロシージャーの中には、それ以上かけないってことでしょうか? 私はコンボボックス1で表現したいんですが無理なんでしょうか?
幼稚な質問ですがお願いいたします。。
エラーメッセージまんまです。 プロシージャが大きすぎます。
プロシージャとは、 Private Sub コンボボックス1_Change() から始まり End Sub で終わるまでの間の事です。 この間に書かれている行数(と言うか文字数)が大きすぎる(書きすぎている)って事です。
パッと見、なぜIfで条件分けしているのかが分かりませんが、 Private Sub コンボボックス1_Change() テキストボックス1.Value = Sheets("部品A").Range("C2").Offset(コンボボックス1.ListIndex).Value テキストボックス2.Value = Sheets("部品A").Range("D2").Offset(コンボボックス1.ListIndex).Value End Sub だけでは駄目なのでしょうか。 (ご近所PG)
そのまんまなんですね。。 文字数が決まっているってことですね。
間違ってました。。すみません。
If コンボボックス1.Value = "商品A" Then テキストボックス1.Value = Sheets("部品A").Range("C2").Offset(コンボボックス1.ListIndex).Value テキストボックス2.Value = Sheets("部品A").Range("D2").Offset(コンボボックス1.ListIndex).Value ElseIf コンボボックス1.Value = "商品B" Then テキストボックス1.Value = Sheets("部品B").Range("C2").Offset(コンボボックス1.ListIndex).Value テキストボックス2.Value = Sheets("部品B").Range("D2").Offset(コンボボックス1.ListIndex).Value . . .
です。
なにせ素人ですので・・(^^;
なにかほかに方法ありますでしょうか? お願いいたします。 先に進めません。
Set ステートメントで文字数を減らす。 With ステートメントで文字数を減らす。 それでもダメならプロシージャを分けるとか。 今回の場合IFで分岐させなくてもシート名を変数に格納してあげれば済みそうですが。 sh = コンボボックス1.Value テキストボックス1.Value = WorkSheets(sh).Range("C2").Offset(コンボボックス1.ListIndex).Value テキストボックス2.Value = WorkSheets(sh).Range("D2").Offset(コンボボックス1.ListIndex).Value (ケン)
(ケン)さん、早速のご回答ありがとうございますm(_ _)m
現在記述途中で、600行くらいあるんです。 ちなみに3000行くらい入れたいと思っておりました。 自分の無知さにうなだれております。 やはりプロシージャーを分けよう思います。
(ケン)さん(ご近所PG)さん、ありがとうございました。 また教えてください。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.