|
▼タツミ さん:
こんばんは。
>
>先ほどはありがとうございます。
>ichinoseさんより教えて頂いたコードを元にあれこれ悪戦苦闘しています。
> ↓
>>ユーザーに投入位置を特定させた後,その位置に基づいてフォームから
>>シートへデータを投入する為の記述をしました。
>>この後,延々と続く(34×5行=170行=170セット)のですが
>>これではプロシージャが大きすぎて処理出来ません。
> ↓
>>これは、OptionButton1〜OptionButton5まであるということですか?
> ↓
>私目の表現方法が悪かったですね。OptionButtonは1〜5までありますが
>そのほかにTextBox(29)があり、そのTextBoxの値との組み合わせによりセル
>位置を特定しています。
>
>TextBox29.Value="1"に対して1〜5(行は、9,10,11,12,13を指定)
>TextBox29.Value="2"に対して1〜5(行は、14,15,16,17,18を指定)
>TextBox29.Value="3"に対して1〜5(行は、19,20,21,22,23を指定)
> ・
> ・
> ・
これの最後の値が
Textbox29.Value="34"
ということですか?
>TextBoxで列Aの5行単位(1〜34)のセルを、
>OptionButton1でその5行単位内の順番を、
>それぞれ特定するようにしています。
↑これの意味は私には理解できませんが、
>
>ご提示頂いたコードは下記のような意味かと考えますが、
> ↓
>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
' 選択されたOptionButtonの番号を取得
>
>
>Next idx
>
>If TextBox29.Value = "1" And idx < 6 Then
>Call set_form_data(o_rw(idx - 1))
>→TextBox29の値が1であればset_form_dataを呼び出し実行する。
>
>私のレベルではこの程度の解釈しか出来ず....
>
>どうでしょう....
概ね良いかと思います。
が、Textbox29の値と選択されたオプションボタンによって
書き込む行が取得できるようにするには
'=======================================
Private Sub CommandButton1_Click()
Dim idx As Long
Dim t_val As Variant
t_val = Val(TextBox29.Value)
If Int(t_val) = t_val And t_val >= 1 And t_val <= 34 Then
' Textbox29の値が1〜34だったら?
For idx = 1 To 5
If Controls("OptionButton" & idx).Value = True Then
Exit For
End If
Next idx
If idx < 6 Then
Call set_form_data(t_val * 5 + idx + 3)
' ↑この計算式で書き込む行を算出
End If
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
検討してみてください。
|
|