|
▼Abebobo さん:
おじさん46さん こんにちは
一例です。同じロジックですが、扱い易くなっていると思います。
'/////////////UserFormモジュー//////////////
Option Explicit
'Collectionを使用する
Private mCol As Collection
Private Sub UserForm_Initialize()
Set mCol = New Collection
With Me
mCol.Add .TextBox1
mCol.Add .TextBox2
mCol.Add .TextBox3
mCol.Add .TextBox4
mCol.Add .TextBox5
mCol.Add .TextBox6
mCol.Add .TextBox7
End With
End Sub
Private Sub CommandButton1_Click()
Dim x As Long
For x = 1 To 10000
With Worksheets("Sheet3")
If .Cells(5 + x, 2).Value = "" Then
.Cells(5 + x, 2).Value = mCol.Item(2).Text
.Cells(5 + x, 3).Value = Now
.Cells(5 + x, 4).Value = mCol.Item(4).Text
.Cells(5 + x, 5).Value = mCol.Item(5).Text
.Cells(5 + x, 6).Value = mCol.Item(6).Text
.Cells(5 + x, 7).Value = mCol.Item(7).Text
Exit For
End If
End With
Next
With Worksheets("Sheet4")
.Cells(16, 2).Value = mCol.Item(1).Text
.Cells(2, 3).Value = Now
.Cells(5, 2).Value = mCol.Item(3).Text
.Cells(5, 4).Value = mCol.Item(4).Text
.Cells(5, 7).Value = mCol.Item(5).Text
.Cells(5, 5).Value = mCol.Item(6).Text
End With
Worksheets("Sheet4").PrintOut
'TextBoxのクリアは外に追い出す(可読性、メンテナンス性)
Call ClearText
UserForm1.Hide
End Sub
'TextBoxをクリアするだけのプロシージャ
Private Sub ClearText()
Dim i As Long
For i = 1 To 7
mCol.Item(i).Text = ""
Next i
End Sub
Private Sub UserForm_Terminate()
Set mCol = Nothing
End Sub
ちなみにこれ以上TextBoxが多くなると使い方にもよりますが、多分
私もClassを使うと思います。
興味があれば、「Collection Class」をキーワードに過去ログを検索してみて下さい。
サンプル、情報があります。
>先日、私よりずっと前に わいわい をHNにされている方がいましたので、
>HN代えました。 よく確認せずにわいわいを名乗ってました。
>わいわいさんすみませんでした。
やはりそうでしたか!なんか違うかなとは感じてましたので。納得 ^ ^;
|
|