У меня была такая же проблема на Ubuntu, и я решил ее распаковать все * .pack-файлы в каталог jdk. например: cd /usr/java/jdk1.7.0_03/jre/lib sudo ../bin/unpack200 rt.pack rt.jar
Я предполагаю, что вы не хотите перезаписывать Sheets("Plan2").Range("r56")
каждый раз, когда находите значение. В этом случае этот код записывает найденное значение в ту же строку, в которой оно найдено на первом листе.
Это работает без копирования-вставки и выбора или активации ячеек / листов. Также, если вы укажете свой лист с исходными данными, как я, даже не имеет значения, с какого листа вы запускаете макрос.
Sub Copiar()
Dim range1 As Range
Set range1 = Sheets(1).Range("K56:K58")
For Each cell In range1
If cell.Value = Sheets(1).Range("R55").Value Then
Sheets("Plan2").Range("R" & cell.Row).Value = cell.Offset(0, 2).Value
End If
Next
End Sub
Вы все их находите, проблема в том, что каждый ответ перезаписывает R56 на другом листе. Вот код, который продвигает эту ячейку назначения при каждом повторении цикла, а также избегает плохой практики выбора и активации каждого листа и ячейки, с которыми вы работаете:
Sub Copiar()
Dim range1 As Range, destin as Range
Set range1 = Range("k56:k58")
Set destin= Sheets("Plan2").Range("r56")
For Each cell In range1
If cell.Value = Range("R55").Value Then
cell.Offset(0, 2).copy destin
set destin=destin.offset(1,0) ' Crucial bit here
End If
Next
End Sub