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