2013-10-20 114 views
0

我想將已過濾表格的範圍複製到另一個表格。起點很簡單,但我只想根據用戶輸入的單元格向下複製多行。當我硬編碼數字時,我可以使其工作,但是我想基於單元格進行編碼。在VBA中使用單元格引用

變量lastrow是我需要的單元格H4。 (H4在我的電子表格是其中的行數的用戶鍵複製)

我的代碼到目前爲止是:

Sub Line() 

Dim Copyrange As String 
Dim lastrow As Range 

Startrow = 8 
lastrow = 10 
Let Copyrange = "B" & Startrow & ":" & "H" & lastrow 
Range(Copyrange).Select 
End Sub 

任何幫助,非常感謝

+1

有人用'Let'anymore?自20世紀80年代以來我一直沒有。只要寫'Copyrange = ...'。 「Let」是可選的,實際上它只會增加混亂。 –

回答

1

聽起來像是你需要的是這個?

Let Copyrange = "B" & Startrow & ":" & "H" & Range("H4") 
+0

謝謝Mattboy。現在它工作了,我發現下一個問題在於它是一個過濾表格,我只想要在過濾「H5」之後顯示的第一個「x」行數,此時它複製第一個行數,無論它們是被過濾或不被過濾。 – Swindo

+0

我猜BK201的答案是這樣的嗎? – mattboy

0

改變我的答案而不是。不是最好的解決方案,因爲與SpecialCells合作很困難,但這可能會很好地滿足您的需求。

Sub Illusion() 

Dim Source, Dummy As Worksheet 
Dim SRow, LRow As Long 

Application.ScreenUpdating = False 

With ThisWorkbook 
    Set Source = .ActiveSheet 
    Set Dummy = .Sheets.Add(After:=Sheets(Sheets.Count)) 
End With 

SRow = 8 
LRow = Range("H4").Value + 1 

'Change the H10000 below to the correct end row of your unfiltered table. 
Source.Range("B" & SRow & ":H10000").SpecialCells(xlCellTypeVisible).Copy 

With Dummy 
    'We create an illusion that we copy only the names we need by bridging using a dummy sheet and copying from there. 
    .Range("A1").PasteSpecial xlPasteValues 
    .Range("A1:A" & LRow).Copy 
    'Paste to desired location as values as well. 
    .Delete 
End With 

Application.ScreenUpdating = True 

End Sub 

我在這裏做什麼,我們可見單元格複製到一個虛置片材,調整名稱的數目從該虛擬紙上覆印,做任何你想做的事情,然後刪除虛置片材。這是一個快速和骯髒的,但它不得不去特殊細胞的錯綜複雜。

+0

嗨,不知道我做錯了什麼,但是當我使用你的代碼時,我收到錯誤編譯錯誤:語法錯誤?????我做了一個複製和粘貼我做錯了什麼? – Swindo

+0

我擁有的是從其他系統定期導出的員工名單。我給每一個附加一個隨機數,然後按這個數字排序,並根據樣本大小選擇最上面的「數字」行。然後我想將這個範圍複製到另一個表格中,作爲可以添加我們的標誌和其他東西然後打印的值。簡而言之,它是一個隨機的員工列表生成器。 – Swindo

+0

更改了我上面的答案。請看看它是否以某種方式解決您的查詢。 – Manhattan