2017-05-05 154 views
0

我正在嘗試將文本從我的工作表複製到變體工作表。Excel根據單元格值複製到特定工作表

我想要的是將單元格J19,J20,J21複製到不同工作表的單元格A1,B1,C1。 J19決定將哪個工作表複製到每個代理程序都有自己的工作表,其中有一個宏將代理程序名稱拉到J19上進行數據驗證。

J19 =代理名稱

J20 =假日開始日期

J21 =假日結束日期

如何更改Set wsDestin = Sheets("Agent1")以便它看起來在J19來決定目標單元格。

Sub CopyColumnP() 
    Dim wsSource As Worksheet 
    Dim wsDestin As Worksheet 
    Dim lngDestinRow As Long 
    Dim rngSource As Range 
    Dim rngCel As Range 

    Set wsSource = Sheets("Front") 
    Set wsDestin = Sheets("Agent1") 

    With wsSource 

     Set rngSource = .Range(.Cells(19, "J"), .Cells(.Rows.Count, "J").End(xlUp)) 
    End With 

    For Each rngCel In rngSource 
     If rngCel.Value = "Design" Then 
      With wsDestin 
       lngDestinRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row 
       rngCel.EntireRow.Copy Destination:=wsDestin.Cells(lngDestinRow, "A") 
      End With 
     End If 
    Next rngCel 
    End Sub 
+0

單元格(「J19」)。值 – Luuklag

+0

真的那麼簡單嗎?我認爲這會更復雜@Luuklag –

回答

1

這很容易像這樣:

Set wsDestin = ThisWorkbook.Worksheets(wsSource.Range("J19").Value) 

要檢查表存在最終避免錯誤使用方法:

On Error Resume Next 
    Set wsDestin = ThisWorkbook.Worksheets(wsSource.Range("J19").Value) 
    If Not Err.Number = 0 Then 
     MsgBox "Sheet '" & wsSource.Range("A1").Value & "' not found." 
     Exit Sub 
    End If 
On Error GoTo 0 

或者,如果J19不包含目標工作表名稱,但您需要根據J19的值選擇工作表,然後使用:

Select Case wsSource.Range("J19").Value 
    Case "AAA" 'if value of J19 is AAA select sheet A 
     Set wsDestin = Sheets("A") 

    Case "B", "C" 'if value of J19 is B or C select sheet BC 
     Set wsDestin = Sheets("BC") 

    Case Else 
     MsgBox "no corresponding worksheet found." 
End Select 
+0

'運行時錯誤'9': 下標超出範圍 –

+0

如果即時更正,將取代'J19'的內容?我想讓代碼看看'J19'來決定從'J19,J20,21'複製和粘貼數據到'J19'中表單名稱的'A1,A2,A3'的數據。 –

+0

左邊的等號將得到等號右邊的值。您可能想在此明確引用工作簿。 – Luuklag

相關問題