Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1732to1736
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
Inhaltsverzeichnis

Bereich Namen Deklarieren

Bereich Namen Deklarieren
09.01.2020 13:09:37
Lars
Hallo Zusammen!
Für die Verwendung von variablen PulDown-Listen in Zellen, benutze ich deklarierte Bereiche in einem separaten Tabellenblatt. Dazu wird aus einer "Private Sub" (Tabellenblatt) eine Prozedur aufgerufen, welche erst einmal die Bereiche deklariert. Das funktioniert alles.
Nur beim anlegen des Bereiches hakt es, da ich OPTISCH nicht das Tabellenblatt in dem der Breich angelegt werden soll aktivieren möchte - der User soll durch den Sprung nicht verwirrt werden.
Application.ScreenUpdating = False funktioniert leider nicht
Die Prozedur mit der die Bereiche engelegt werden lautet wie folgt:

Sub Bereiche_Rohre()
Dim rngCell As Range, ErsteZ As Byte, LetzteZ As Byte
Dim Material As String, Spalte As Byte, Bereich As String, Name As String
Application.ScreenUpdating = False
'----alle bestehenden Bereiche werden gelöscht
Dim n As Name
For Each n In ActiveWorkbook.Names
n.Delete
Next 'alle bestehenden Bereiche werden gelöscht
Material = ActiveSheet.Range("D3").Value
'Spalte in denen die Nennweiten stehen
Set rngCell = Worksheets("Rohre").Range("a:d").Find("Nennweite", LookIn:=xlValues)
If Not rngCell Is Nothing Then
Spalte = rngCell.Column
End If
'Anfangspunkt der Reihe
Set rngCell = Worksheets("Rohre").Range("a:a").Find(Material, LookIn:=xlValues)
If Not rngCell Is Nothing Then
ErsteZ = rngCell.Row
End If
'Endpunkt der Reihe für die Liste der DN-Werte
For i = ErsteZ + 1 To 255 Step 1
If Not (IsEmpty(Worksheets("Rohre").Cells(i, 1))) Then Exit For
Next i
LetzteZ = i - 1
Bereich = Range(Cells(ErsteZ, Spalte), Cells(LetzteZ, Spalte)).Address
Name = "DN_" & Material
Worksheets("Rohre").Activate
Worksheets("Rohre").Names.Add Name:=Name, RefersToR1C1:=Range(Bereich)
Application.ScreenUpdating = True
End Sub

Und " Worksheets("Rohre").Names.Add Name:=Name, RefersToR1C1:=Range(Bereich)
" funktioniert auch nicht. Der Bereich liegt dann im Tabellenblatt, in dem die eigentliche Bearbeitung durch den Nutzer erfolgt.
Vielen Dank für Eure Mühen und Hilfen.
Gruß, Lars

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

Betreff
Datum
Anwender
Anzeige
AW: Bereich Namen Deklarieren
09.01.2020 13:58:47
Torsten
Hallo,
klar, weil du der Variablen "Bereich" hier einen Bereich aus dem aktiven Blatt zuweist. Du must hier auch auf das gewuenschte Blatt verweisen. Ohne Referenzierung greift der Code immer auf das aktive Blatt zu:
Anstatt:

Bereich = Range(Cells(ErsteZ, Spalte), Cells(LetzteZ, Spalte)).Address

also:

Bereich = Worksheets("Rohre").Range(Cells(ErsteZ, Spalte), Cells(LetzteZ, Spalte)).Address

Gruss Torsten
AW: Bereich Namen Deklarieren
09.01.2020 14:18:58
Torsten
Hab nochmal den gesamten Code mit einer With Anweisung umgeben. Besser so:

Sub Bereiche_Rohre()
Dim rngCell As Range, ErsteZ As Byte, LetzteZ As Byte
Dim Material As String, Spalte As Byte, Bereich As String, Name As String
Application.ScreenUpdating = False
'----alle bestehenden Bereiche werden gelöscht
Dim n As Name
For Each n In ActiveWorkbook.Names
n.Delete
Next 'alle bestehenden Bereiche werden gelöscht
Material = ActiveSheet.Range("D3").Value
'Spalte in denen die Nennweiten stehen
With Worksheets("Rohre")
Set rngCell = .Range("a:d").Find("Nennweite", LookIn:=xlValues)
If Not rngCell Is Nothing Then
Spalte = rngCell.Column
End If
'Anfangspunkt der Reihe
Set rngCell = .Range("a:a").Find(Material, LookIn:=xlValues)
If Not rngCell Is Nothing Then
ErsteZ = rngCell.Row
End If
'Endpunkt der Reihe für die Liste der DN-Werte
For i = ErsteZ + 1 To 255 Step 1
If Not (IsEmpty(.Cells(i, 1))) Then Exit For
Next i
LetzteZ = i - 1
Bereich = .Range(.Cells(ErsteZ, Spalte), .Cells(LetzteZ, Spalte)).Address
Name = "DN_" & Material
.Names.Add Name:=Name, RefersToR1C1:=Range(Bereich)
End With
Application.ScreenUpdating = True
End Sub

Gruss Torsten
Anzeige
AW: Bereich Namen Deklarieren
13.01.2020 08:16:52
l.jaehnke@abk-iak.de
Hallo Torsten!
Vielen Dank für Deine Unterstützung. Ich bin scheinbar bei meinen Versuchen blind geworden.
Ich habe das ganze vorher aus einer "Private Sub Worksheet_selectionChange(ByVal Target As Range)" versucht. Und da ging der Zugriff auf das Tabellenblatt gar nicht. Verstehe ich auch nicht.
Mit Deiner Hilfe funktioniert das aber auch über eine externe Routine, in der ich erst den Bereich anlege, und dann für eine Pull-Down-Liste auf diesen Bereich zugreife.
Vielen Dank und einen guten Wochenstart.
Gruss Lars

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige