Excel VBA質問箱 IV

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

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


39504 / 76732 ←次へ | 前へ→

【42338】Re:プロシージャの大きすぎて処理出来ない
発言  ichinose  - 06/9/7(木) 8:16 -

引用なし
パスワード
   ▼タツミ さん:
おはようございます。

>ユーザーに投入位置を特定させた後,その位置に基づいてフォームから
>シートへデータを投入する為の記述をしました。
>>この後,延々と続く(34×5行=170行=170セット)のですが
>これではプロシージャが大きすぎて処理出来ません。
これは、OptionButton1〜OptionButton5まであるということですか?

コードをコンパクトにするためには、
ループ(繰り返し処理)をさせることです。

ループ処理行うためには、共通処理と非共通処理を見極めて
規則性を見出さなければなりません。

提示されたコードではまだすべての規則性が把握できませんので、
提示されたコードだけ見ての判断です。

'===============================
Private Sub CommandButton1_Click()
  Dim o_rw As Variant
  o_rw = Array(9, 10, 11, 12, 13)
  Dim idx As Long
  For idx = 1 To 5
    If Controls("OptionButton" & idx).Value = True Then
     Exit For
     End If
    Next idx
  
  If TextBox29.Value = "1" And idx < 6 Then
    Call set_form_data(o_rw(idx - 1))
    End If

End Sub
'============================================================
Sub set_form_data(rw As Variant)
  Cells(rw, 6) = TextBox2.Value
  Cells(rw, 7) = TextBox7.Value
  Cells(rw, 3) = ComboBox1.Value
  Cells(rw, 4) = ComboBox2.Value
  Cells(rw, 5) = ComboBox3.Value
  Cells(rw, 10) = TextBox28.Value
  Cells(rw, 18) = ComboBox4.Value
  Cells(rw, 19) = ComboBox5.Value
  Cells(rw, 36) = ComboBox6.Value
  Cells(rw, 37) = ComboBox7.Value
  Cells(rw, 20) = ComboBox8.Value
  Cells(rw, 9) = ComboBox9.Value
  Cells(rw, 12) = ComboBox10.Value
  Cells(rw, 14) = ComboBox11.Value
  Cells(rw, 13) = ComboBox12.Value
  Cells(rw, 15) = TextBox26.Value
  Cells(rw, 16) = TextBox25.Value
  Cells(rw, 17) = TextBox24.Value
  Cells(rw, 22) = TextBox15.Value
  Cells(rw, 23) = TextBox14.Value
  Cells(rw, 24) = TextBox13.Value
  Cells(rw, 25) = TextBox16.Value
  Cells(rw, 27) = TextBox17.Value
  Cells(rw, 28) = TextBox18.Value
  Cells(rw, 29) = TextBox19.Value
  Cells(rw, 32) = TextBox20.Value
  Cells(rw, 33) = TextBox22.Value
  Cells(rw, 34) = TextBox21.Value
  Cells(rw, 35) = TextBox23.Value
End Sub

提示されたコードを見た限りでは、
セルにデータをセットするコードはデータを書き出すセルの行の情報を変数化
すれば、実際に書き出すコード

(Cells(rw, 6) = TextBox2.Value・・・
 Cells(rw, 35) = TextBox23.Value)

は一度だけの記述で済みます。


規則性をもっと検討すれば、他にも簡素化できる箇所はあるかもしれませんよ!!
0 hits

【42337】プロシージャの大きすぎて処理出来ない タツミ 06/9/7(木) 0:59 質問
【42338】Re:プロシージャの大きすぎて処理出来ない ichinose 06/9/7(木) 8:16 発言
【42340】Re:プロシージャの大きすぎて処理出来ない タツミ 06/9/7(木) 9:30 お礼
【42355】Re:プロシージャの大きすぎて処理出来ない タツミ 06/9/7(木) 20:46 発言
【42356】Re:プロシージャの大きすぎて処理出来ない ichinose 06/9/7(木) 22:29 発言
【42368】Re:プロシージャの大きすぎて処理出来ない タツミ 06/9/8(金) 10:44 お礼
【42344】Re:プロシージャの大きすぎて処理出来ない m2m10 06/9/7(木) 10:11 発言

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