首先,我对Visual Basic(脚本)知之甚少。我已经结合了一些我在网上和通过这个网站找到的代码示例,但是在运行下面的代码时我遇到了一个路障。寻求帮助排除故障。
背景:
我开发了一个电子表格,用于跟踪我的炼油厂/工厂中发现的所有安全观察结果。这个跟踪器有8个正在使用的主列,A thru H.这个跟踪器有3个主要的标签(表格)可视:“观察列表”,“完成跟踪器”和“完成跟踪2016”。
制作此跟踪器的副本,我删除了所有数据并将此文件开发为条目形式。这个excel文件(表单)包含允许用户通过VB表单将数据输入到列中的宏,然后通过电子邮件将此表单发送给我。此文件有一个名为“Observations List。”的工作表。
预期结果:
我希望收到约。每周20个这样的文件。我的意图是一次打开所有20个文件(活动),然后使用下面的代码,从每个文件中复制包含数据的所有行,并将它们添加到主跟踪器excel文件的底部。此代码将在主跟踪器中运行,并且不会在“完成跟踪器”或“完成跟踪2016”表单的任何日期绘制。每封电子邮件文件的数据从第6行开始。
我收到的错误是在第38行。它突出显示'LastCol'代码并提供此错误消息 - 编译错误:子或函数未定义。
Sub AppendDataAfterLastColumn()
Dim sh As Worksheet
Dim DestSh As Worksheet
Dim Last As Long
Dim CopyRng As Range
Dim Rng As Range
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
DestSh.Name = "Observations List"
' Fill in the start row.
StartRow = 6
' Loop through all worksheets and copy the data to the
' summary worksheet.
For Each sh In ActiveWorkbook.Worksheets
If sh.Name <> DestSh.Name And sh.Name <> "Completion Tracker" And sh.Name <> "Completion Tracker 2016" Then
' Use all cells on the sheet
' Set Rng = Sheets("Observations List").Cells
' Find the last column with data on the summary
' worksheet.
Last = LastCol(DestSh)
' Fill in the columns that you want to copy.
Set CopyRng = sh.Range("A:H")
' Test to see whether there enough rows in the summary
' worksheet to copy all the data.
If Last + CopyRng.Columns.Count > DestSh.Columns.Count Then
MsgBox "There are not enough columns in " & _
"the summary worksheet."
GoTo ExitTheSub
End If
' This statement copies values, formats, and the column width.
CopyRng.Copy
With DestSh.Cells(1, Last + 1)
.PasteSpecial 8 ' Column width
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
End If
Next
ExitTheSub:
Application.Goto DestSh.Cells(1)
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub