0

ユーザーは一度に最大 10 人のメンバーを入力できます。列Aは「チーム名」になります 列Bは「メンバーの数」になります 列Cは「メンバー名」になります If Elseでは機能しますが、10回行うのは面倒です。If Else から For ループに変更する方法がわかりません

'Using If Else
    Dim RowCount As Long
    RowCount = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.Count
    If txtNoMember.Value = 1 Then
        With Worksheets("Sheet1").Range("A1")
            .Offset(RowCount, 0).Value = txtTeamName.Text
            .Offset(RowCount, 1).Value = txtNoMember.Text
            .Offset(RowCount, 2).Value = txtMember01.Text
        End With
    ElseIf txtNoMember.Value = 2 Then
        With Worksheets("Sheet1").Range("A1")
            .Offset(RowCount, 0).Value = txtTeamName.Text
            .Offset(RowCount, 1).Value = txtNoMember.Text
            .Offset(RowCount, 2).Value = txtMember01.Text
            .Offset(RowCount + 1, 0).Value = txtTeamName.Text
            .Offset(RowCount + 1, 1).Value = txtNoMember.Text
            .Offset(RowCount + 1, 2).Value = txtMember02.Text
        End With
    End If

'Using For Loop
    Dim counter As Integer
    Dim times As Integer
    Dim RowCount As Long
    RowCount = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.Count
       For counter = 1 To txtNoMember.Value
            times = txtNoMember.Value - 1
            With Worksheets("Sheet1").Range("A1")
                .Offset(RowCount + times, 0).Value = txtTeamName.Text
                .Offset(RowCount + times, 1).Value = txtNoMember.Text
                .Offset(RowCount + times, 2).Value = txtMember01.Text
            End With
4

1 に答える 1

0

コメントしたように、でコントロールにアクセスします<FormName>.Controls(<ControlName>)。簡単なフォームでデモを行う:

ユーザーフォーム1

コード:

Private Sub CommandButton1_Click()
    Dim i As Long, m As Long

    m = CLng(txtNoMember.Value)
    For i = 1 To m
        Debug.Print UserForm1.Controls("TextBox" & Format(i, "00")).Value
    Next
End Sub

txtNoMember に 10 を入力してコマンド ボタンをクリックすると、イミディエイト ウィンドウは次のように表示します。

ImmediateWindow

ここで、値を格納する行の i 番目のメンバーとループ インデックスの間の計算を実行する必要があります。

使用するコードは大まかに次のとおりです (01 から 10 までのテキスト ボックス):

.Offset(RowCount + times, 0).Value = <FormName>.Controls("txtMember" & Format(times + 1, "00")).Text

于 2013-11-15T05:02:52.833 に答える