Excel BigBen——提到显式选项的想法是,它会立即说有一个未声明的。但事实上,如果父项未声明,则它被视为保留字,因此从那里得到错误。“要在某个范围内循环,需要一个对象,而不是变量”-这是不正确的。取下作为范围,您的代码将仍然有效,即使父项是一个变体@BigBe
Excel BigBen——提到显式选项的想法是,它会立即说有一个未声明的。但事实上,如果父项未声明,则它被视为保留字,因此从那里得到错误。“要在某个范围内循环,需要一个对象,而不是变量”-这是不正确的。取下作为范围,您的代码将仍然有效,即使父项是一个变体@BigBe,excel,vba,Excel,Vba,BigBen——提到显式选项的想法是,它会立即说有一个未声明的。但事实上,如果父项未声明,则它被视为保留字,因此从那里得到错误。“要在某个范围内循环,需要一个对象,而不是变量”-这是不正确的。取下作为范围,您的代码将仍然有效,即使父项是一个变体@BigBen-请参见屏幕截图。在OP-中,父项未声明,但不是变体-由于与父属性混淆,因此存在编译错误。即使OP有选项显式,如果未定义父属性,则代码仍不会编译。也就是说,Option Explicit不会捕获未定义的变量,相反,您会有相同的编译错误。@Bi
BigBen——提到显式选项的想法是,它会立即说有一个未声明的。但事实上,如果父项未声明,则它被视为保留字,因此从那里得到错误。“要在某个范围内循环,需要一个对象,而不是变量”-这是不正确的。取下
作为范围
,您的代码将仍然有效,即使父项
是一个变体
@BigBen-请参见屏幕截图。在OP-中,父项
未声明,但不是变体
-由于与父属性
混淆,因此存在编译错误。即使OP有选项显式
,如果未定义父属性
,则代码仍不会编译。也就是说,Option Explicit
不会捕获未定义的变量,相反,您会有相同的编译错误。@BigBen-提到Option Explicit
的想法是,它会立即说有一个未声明的变量。但事实上,如果父级未声明,则它被视为保留字,因此从那里得到错误。
Set w1 = wbk.Sheets("PositionsDB")
Set w2 = wbk.Sheets("Performance")
num_rows = w1.Cells(Rows.Count, 1).End(xlUp).row
'If there's no parentName column, we can't continue.
If w1.Rows(1).Find("portfolioName") Is Nothing Then Exit Sub
'find first instance
Set f1 = w1.Rows(1).Find("portfolioName", lookat:=xlWhole)
If Not f1 Is Nothing Then
'find second instance
Set f2 = f1.Offset(0, 1).Resize(1, w1.Columns.Count - f1.Column).Find("portfolioName", lookat:=xlWhole)
If Not f2 Is Nothing Then
'set range based on f2
Set parentRange = w1.Range(f2.Offset(1, 0), w1.Cells(Rows.Count, f2.Column).End(xlUp))
End If
End If
'If there's no Root level, how do we know where to start?
If parentRange.Find("Main") Is Nothing Then Exit Sub
Debug.Print "test1"
Debug.Print parentRange.Width
Debug.Print parentRange.Height
Debug.Print "test2"
For Each parent In parentRange
If Not dict.Exists(parent.Value) Then
childCount = Application.WorksheetFunction.CountIf(parentRange, parent.Value)
Set childrenRange = parent.Offset(, 2).Resize(childCount, 1)
dict.Add parent.Value, Application.Transpose(Application.Transpose(childrenRange.Value))
End If
Next
Variable Required - Can't assign to this expression
For Each parent In parentRange
Sub TestMe()
Dim parent As Range
For Each parent In Range("A1:A5")
Debug.Print parent.Address
Next parent
End Sub