Excel 电源查询与VBA

Excel 电源查询与VBA,excel,vba,Excel,Vba,我在这方面是新来的,但我在一个更大的项目中学习VBA,但现在我被卡住了。任何帮助都将不胜感激 在sheet1中,我运行一个宏,该宏调用sheet2中的另一个宏,该宏再次运行一个模块。当我在sheet2中创建表以在工作簿中使用Power query时,宏不再工作。我得到以下信息: 运行时错误“1004”:应用程序定义的错误或对象定义的错误 通过删除宏的各个部分,我发现问题似乎出在模块上。在本模块中,我写了以下内容(我愿意用一种较短的方式来写,但我对这一点不熟悉): 本模块的重点是估计每周发生一到三

我在这方面是新来的,但我在一个更大的项目中学习
VBA
,但现在我被卡住了。任何帮助都将不胜感激

sheet1
中,我运行一个宏,该宏调用
sheet2
中的另一个宏,该宏再次运行一个模块。当我在
sheet2
中创建表以在工作簿中使用Power query时,宏不再工作。我得到以下信息:

运行时错误“1004”:应用程序定义的错误或对象定义的错误

通过删除宏的各个部分,我发现问题似乎出在模块上。在本模块中,我写了以下内容(我愿意用一种较短的方式来写,但我对这一点不熟悉):

本模块的重点是估计每周发生一到三次的事件的日期和时间。我相信问题在于表格无法定义其长度

我可以补充一点,我在一个循环中使用这个模块,检查是否有与计划冲突的假期或活动。如果是,则更新所有日期的计划:

Dim sh1 As Worksheet, sh2 As Worksheet, lr As Long, fn As Range, sr As Range, rng As Range, n As Long
Set sh1 = Me 
Set sh2 = Ark13 
lr = sh1.Cells(Rows.Count, 5).End(xlUp).Row
For i = 2 To lr Step 1

Set fn = sh2.Range("E:E").Find(sh1.Cells(i, 5).Value, , xlValues, xlWhole)
If Not fn Is Nothing Then
Set sr = fn.Offset(0, 1)                    
Set er = sr.End(xlDown)
Set rng = sr
n = rng.Rows.Count
rng.EntireRow.Copy
sh1.Cells(i, 1).Resize(n).EntireRow.Insert
Call fagrekke_dato2
End If
Ark1.Range("D27:F29").Copy
Cells(2, 4).PasteSpecial xlPasteValues
Next

有人知道为什么在sheet2中创建表会出现问题吗?

您知道错误发生在哪一行吗?没有,但我似乎在估计表的长度时遇到了问题:我在sheet2中作为循环的一部分运行此脚本,这也可能是问题所在。循环如下:Dim sh1作为工作表,sh2作为工作表,lr作为长,fn作为范围,sr作为范围,rng作为范围,n作为长集sh1=Me‘编辑工作表名称集sh2=Ark13’编辑工作表名称lr=sh1.Cells(Rows.Count,5)。End(xlUp)。RowFor i=2到lr步骤1设置fn=sh2.Range(“E”)。Find(sh1.Cells(i,5)。Value,xlValues,total)如果不是fn,则设置sr=fn.Offset(0,1)Set er=sr.End(xlDown)Set rng=srn=rng.Rows.Count rng.EntireRow.Copy sh1.Cells(i,1).Resize(n).EntireRow.Insert调用fagrekke_dato2 End If Ark1.Range(“D33:F35”)。复制单元格(2,4)。粘贴下一个值
Dim sh1 As Worksheet, sh2 As Worksheet, lr As Long, fn As Range, sr As Range, rng As Range, n As Long
Set sh1 = Me 
Set sh2 = Ark13 
lr = sh1.Cells(Rows.Count, 5).End(xlUp).Row
For i = 2 To lr Step 1

Set fn = sh2.Range("E:E").Find(sh1.Cells(i, 5).Value, , xlValues, xlWhole)
If Not fn Is Nothing Then
Set sr = fn.Offset(0, 1)                    
Set er = sr.End(xlDown)
Set rng = sr
n = rng.Rows.Count
rng.EntireRow.Copy
sh1.Cells(i, 1).Resize(n).EntireRow.Insert
Call fagrekke_dato2
End If
Ark1.Range("D27:F29").Copy
Cells(2, 4).PasteSpecial xlPasteValues
Next