Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 数据验证和命名范围_Excel_Vba - Fatal编程技术网

Excel 数据验证和命名范围

Excel 数据验证和命名范围,excel,vba,Excel,Vba,我有一个通过Access VBA生成的电子表格。我填充从Access到用于数据验证的单元格范围。范围在那里并命名,这是通过使用电子表格左上角的框来检查的。 当我尝试验证时,会收到消息“找不到您指定的命名范围”。如果现在使用Ctrl F3,则可以删除该范围。现在我使用完全相同的范围,在左上角的弓中键入完全相同的标题,然后一切正常。据我所知,我在整个过程中使用的标准完全相同。有人有什么想法吗 在第(5)页中为=间接函数“写入”常量 “与保罗的电话交谈。现在,这些将来自表 "_____________

我有一个通过Access VBA生成的电子表格。我填充从Access到用于数据验证的单元格范围。范围在那里并命名,这是通过使用电子表格左上角的框来检查的。 当我尝试验证时,会收到消息“找不到您指定的命名范围”。如果现在使用Ctrl F3,则可以删除该范围。现在我使用完全相同的范围,在左上角的弓中键入完全相同的标题,然后一切正常。据我所知,我在整个过程中使用的标准完全相同。有人有什么想法吗

在第(5)页中为=间接函数“写入”常量 “与保罗的电话交谈。现在,这些将来自表 "_______________________________________________________________

        Dim CL(1 To 6) As Integer ' This is to count "filled rows" when spreadsheet is filled
        Dim Header(1 To 6) As String
        Dim AddNameFormula As String

        Header(1) = "CostType"
        Header(2) = "SoftwareCosts"
        Header(3) = "HardwareCosts"
        Header(4) = "Expenses"
        Header(5) = "Travel"
        Header(6) = "Building"

        NRrows = RSNonResourceCosts.RecordCount ' Number of Rows in Non Resource Table
        NRcols = RSNonResourceCosts.Fields.Count ' Number of Fields in NonResource Table

        RSNonResourceCosts.MoveFirst

        For R = 1 To NRrows

        If (RSNonResourceCosts![CostType]) <> "" Then
        CL(1) = CL(1) + 1
        WKS.Cells(199 + R, 1) = (RSNonResourceCosts![CostType])
        End If

        If (RSNonResourceCosts![SoftwareCosts]) <> "" Then
        CL(2) = CL(2) + 1
        WKS.Cells(199 + R, 2) = (RSNonResourceCosts![SoftwareCosts])
        End If

        If (RSNonResourceCosts![HardwareCosts]) <> "" Then
        CL(3) = CL(3) + 1
        WKS.Cells(199 + R, 3) = (RSNonResourceCosts![HardwareCosts])
        End If


        If (RSNonResourceCosts![Expenses]) <> "" Then
        CL(4) = CL(4) + 1
        WKS.Cells(199 + R, 4) = (RSNonResourceCosts![Expenses])
        End If

        If (RSNonResourceCosts![Travel]) <> "" Then
        CL(5) = CL(5) + 1
        WKS.Cells(199 + R, 5) = (RSNonResourceCosts![Travel])
        End If

        If (RSNonResourceCosts![Building]) <> "" Then
        CL(6) = CL(6) + 1
        WKS.Cells(199 + R, 6) = (RSNonResourceCosts![Building])
        End If

        RSNonResourceCosts.MoveNext

        Next R

如果你能发布一些你的数据和命名范围公式的截图,这可能会对我们有所帮助。甚至Access VBA代码也可能有帮助。这些命名范围是如何创建的?这似乎与命名范围的“范围”有关。如果指定的范围是1:工作表的范围,2:在不同的工作表上,而不是在引用它的数据验证上,您将得到一个错误。
        For C = 1 To NRcols - 1
        X = CL(C) - 1

        X = X + 200
        RCount = Str(X)
        RCount = Right$(RCount, Len(RCount) - 1) '
        'strRange = "A201:A" + RCount
        strRange = Chr$(64 + C) & "200:" & Chr$(64 + C) & RCount



        MsgBox "strRange   " & strRange & "   Rcount  " & RCount

        WKS.Range(strRange).Select


        If C = 1 Then
        ColString = Str(C)
        ColString = Right$(ColString, Len(ColString) - 1)

        WKS.Names.Add Name:=Header(1), RefersToR1C1:="=ProjectDetails!R200C" & ColString & ":R" & RCount & "C1"
        End If

        If C = 2 Then
        ColString = Str(C)
        ColString = Right$(ColString, Len(ColString) - 1)
         WKS.Names.Add Name:=Header(2), RefersToR1C1:="=ProjectDetails!R200C" & ColString & ":R" & RCount & "C2"
        End If

        If C = 3 Then
        ColString = Str(C)
        ColString = Right$(ColString, Len(ColString) - 1)
         WKS.Names.Add Name:=Header(3), RefersToR1C1:="=ProjectDetails!R200C" & ColString & ":R" & RCount & "C3"
        End If

        If C = 4 Then
        ColString = Str(C)
        ColString = Right$(ColString, Len(ColString) - 1)
         WKS.Names.Add Name:=Header(4), RefersToR1C1:="=ProjectDetails!R200C" & ColString & ":R" & RCount & "C4"
        End If

        If C = 5 Then
        ColString = Str(C)
        ColString = Right$(ColString, Len(ColString) - 1)
        WKS.Names.Add Name:=Header(5), RefersToR1C1:="=ProjectDetails!R200C" & ColString & ":R" & RCount & "C5"
        End If

        If C = 6 Then
        ColString = Str(C)
        ColString = Right$(ColString, Len(ColString) - 1)
         WKS.Names.Add Name:=Header(6), RefersToR1C1:="=ProjectDetails!R200C" & ColString & ":R" & RCount & "C6"
        End If

        Next C

        I hope this might help.  Code is vast.