У вас уже есть приемлемый ответ / решение, но относительно этого:
(а в полном коде ~ 200 операторов)
Если это означает, что вы собираетесь скопировать-вставить оператор If
~ 200 раз и слегка изменить каждый экземпляр (не уверен?), Тогда может пригодиться что-то подобное нижеприведенному (вставка копии не требуется) ).
Option Explicit
Sub CopyCellsFromFirstCarColumn()
Dim rangeToCheck As Range
Set rangeToCheck = Worksheets("munka4").Range("H6").Resize(1, 200) ' Assumes 200 checks, and that range is contiguous
Dim matchResult As Variant
matchResult = Application.Match("Car", rangeToCheck, 0)
If IsError(matchResult) Then
MsgBox ("None of the cells in range '" & rangeToCheck.Address & "' on the sheet '" & rangeToCheck.Parent.Name & "' are 'Car'. Nothing has been copied. Code will stop running now.")
Exit Sub
End If
Dim columnToCopy As Long
columnToCopy = rangeToCheck.Offset(0, matchResult - 1).Column ' -1 as going from 1-based to 0-based
' These cells being copied do not change.
Worksheets("munka4").Range("E6").Copy Worksheets("munka2").Range("F10")
Worksheets("munka4").Range("F6").Copy Worksheets("munka2").Range("H10")
Worksheets("munka4").Range("D6").Copy Worksheets("munka2").Range("B10")
' These cells being copied depend on where "Car" was found.
Worksheets("munka4").Cells(9, columnToCopy).Copy Worksheets("munka2").Range("B8")
Worksheets("munka4").Cells(8, columnToCopy).Copy Worksheets("munka2").Range("B12")
Worksheets("munka4").Cells(10, columnToCopy).Copy Worksheets("munka2").Range("B14")
End Sub
Выше будет скопировано только для первого экземпляра "Car"
. Я думаю, что это хорошо в вашем случае, как вы сказали: "I know that there would be only one case, but I don't know in which cell."