Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1608to1612
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
dynamischer Namensbereich in vba
14.02.2018 07:48:39
Thomas
Hey Leute,
ich habe folgendes Problem und komme nicht weiter.
Ich vergebe Bereichsnamen in einer intelligenten Tabelle mittels VBA.
Teilweise möchte ich aber nicht den ganzen Bereich der Tabelle umbenennen, sondern nur wenn in [Jahr] eine 10 steht. Bevor der Bereichsname vergeben wird sortiere ich das ganze aufsteigend.
Ich habe euch ein kleine Excel gebaut. Bei dem Beispiel sollte ein Namesbereich für Spalte B vergeben werden, wenn in Spalte A 10 steht. Hier also von B16:B31
https://www.herber.de/bbs/user/119782.xlsm
gibt es da Möglichkeiten
Beste Grüße Thomas
Sub Bereichsname_neu()
Dim i As String
Dim lngZeileMax As Long
lngZeileMax = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
With Tabelle1
lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
Set LO = .ListObjects.Add(SourceType:=xlSrcRange, _
Source:=Range("A1:C" & lngZeileMax), xlListObjecthasheaders:=xlYes)
LO.Name = "tab_Simulation"
End With
Set LO = Worksheets("Tabelle1").ListObjects("tab_Simulation")
LO.Sort.SortFields.Clear
LO.Sort.SortFields.Add _
Range("tab_Simulation[[#All], [Jahr]]"), _
SortOn:=xlSortOnValues, Order:=xlAscending
With LO.Sort
.Header = xlYes
.Orientation = xlTopToBottom
.Apply
End With
i = Worksheets("Tabelle1").Range("e1").Value
Worksheets("Tabelle1").Range("tab_Simulation[[#All], [Jahr]]").Name = i
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dynamischer Namensbereich in vba
14.02.2018 08:53:54
UweD
Hallo
Vorab:
- lngZeileMax ermittelst du 2x
- Ich hab das gewünschte Jahr mal per Inputbox abgefragt...
- Den Fehler bei mir untersuche ich nicht weiter
Sub Bereichsname_neu()
    Dim i As String
    Dim lngZeileMax As Long
    Dim WB As Workbook, Jahr As Integer, Anz As Integer, Von As Double, Bis As Double
    
    Set WB = ActiveWorkbook
    
    With WB.Sheets("Tabelle1")
       
       lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
       
            '*** führt bei mir zu Fehler 
            'Set LO = .ListObjects.Add(SourceType:=xlSrcRange, _
                 Source:=Range("A1:C" & lngZeileMax), xlListObjecthasheaders:=xlYes) 
             'LO.Name = "tab_Simulation" 
        
        
        Set LO = .ListObjects("tab_Simulation")
        
        LO.Sort.SortFields.Clear
          
        LO.Sort.SortFields.Add _
            Range ("tab_Simulation[[#All], [Jahr]]"), _
            SortOn:=xlSortOnValues, Order:=xlAscending
          
        With LO.Sort
            .Header = xlYes
            .Orientation = xlTopToBottom
            .Apply
        End With
          
        i = .Range("e1").Value
        
        Jahr = InputBox("Welches Jahr?", "Eingabe", 10)
        
        Anz = WorksheetFunction.CountIf(.Columns(1), Jahr)
        If Anz > 0 Then
            Von = WorksheetFunction.Match(Jahr, .Columns(1), 0) 'Erste Zeile 
            Bis = Von + Anz - 1
        
            On Error Resume Next 'Fehler, wenn noch nicht da 
            ActiveWorkbook.Names(i).Delete
            On Error GoTo 0
            
            ActiveWorkbook.Names.Add Name:=i, RefersTo:= _
                "=" & .Name & "!$B$" & Von & ":$B$" & Bis
        Else
            MsgBox "Jahr nicht vorhanden"
        
        End If
        
    End With

End Sub

LG UweD
Anzeige
AW: dynamischer Namensbereich in vba
14.02.2018 10:38:48
Thomas
Wow vielen vielen Dank!
ja da hat sich wohl bei der Erstellung dieser Testversion ein Fehler eingeschlichen, habe ich geändert.
Besten Dank!
Danke für die Rückmeldung owT
14.02.2018 10:43:23
UweD

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige