Excelマクロ・VBA達人養成塾 小川です。
7月29日のエクセルマクロ・VBA基礎講座のあとの懇親会で撮った写真。
さいきん、こんな質問を受講生からもらいました。
以下のようなマクロを書いていたら、
5000行くらいになってしまって
「プロシージャーが大きすぎます」
というエラーが出てしまい、作動しませんでした。
とのこと。
If shTo.Range(“c9”).Value >= 40 And shTo.Range(“c9”).Value < 65 Then
If shTo.Range("c9").Value < 63000 Then
shTo.Range("E9").Value = 2891.3
ElseIf shTo.Range("c9").Value < 73000 Then
shTo.Range("E9").Value = 3389.8
ElseIf shTo.Range("c9").Value < 83000 Then
shTo.Range("E9").Value = 3888.3
ElseIf shTo.Range("c9").Value < 93000 Then
shTo.Range("E9").Value = 4386.8
ElseIf shTo.Range("c9").Value < 101000 Then
shTo.Range("E9").Value = 4885.3
ElseIf shTo.Range("c9").Value < 107000 Then
shTo.Range("E9").Value = 5184.4
ElseIf shTo.Range("c9").Value < 114000 Then
shTo.Range("E9").Value = 5483.5
ElseIf shTo.Range("c9").Value < 122000 Then
shTo.Range("E9").Value = 5882.3
ElseIf shTo.Range("c9").Value < 130000 Then
shTo.Range("E9").Value = 6281.1
...
End If
If shTo.Range("c19").Value < 63000 Then
shTo.Range("E19").Value = 2891.3
ElseIf shTo.Range("c19").Value < 73000 Then
shTo.Range("E19").Value = 3389.8
ElseIf shTo.Range("c19").Value < 83000 Then
shTo.Range("E19").Value = 3888.3
ElseIf shTo.Range("c19").Value < 93000 Then
shTo.Range("E19").Value = 4386.8
ElseIf shTo.Range("c19").Value < 101000 Then
shTo.Range("E19").Value = 4885.3
ElseIf shTo.Range("c19").Value < 107000 Then
shTo.Range("E19").Value = 5184.4
ElseIf shTo.Range("c19").Value < 114000 Then
shTo.Range("E19").Value = 5483.5
ElseIf shTo.Range("c19").Value < 122000 Then
shTo.Range("E19").Value = 5882.3
ElseIf shTo.Range("c19").Value < 130000 Then
shTo.Range("E19").Value = 6281.1
...
End If
If shTo.Range("c27").Value < 63000 Then
shTo.Range("e29").Value = 2891.3
ElseIf shTo.Range("c27").Value < 73000 Then
shTo.Range("e29").Value = 3389.8
ElseIf shTo.Range("c27").Value < 83000 Then
shTo.Range("e29").Value = 3888.3
ElseIf shTo.Range("c27").Value < 93000 Then
shTo.Range("e29").Value = 4386.8
ElseIf shTo.Range("c27").Value < 101000 Then
shTo.Range("e29").Value = 4885.3
ElseIf shTo.Range("c27").Value < 107000 Then
shTo.Range("e29").Value = 5184.4
ElseIf shTo.Range("c27").Value < 114000 Then
shTo.Range("e29").Value = 5483.5
ElseIf shTo.Range("c27").Value < 122000 Then
shTo.Range("e29").Value = 5882.3
ElseIf shTo.Range("c27").Value < 130000 Then
shTo.Range("e29").Value = 6281.1
...
End If
...
End If[/vb]
こんな相談をもらったら、あなたなら、どうしますか?
それにしても、すごいですね。。
プログラムの長さが5000行までいったという人、はじめて聞きました (@_@;
こういう、「目にとまった道具を使って、トコトンやってみる」という姿勢、大好きです ヾ(´ー`)ノ
とはいえ、このように、書いたプログラムが長すぎるという状況を作ってしまったところで、
根本的なところで、データ処理の考え方の基本をはずしてしまっている可能性があります。
では、それはどこなのか。
以下のFacebookグループページで、コメントしています。
達人養成塾のほかの受講生の意見も含めて見ることができます。参考にしてください。
http://www.facebook.com/groups/302276216464523/permalink/502813619744114/