У меня есть код ниже, который копирует и вставляет данные с одного листа на другой.
Если вам нужна дополнительная информация: Смещение строки копирования как части L oop
Основная проблема, которую я имею, заключается в сохранении начального нуля для размеров после разделения на отдельные строки.
COL_SIZE in "SS21 Master Sheet"= 06|612|1218|1824
Column "AH" in "Buysheet" is = 6
612
1218
1824
Как я могу установить столбец AH как текст, чтобы он сохранял ноль (06)? Я попробовал несколько вариантов, но ни один из них не работает в данный момент.
Private Sub Workbook_Open()
Sheets("BUYSHEET").Cells.Clear
Const COL_SIZE As String = "AO" 'This is the column with all the sizes listed in the mini master
Dim wb1 As Workbook, wsSource As Worksheet
Set wb1 = Workbooks.Open("U:\Design\KIDS\SS21 Kids Miniscale (Master) .xlsm") ' This is the file path to your mini master.
Dim wb2 As Workbook, wsTarget As Worksheet
Set wb2 = ThisWorkbook
Dim iLastRow As Long, iTarget As Long, iRow As Long
Dim rngSource As Range, ar As Variant, i As Integer
Set wsSource = wb1.Sheets("SS21 Master Sheet") ' This is the name of your manster tab
Set wsTarget = wb2.Sheets("BUYSHEET") 'this ths the name of your buysheet tab
iLastRow = wsSource.Range("A" & Rows.Count).End(xlUp).Row
iTarget = wsTarget.Range("A" & Rows.Count).End(xlUp).Row
With wsSource
For iRow = 1 To iLastRow
Set rngSource = Intersect(.Rows(iRow).EntireRow, .Range("A:C, E:Y, Z:AF, AH:AI, AO:AO")) 'This columns you want to pull though to the buysheet tab (if one column must still be range eg, AO:AO)
If iRow = 1 Then
rngSource.Copy wsTarget.Range("A1")
iTarget = iTarget + 1
Else
ar = Split(.Range(COL_SIZE & iRow), "|")
For i = 0 To UBound(ar)
rngSource.Copy wsTarget.Cells(iTarget, 1)
wsTarget.Range("AH" & iTarget).Value = ar(i) 'AI is the column the sizes will populate in - We want this to replace the size list
iTarget = iTarget + 1
Next
End If
Next
MsgBox "Completed"
End With