Excel benannten Bereich in einem Arbeitsblatt auflisten und den Wert @ abruf

Wie erhalte ich eine Liste der benannten Bereiche in einem bestimmten Arbeitsblatt, die mit einer bestimmten Zeichenfolge beginnen (z. B. alle benannten Bereiche, die mit total beginnen), und nehme den Wert auf? Ich versuche Zwischensumme und Gesamtsumme der Übernachtungskosten basierend auf dem Datum zu machen. Ich werde jeder Zwischensumme basierend auf der Datumsgruppe einen eindeutigen Namen zuweisen. Anschließend muss eine Schaltfläche angeklickt werden, um die Gesamtsumme anhand des benannten Bereichs zu berechnen, den ich jeder Zwischensumme eindeutig zugewiesen habe.

Below ist der Code, den ich für die Gesamtsumme geschrieben habe:

Sub btnTotal()

    Dim Total, LastRowNo As Long

    LastRowNo = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count

    Total = 0

    For Each N In ActiveWorkbook.Names
        Total = Total + IntFlight.Range(N.Name).Value
    Next N

    IntFlight.Range("$P" & LastRowNo).Select
    Selection.NumberFormat = "$* #,##0.00;$* (#,##0.00);$* ""-""??;@"
    With Selection
        .Font.Bold = True
    End With

    ActiveCell.FormulaR1C1 = Total

End Sub

Hinweis: Der IntFlight aus "Total = Total + IntFlight.Range (N.Name) .Value" ist der Name meines Arbeitsblatts.

Das einzige Problem mit dem obigen Code ist, dass alle benannten Bereiche in der Arbeitsmappe vorhanden sind. Ich muss nur herausfinden, ob ein benannter Bereich in einem bestimmten Arbeitsblatt vorhanden ist, der mit einer bestimmten Zeichenfolge und der Zeilennummer beginnt (total26: bedeutet Zwischensumme aus Zeile 26), und dann den zu summierenden Wert als Gesamtsumme erfassen.

Irgendwelche Ideen, wie das geht? Ich habe 2 Tage damit verbracht, die Antwort zu finden.

ielen Dank im Vorau

EDIT 1 (Lösung bereitgestellt von Charles Williams mit Hilfe von belisarius):

Das habe ich mit dem Code von Charles Williams gemacht:

Option Explicit
Option Compare Text

Sub btnIntFlightsGrandTotal()

    Dim Total, LastRowNo As Long
    LastRowNo = FindLastRowNo("International Flights")

    Dim oNM As Name
    Dim oSht As Worksheet
    Dim strStartString As String

    strStartString = "IntFlightsTotal"
    Set oSht = Worksheets("International Flights")

    For Each oNM In ActiveWorkbook.Names
        If oNM.Name Like strStartString & "*" Then
            If IsNameRefertoSheet(oSht, oNM) Then
                Total = Total + Worksheets("International Flights").Range(oNM.Name).Value
            End If
        End If
    Next oNM

    IntFlights.Range("$P" & LastRowNo).Select
    Selection.NumberFormat = "$* #,##0.00;$* (#,##0.00);$* ""-""??;@"
    With Selection
        .Font.Bold = True
    End With

    ActiveCell.FormulaR1C1 = Total

End Sub

Function FindLastRowNo(SheetName As String) As Long

    Dim oSheet As Worksheet
    Set oSheet = Worksheets(SheetName)

    FindLastRowNo = oSheet.UsedRange.Row + oSheet.UsedRange.Rows.Count

End Function

ielen Dank für Ihre Hilfe. Jetzt muss ich mir eine eigene Version für dieses Skript ausdenken.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage