Дайте мне знать, если это работает для вас. Ваша цель была мне не совсем понятна, поэтому, если она не соответствует вашей конкретной цели c, дайте мне знать.
Я оставил комментарии в коде, чтобы объяснить, что я делаю.
Я проверил этот код и думаю, что он делает то, что вы хотите. Я использовал константы вместо чтения из текстовых полей, потому что мне проще тестировать, так что не просто копируйте / вставляйте все дословно и ожидайте, что это будет работать именно так, как вы и предполагали. Вам нужно будет изменить некоторые детали в соответствии с вашими потребностями.
Option Explicit
Public Sub test()
'i prefer to keep all my variable declarations at the top
'unless i have a specific reason for not doing so
Dim emptyRow As Long
Dim ws As Worksheet
Dim y As Long
Dim wsHeight As Long
Dim found As Boolean
'just some constants i made to make testing easier for me
Const wsName As String = "Micrux"
Const combo1Val As String = "some text"
Const textbox1Val As String = "textbox1 text"
Const textbox2Val As String = "textbox2 text"
Const textbox3Val As String = "textbox3 text"
Const combo2Val As String = "combo2 text"
'dont set references to sheets like this
' Set ws = ActiveSheet
' ActiveSheet.Name = "Micrux"
'this is better method
Set ws = ThisWorkbook.Worksheets(wsName)
'or alternatively this works too
' Set ws = ThisWorkbook.Worksheets(someWorksheetNumber)
With ws
'descriptive variables are easier to read than non-descriptive
'variables
wsHeight = .Range("A" & .Rows.Count).End(xlUp).Row
'you'll need to keep changing wsHeight, so a for loop
'won't suffice
y = 1
While y <= wsHeight
If .Cells(y, 1).Value = combo1Val Then
'dont assign values like this
' .Cells(y, 4) = textbox1Val
' .Cells(y, 7) = textbox2Val
' .Cells(y, 6) = textbox3Val
' .Cells(y, 5) = combo2Val
'assign values like this
.Cells(y, 4).Value = textbox1Val
.Cells(y, 7).Value = textbox2Val
.Cells(y, 6).Value = textbox3Val
.Cells(y, 5).Value = combo2Val
'insert a blank row
.Cells(y, 1).Offset(1, 0).EntireRow.Insert shift:=xlDown
'since you inserted a blank row, you need to also
'increase the worksheet height by 1
wsHeight = wsHeight + 1
End If
y = y + 1
Wend
End With
'idk what this does but i dont like the looks of it
' Unload Me
End Sub
Надеюсь, это поможет