2010-10-26 41 views
0

我有下面的代碼,假設我從Excel電子郵件中接收的Excel文件中複製數據,並將其粘貼到具有相同日期的行上的另一個文件。當我嘗試運行宏時,它說有錯誤。任何人都可以看看我的代碼,並指導我瞭解我的錯誤在哪裏。我對編碼和創建宏相當陌生。使用宏將數據複製到excel工作表

Sub CopyDataToPlan() 

Dim LDate As String 
Dim LColumn As Integer 
Dim LFound As Boolean 
Dim WS As Worksheet 


On Error GoTo Err_Execute 

Set WS = Workbooks("McKinney Daily Census Template OCT 10.xls").Sheets("McKinney") 


'Retrieve date value to search for 
WS = Workbooks("McKinney Daily Census Template OCT 10.xls").Cell("B15").Value 

Sheets("Input").Select 

'Start at column B 
LColumn = 2 
LFound = False 

While LFound = False 

    'Encountered blank cell in row 2, terminate search 
    If Len(Cells(2, LColumn)) = 0 Then 
     MsgBox "No matching date was found." 
     Exit Sub 

    'Found match in row 2 
    ElseIf Cells(2, LColumn) = LDate Then 

     'Select values to copy from "McKinney" sheet 
     Sheets("McKinney Daily Census Template OCT 10.xls").Select 
     Range("C15:I15").Select 
     Selection.Copy 

     'Paste onto "Key Indicator" sheet 
     Sheets("Input").Select 
     Cells(3, LColumn).Select 
     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
     False, Transpose:=False 

     LFound = True 
     MsgBox "The data has been successfully copied." 

    'Continue searching 
    Else 
     LColumn = LColumn + 1 
    End If 

Wend 

On Error GoTo 0 

Exit Sub 

Err_Execute: 
MsgBox "An error occurred." 

End Sub 
+0

刪除「On Error GoTo Err_Execute」,因爲它掩蓋了真正的錯誤。然後發佈真實的錯誤代碼和說明 – 2010-10-26 20:15:52

+0

我將WS = Workbooks ....更改爲LDate = Workbooks。它說對象不支持這個屬性或方法。 – Edmond 2010-10-26 20:25:57

+0

LDate = Worksheets(「McKinney1」)。Range(「b15」)。Value ... without the SET – 2010-10-26 20:53:24

回答

0

什麼行產生錯誤?看來你的變量LDate從來沒有收到一個日期。可能是代替

WS = Workbooks("McKinney Daily Census Template OCT 10.xls").Cell("B15").Value 

你的意思是寫

LDate = Workbooks("McKinney Daily Census Template OCT 10.xls").Cell("B15").Value 

這一切看起來相當lenghty和危險代碼:爲什麼不)讓無論是從您的輸入表的日期和您想要的數據複製(看起來像你可以把它們放在一個帶有for循環的數組中),然後b)搜索包含你想要的日期的單元格(1語句)來檢索與你想要的日期匹配的單元格的行,然後c)將數組中的數據循環到表單中。

+0

@user 471807 ...你能給我一個這樣的代碼看起來像什麼樣子的例子嗎? – Edmond 2010-10-27 13:59:29

0

請參考更明確。代碼運行速度更快,更易於調試:

Sub CopyDataToPlan() 
Dim LDate As String 
Dim LColumn As Integer 
Dim LFound As Boolean 
Dim WkbCensus As workbook 
Dim WksCensus As worksheet 
Dim WkbThis As workbook 
Dim WksInput As worksheet 

On Error GoTo Err_Execute 

Set WkbThis = thisworkbook 
Set wksInput = WkbMe.Sheets("Input") 
Set WkbCensus = Workbooks("McKinney Daily Census Template OCT 10.xls") 
Set WksCensus = Wkb.Sheets("McKinney") 

LDate = WksCensus.Cell("B15").Value 

LColumn = 2 
LFound = False 

While LFound = False 
    If Len(wksInput.cells(2, LColumn)) = 0 Then 
     MsgBox "No matching date was found." 
     Exit Sub 
    ElseIf wksInput.cells(2, LColumn) = LDate Then 
     WksCensus.Range("C15:I15").copy 
     wksInput.cells(3, LColumn).pastespecial Paste:=xlValues, Operation:=xlNone, _ 
      SkipBlanks:=False, Transpose:=False 
     LFound = True 
     MsgBox "The data has been successfully copied." 
    Else 
     LColumn = LColumn + 1 
    End If 
Wend 

On Error GoTo 0 

Exit Sub 

Err_Execute: 
    MsgBox "An error occurred." 
End Sub 
相關問題