2015-08-27 61 views
0

我正在使用此代碼。我需要爲DY1到DY30做這個。這將是很多代碼和非常冗長。我如何使它緊湊和短?在最後一個單元格上添加一個新行

另外我想在執行最後的IF語句時在活動工作表中添加新行。

Option Explicit 
Sub send() 

Dim val As String 
Dim j As Integer 

val = Sheets("Form").Range("C8").Value 

'-------FORDY1----------- 

If val = "DY1" Then 
For j = 2 To 9 

Sheets("Form").Cells(j, 3).Copy 

If j = 2 Then 
Sheets("1").Select 
Range("A" & Cells.Rows.Count).End(xlUp).Select 
ActiveSheet.Paste 
Else 

If j = 3 Then 
Sheets("1").Select 
Range("B" & Cells.Rows.Count).End(xlUp).Select 
ActiveSheet.Paste 
Else 

If j = 4 Then 
Sheets("1").Select 
Range("C" & Cells.Rows.Count).End(xlUp).Select 
ActiveSheet.Paste 
Else 

If j = 5 Then 
Sheets("1").Select 
Range("D" & Cells.Rows.Count).End(xlUp).Select 
ActiveSheet.Paste 
Else 

If j = 6 Then 
Sheets("1").Select 
Range("E" & Cells.Rows.Count).End(xlUp).Select 
ActiveSheet.Paste 
Else 

If j = 7 Then 
Sheets("1").Select 
Range("F" & Cells.Rows.Count).End(xlUp).Select 
ActiveSheet.Paste 
Else 

If j = 8 Then 
Sheets("1").Select 
Range("G" & Cells.Rows.Count).End(xlUp).Select 
ActiveSheet.Paste 
Else 

If j = 9 Then 
Sheets("1").Select 
Range("H" & Cells.Rows.Count).End(xlUp).Select 
ActiveSheet.Paste 
Table.ListRows.Add 'Trying to add new row or send "Tab" key which normally get's down on next row of table 
Else 
End If 
End If 
End If 
End If 
End If 
End If 
End If 
End If 
Next j 
Else 
End If 

End Sub 
+0

另外我需要爲DY1到DY30做這個,這將是很多代碼和很長的任何人都可以讓我知道如何使它簡短。 –

+0

您還沒有給出關於如何處理DY2 - > DY30的指示。 – Jeeped

+0

這對於DY1來說同樣適用於DY2對DY30 –

回答

0

這看起來更短。

Sub send() 
    If Sheets("Form").Range("C8").Value = "DY1" Then 
     Sheets("1").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 8) = _ 
      Application.Transpose(Sheets("Form").Cells(2, 3).Resize(8, 1).value) 
    End If 
End Sub 

如果工作表的C8單元中的值等於DY1再從C2的值:TRANSPOSE C9和然後(即翻轉行轉換成列),並把它們插入工作表A列中的第一個空行。

+0

是的,這是正確的方式來做到這一點我剛剛開始使用VBA,所以不知道轉置,偏移,調整大小和其他功能。 –

相關問題