Вы путаете ваши переменные ws
и xWs
.
ws
относится к конкретному листу, а xWs
- ваш переменный лист.Следовательно, ваш второй цикл недопустим (это все равно, что сказать For Each Sheet1 in Worksheets
).
Вам нужно пройтись по вашим переменным рабочим листам и сравнить их с вашим конкретным листом
For Each xWs In Application.ActiveWorkbook.Worksheets
if xWs.Name <> ws.Name Then
xWs.Visible = xlSheetHidden
End If
Next
С учетом сказанного,нет необходимости дважды зацикливаться.
Обратите внимание, что ws.Name = MaterityForm.Value
вернет либо TRUE
, либо FALSE
.Результат этого определяет ws.Visible = TRUE/FALSE
Private Sub Get_Data_Click()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
ws.Visible = ws.Name = MaternityForm.Value
Next ws
With Sheets(MaternityForm.Value)
.Range("B3").Value = Me.NameBox.Text
.Range("f3").Value = Me.PaynoBox.Text
.Range("B6").Value = Me.DTPicker1.Value
.Range("B7").Value = Me.DTPicker2.Value
.Range("B17").Value = Me.FirstPayBox.Value
.Range("B18").Value = Me.SecondPayBox.Value
.Range("B25").Value = Me.MonthlyPayBox.Value
.Range("H7").Value = Me.DTPicker3.Value
End With
End Sub