我真的很感激一點幫助。我有兩個開放的工作簿,一個用於計算,第二個用於保存記錄。我曾經手動做過所有事情,但後來我發現了宏和VBA,但我是一個初學者。我設法編寫了一個適用於我的代碼,但我希望能夠改進它。只複製和粘貼範圍內使用的單元格
我設置了一個範圍Y22:Y37(表格在兩個工作簿中都有相同的名稱),它並不總是用值完全填充,但我不知道如何更改代碼以僅複製範圍中的已用單元格。我試圖使用SkipBlanks:= True,但它不起作用。
一旦我複製了範圍,我激活了第二個工作簿,找到第一個空行並在那裏粘貼轉置值(專門從B列開始)。但是,我再次粘貼整個範圍Y22:Y37,我認爲這是不必要的。另外我想粘貼後使用的單元格下有一個底部邊框。在圖片中,您可以看到同時我設法創造了底部邊框,但是我使用了整行。
我以某種方式調整了我的需求,我可以找到各種代碼,但我知道我可能已經使用了許多代碼冗餘部分,但我希望有人能幫助我使其更清潔。非常感謝您提前,即使閱讀這些。工作簿的圖片在下面的鏈接。
Sub CopyVyuctovani()
Set TargetWB = Workbooks("Výdej.xlsm")
Set SourceWB = Workbooks("DPV.xlsm")
TargetSH = ActiveSheet.Name
SourceWB.Sheets(TargetSH).Range("Y22:Y37").Copy
TargetWB.Sheets(TargetSH).Activate
lMaxRows = Cells(Rows.Count, "B").End(xlUp).Row
Range("B" & lMaxRows + 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Range("A" & lMaxRows + 1).Value = SourceWB.Sheets("Souhrn").Range("E30").Value
Application.CutCopyMode = False
Range("A" & Rows.Count).End(xlUp).EntireRow.Font.Color = RGB(255, 0, 0)
Range("A" & Rows.Count).End(xlUp).EntireRow.Borders(xlEdgeBottom).LineStyle = xlContinuous
End Sub
首先,你應該完全限定這樣的引用:'lMaxRows =細胞(Rows.Count, 「B」)結束(xlUp).Row'一個確保使用'選項Explicit'這將迫使你要聲明所有的變量。 – braX
總是複製整個範圍可能更高效。這16個單元可以複製在一行代碼中。確定要包含/排除哪些單元需要至少一個附加步驟。處理這麼低的數量時,這是不值得的。這就是說你可以通過將[相交函數](https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-intersect-method-excel)與[使用範圍對象](https://msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheet-usedrange-property-excel)。 –
你是對的,也許它真的不值得一個努力,這是真正的低數據量。正如我所說,我將確定要記住聲明所有變量,我只是很高興讓代碼以某種方式工作。謝謝 – Tireur