我正在检查两个范围以查看它们是否具有相同的大小。如果新范围小于旧范围,则我的宏会扩大范围以匹配旧范围。
Sub san_import(owb As String, nwb As String, imt As String)
Dim orng As Range
Dim nrng As Range
Dim r_fix As Long
Dim c_fix As Long
Set orng = Workbooks(owb).Names(imt).RefersToRange
Set nrng = Workbooks(nwb).Names(imt).RefersToRange
r_fix = orng.Rows.Count - nrng.Rows.Count
c_fix = orng.Columns.Count - nrng.Columns.Count
If r_fix > 0 Then
With nrng
.Rows(.Rows.Count + r_fix).EntireRow.Offset(-1, 0).Insert
.Resize(.Rows.Count + r_fix, .Columns.Count).Name = .Name.Name
End With
End If
If c_fix > 0 Then
With nrng
.Columns(.Columns.Count + c_fix).EntireColumn.Offset(-1, 0).Insert
.Resize(.Rows.Count, .Columns.Count + c_fix).Name = .Name.Name
End With
End If
Set nrng = Workbooks(nwb).Names(imt).RefersToRange
nrng.ClearContents
nrng.Value2 = orng.Value2
End Sub
但是,我在此行遇到应用程序定义的错误:
.Resize(.Rows.Count + r_fix, .Columns.Count).Name = .Name.Name
关于为什么会发生这种情况的任何想法?另外,我不确定宏是否可以成功插入新行,在我的测试中似乎并非如此。