У меня есть несколько ответов на мой вопрос ниже, но, несмотря на многочисленные попытки, я думаю, что мой код теперь просто беспорядок и не может понять, где он неправильный.
Таким образом, у меня есть диапазон A12: N112, который нужно отсортировать в строке A с убывающими значениями.
Далее мне нужно скопировать каждую строку (B: L), где в столбце A есть «1», и вставить ее в первую пустую строку в другой книге, поскольку столбец D пуст. Затем мне нужно скопировать число, сгенерированное в столбце A, для строки, в которую я только что вставил, а затем вставить ее обратно в исходную строку, скопированную в строке N первой электронной таблицы.
Мне нужно это затем зациклить, пока мы не достигнем первого значения «0» в первой электронной таблице.
Вот мой код, и хотя я могу заставить сортировку работать, я не могу ничего заставить копировать или вставлять. Это похоже на код, который я использовал ранее для вставки одной копии, но здесь он вообще не работает.
Dim r As Long
Dim lr As Long
Dim wkb As Workbook
Dim ws As Worksheet
Dim wkb2 As Workbook
Dim ws2 As Worksheet
Set wkb = ThisWorkbook
Set ws = wkb.Worksheets("Data Entry")
Set wkb2 = Workbooks.Open("\\srveurfcl03.nov.com\IS-GBR-GLBISETNRegister$\Serial No Trial\Serialisation Log.xlsx")
Set ws2 = wkb2.Worksheets("SNo Log")
wkb.Activate
ws.Activate
ActiveWorkbook.Worksheets("Data Entry").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Data Entry").sort.SortFields.Add Key:=Range( _
"A12:A112"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Data Entry").sort
.SetRange Range("A11:N112")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
For r = 12 To lr
If wkb.ws.Cells(r, 1).Value = 1 Then
ws.Cells(r, "B:L").Copy
wkb2.Activate
ws2.Activate
Range("D" & Rows.Count).EndX(x1Up).Offset(1).Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Range("A" & Rows.Count).End(xlUp).Offset(0).Select
Selection.Copy
wkb.Activate
ws.Cells(r, 13).Value.Paste
End If
If wkb.ws.Cells(r, 1).Value = 0 Then
ws.Cells(4, 9).Select
ActiveCell.FormulaR1C1 = "Serial No. Issue complete for this OA"
End If
Range("F5").Select
Next r
Любая помощь будет принята с благодарностью, как всегда. Я пытался установить переменные, но не могу заставить их работать с битами моего кода из-за ошибок объекта, поэтому пришлось вернуться к коду, который, я знаю, работает. Но это относится только к фиксированным диапазонам, которых у меня не будет в этой книге.