Mam tę bazę danych, w której przechowuję sprzedaż. Mogę znaleźć określoną sprzedaż, filtrując. Chciałbym mieć przycisk, który następnie regeneruje sprzedaż jako „paragony” w innym arkuszu.
To jest mój kod do tego i działa do pewnego stopnia:
Dim i As Long
Dim col As Integer
Dim DB_Sheet, Rec_Sheet As Object
Set DB_Sheet = ThisWorkbook.Worksheets("Sheet3")
Set Rec_Sheet = ThisWorkbook.Worksheets("Sheet2")
col = 1
For i = 2 To DB_Sheet.Range("A" & Rows.Count).End(xlUp).Row
If DB_Sheet.Rows(i).Hidden = False Then
Rec_Sheet.Cells(1, col) = DB_Sheet.Cells(i, 7)
Rec_Sheet.Cells(2, col) = DB_Sheet.Cells(i, 8)
Rec_Sheet.Cells(3, col) = DB_Sheet.Cells(i, 6)
Rec_Sheet.Cells(4, col) = DB_Sheet.Cells(i, 9)
Rec_Sheet.Cells(5, col) = DB_Sheet.Cells(i, 5)
col = col + 1
End If
Next i
Pobiera to z pierwszego arkusza
BUYER SELLER DATE PRODUCTS CURRENCY
A B 123 abc USD
D E 456 def GBP
i wyprowadza to na drugim arkuszu
123 456
A D
B E
USD GBP
abc def
Problem polega na tym, że wszystkie produkty są przechowywane w jednej komórce ( E
odpowiadającej kolumnie DB_Sheet.Cells(i, 5)
). Chciałbym wkleić produkty indywidualnie w różnych rzędach na drugim arkuszu, w ten sposób
123 456
A D
B E
USD GBP
a d
b e
c f
Nagrałem robiąc to ręcznie i oto co mam:
Range("E2").Select
Selection.TextToColumns Destination:=Range("S2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1)), TrailingMinusNumbers:=True
Range("S2:AB2").Select
Selection.Copy
Range("S3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("S2:AB2").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Potrzebuję pomocy w dodaniu tego, lub czegokolwiek, co osiągnie te same wyniki, do mojego pierwszego kodu.
źródło