Заменить поле ввода функцией «Цикл» - PullRequest
0 голосов
/ 25 сентября 2019

Так что я хотел бы создать функцию зацикливания - где
Если ответ в столбце O - «Да», введите значение в столбце C в качестве «нового имени» скопированного листа Loop, пока столбец O не будет пустым

Я знаю, что должен удалить поле ввода («Введите имя для скопированного листа»)
Однако я не уверен, что ставить после newname в качестве функции циклического воспроизведения

Sub Button112_Click()

Dim newName As String

On Error Resume Next
newName = InputBox("Enter the name for the copied worksheet")
If newName <> "" Then


    ThisWorkbook.Sheets("Template").Copy After:=Worksheets(Sheets.Count)
    On Error Resume Next
    ActiveSheet.Name = newName
    Range("$D$3").Value = newName
End If

Dim n As Name
For Each n In ActiveWorkbook.Names
n.Visible = True
Next n

Dim numrow
numrow = Range("F16").Value

If IsNumeric(numrow) Then

For i = 1 To numrow

Call INRW

Next i
End If

End Sub

Я пробовал что-то похожее на это, но безуспешно

   lastRow = .Cells(Rows.Count, 15).End(xlUp).Row
        For i = 1 To lastRow
        If .Cells(i, 15).Value2 = "Yes" Then CopySheetAndRename (.Cells(i, 3).Value2)
        Next i
    End With

    End Sub

1 Ответ

0 голосов
/ 25 сентября 2019

Полагаю, вам нужно что-то вроде этого:

Sub Button112_Click()

    Dim lastRow As Long, i As Long

    With Worksheets("mySheetName")'change mySheetName to suit your needs

        lastRow = .Cells(Rows.Count, 15).End(xlUp).Row
        For i = 1 To lastRow
            If .Cells(i, 15).Value2 = "Yes" Then
                ThisWorkbook.Sheets("Template").Copy After:=Worksheets(Sheets.Count)
                ActiveSheet.Name = .Cells(i, 3).Value2
                Range("$D$3").Value = .Cells(i, 3).Value2
            End If
        Next

    End With

    .... 
    rest of your code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...