2017-08-11 93 views
1

我一直在這個網站上尋找一段時間來回答這個問題,但沒有運氣。我有這個代碼,我通過一行數字循環,並根據當時單元格中的數字,確定我複製並粘貼到表單中的內容。我正在使用列,因爲這是我可以使代碼動態的唯一方法。它可以工作,但是當我粘貼時,我想粘貼在比現在粘貼的位置更低的單元格中。我想知道列是否有指定列和粘貼數據的位置。使用列函數 - Excel VBA

代碼:

Dim sh  As Worksheet 
Dim rw  As Range 
Dim row  As Range 
Dim cell As Range 
Dim RowCount As Integer 

Set rw = Range("A5:CG5") 
Set sh = ActiveSheet 

For Each row In rw.Rows 
    For Each cell In row.Cells 
     Select Case cell.Value 
     Case "2" 
      ThisWorkbook.Worksheets("Sheet1").Range("E27:E51").Copy Destination:=Sheets("Sheet2").Columns(4) 
     End Select 
    Next cell 
Next row 
+0

你可以使用.Cells(https://msdn.microsoft.com/en-us/vba/ Excel的VBA /物品/範圍細胞屬性-Excel文件)。例如:'.Cells(row,column)=「Something或/」&Variable(可能是另一個.Cells)'用'i = i + 1'或一個循環來使用For循環For I = first_column To last_column ' – danieltakeshi

+0

@danieltakeshi我可以這樣做嗎? ThisWorkbook.Worksheets(「Sheet1」)。Range(「E27:E51」)。Copy Range(Cells(i,5),Cells(i,5) – unclass123

+0

你想複製這個範圍到什麼單元格和工作表?這樣做,下面是一個例子:https://stackoverflow.com/questions/42420280/copy-and-paste-dynamic-ranges-to-new-sheet-in-excel-with-vba和一個位更高級https://stackoverflow.com/questions/12138624/vba-copy-paste-with-dynamic-range – danieltakeshi

回答

1

爲Jeeped說,使用Destination:=Sheets("Sheet2").Cells(27, 5)Destination:=Worksheets(2).Range("E27")

既然你想了解更多一點,我做了一個例子說明你的問題可以得到解決:

https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-column-property-excel 在鏈接上解釋說。列:

列A返回1,列B返回2,依此類推。

而且同樣是與.Rows

使用.Cells https://msdn.microsoft.com/pt-br/library/office/ff194567.aspx所以,你可以使用.Cells(行,列)或.Cells(指數從範圍)或整個對象:

With Worksheets("Sheet1").Cells.Font 
.Name = "Arial" 
.Size = 8 
End With 

所以,如果你想要把你的電子表格動力爲例:從範圍$ E $ 27至最後一行與列$ E寫在工作表Sheet1要 最後一欄什麼也沒有在Sheet2上寫上1行的東西複製。

Sub test() 
'Declare variables here 
Dim sht1, sht2 As Worksheet 

'sht1 has the data and sht2 is the output Worksheet, you can change the names 

last_row = Worksheets(1).Range("E65536").End(xlUp).Row 
last_column = Worksheets(2).Cells(1, sht1.Columns.Count).End(xlToLeft).Column 

'Data add 
For i = 27 To last_row 
'Start from Row 27 
    Worksheets(2).Cells(i - 26, last_column + 1) = Worksheets(1).Cells(i, 5) 
Next i 

MsgBox "Data Updated" 
End Sub 

和鹼性動力工作簿的,其中i的示例= i + 1的和For循環split a single row of data into multiple unique rows into a new sheet to include headers as values and cell contents as values