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