2010-10-26 98 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 
相关问题