Создание цикла в пользовательской форме - PullRequest
0 голосов
/ 06 ноября 2019

это продолжение моего предыдущего вопроса ... Я пытаюсь создать пользовательскую форму, которая будет проходить через список на рабочем листе (TESTER). Форма должна отображать первую строку данных из списка. Пользователь также сможет выбрать один из двух вариантов: Активный или ITW. Наконец, пользователь может свободно добавлять дополнительные комментарии.

Здесь я сталкиваюсь с проблемами, когда пользователь нажимает кнопку Добавить, значения из формы должны заполнить следующую пустую строку на отдельном листе (pasteHere). У меня нет проблем с формой, отображающей следующую строку данных в списке, но я не знаю, как создать цикл, который позволит мне найти следующую пустую строку после нажатия кнопки добавления. На данный момент я только инициализировал j как 1. И каждый раз, когда я нажимаю кнопку добавить, он вставляется в первую строку на листе pasteHere.

Sub addBtn_Click()

Application.ScreenUpdating = False
Dim pasteSheet As Worksheet

Dim j As Long

j = 1 'how can I loop this part

Set pasteSheet = Application.Worksheets("pasteHere")

pasteSheet.Cells(j, j) = ric
pasteSheet.Cells(j, j + 2) = name
pasteSheet.Cells(j, j + 4) = valueUSD

pasteSheet.Cells(j + 1, j) = dstr

i = i + 1
j = j + 2

UserForm1_Initialize

End Sub

Буду признателен за любую помощь здесь. Полный код ниже:

Public valueUSD, name, ric, dstr, sitchStr, pStr As String
Public i, lRow As Long

Sub UserForm1_Initialize()

If Worksheets("pasteHere").Range("A1") = "" Then
    i = 2
End If

activeCheck.Value = False
itwCheck.Value = False
TextBox2.Value = ""

ric = Worksheets("Tester").Range("H" & i)
name = Worksheets("Tester").Range("B" & i)
valueUSD = Worksheets("Tester").Range("C" & i)
sitchStr = ""
dstr = ""

pStr = ric & "   " & name & "   " & valueUSD & "   "

UserForm1.Label1.Caption = pStr

End Sub
Sub activeCheck_Change()

    If activeCheck.Value = True Then
        sitchStr = sitchStr + activeCheck.Caption
    Else
        sitchStr = ""
    End If

End Sub

Sub itwCheck_Change()

    If activeCheck.Value = False And itwCheck.Value = True Then
        sitchStr = sitchStr + itwCheck.Caption
    ElseIf activeCheck.Value = True And itwCheck.Value = True Then
        MsgBox ("You can only be active OR ITW")
    End If

End Sub

Sub TextBox2_Change()
    dstr = sitchStr & ", " & TextBox2.Value
End Sub

Sub addBtn_Click()

Application.ScreenUpdating = False
Dim pasteSheet As Worksheet

Dim j As Long

j = 1 'how can I loop this part

Set pasteSheet = Application.Worksheets("pasteHere")

pasteSheet.Cells(j, j) = ric
pasteSheet.Cells(j, j + 2) = name
pasteSheet.Cells(j, j + 4) = valueUSD

pasteSheet.Cells(j + 1, j) = dstr

i = i + 1
j = j + 2

UserForm1_Initialize

End Sub

Sub skipBtn_Click()
    i = i + 1
    UserForm1_Initialize
End Sub

Sub exitBtn_Click()
    Unload Me
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...