我厌倦了寻找解决方案。我正在使用Excel Macro将数据导入Excel工作表。代码本身从另一个excel表中获取数据并循环遍历给出的excel表数。对于其他工作表,它工作正常,但在某些情况下,它导入的数据多于所需的和随机进入任何列。假设它必须循环代码9次,然后它导入9个正确的行(具有正确的excel单元格格式)以及随机excel单元格格式的一些其他随机行我的宏代码如下:
“shtData”是必须从中导入数据的Excel文件。 “shtCurrent”是写入宏并导入数据的工作表。
Set ACell = shtData.Cells.Find("Fund", LookIn:=xlValues, LookAt:=xlWhole, after:=shtData.Range("A1")).Offset(2, 0)
Set BCell = ACell.End(xlDown)
For Each DataCell In shtData.Range(ACell, BCell)
Set rCell = shtCurrent.Range("A65000").End(xlUp).Offset(1, 0)
rCell.Value = DataCell.Offset(0, 7).Value 'date
rCell.Offset(0, 1).Value = DataCell.Offset(0, 8).Value 'date format
rCell.Offset(0, 2).Value = "TEXT"
rCell.Offset(0, 3).Value = "TEXT"
rCell.Offset(0, 4).Value = "TEXT"
' null value required for rCell.Offset(0, 5)
rCell.Offset(0, 6).Value = "100.00"
rCell.Offset(0, 7).Value = "100.00"
rCell.Offset(0, 8).Value = "100"
rCell.Offset(0, 9).Value = "100"
' null value required for rCell.Offset(0, 10)
rCell.Offset(0, 11).Value = RunDate 'date format
rCell.Offset(0, 12).Value = "TEXT"
rCell.Offset(0, 14).Value = shtData.Range("C5").Value 'Date format
Next DataCell
拜托,我对此感到厌烦。任何帮助将不胜感激。
答案 0 :(得分:0)
没有更多信息,代码似乎对我来说很好,一旦定义了工作表对象。因为你的代码不是一个可重复的例子 - 也就是你省略了一些细节 - 我不知道shtData
是如何定义的(如果有的话)。
请尝试发布可重复的示例 - 因为这有助于获得更多答案。
无论如何..我创建了两个名为shtData
和shtCurrent
的工作表。我使用
Dim shtData, shtCurrent As Worksheet
Set shtData = Worksheets("shtData")
Set shtCurrent = Worksheets("shtCurrent")
我将下面的代码放在一个单独的模块中,然后使用Option Explicit
,因为这会强制用户/程序员思考和定义他/她正在使用的变量及其类型等等
以下是您的代码,作为可重现的示例(显然需要shtData
中的一些值)。
Option Explicit
Sub testtest()
Dim ACell, BCell, DataCell, rCell As Range
Dim shtData, shtCurrent As Worksheet
Dim RunDate As Date
RunDate = Now()
Set shtData = Worksheets("shtData")
Set shtCurrent = Worksheets("shtCurrent")
Set ACell = shtData.Cells.Find("Fund", LookIn:=xlValues, LookAt:=xlWhole, after:=shtData.Range("A1")).Offset(2, 0)
Set BCell = ACell.End(xlDown)
For Each DataCell In shtData.Range(ACell, BCell)
Set rCell = shtCurrent.Range("A65000").End(xlUp).Offset(1, 0)
rCell.Value = DataCell.Offset(0, 7).Value 'date
rCell.Offset(0, 1).Value = DataCell.Offset(0, 8).Value 'date format
rCell.Offset(0, 2).Value = "TEXT"
rCell.Offset(0, 3).Value = "TEXT"
rCell.Offset(0, 4).Value = "TEXT"
' null value required for rCell.Offset(0, 5)
rCell.Offset(0, 6).Value = "100.00"
rCell.Offset(0, 7).Value = "100.00"
rCell.Offset(0, 8).Value = "100"
rCell.Offset(0, 9).Value = "100"
' null value required for rCell.Offset(0, 10)
rCell.Offset(0, 11).Value = RunDate 'date format
rCell.Offset(0, 12).Value = "TEXT"
rCell.Offset(0, 14).Value = shtData.Range("C5").Value 'Date format
Next DataCell
End Sub