Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1616to1620
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

Aufruf Prozedur, Bennennung von Worksheets

Aufruf Prozedur, Bennennung von Worksheets
24.03.2018 13:01:37
Worksheets
Liebe Excel-Liebhaber
Ich beisse mir gerade an folgendem Problem die Zähne aus:
Es handelt sich um eine Tabelle, deren Zellen anhand einer Auswahl in einer cbo formatiert werden sollen. Dafür werden einige bereits in einem Modul definierte Standardprozeduren aufgerufen. Soweit es sich nur um Range-Objekte handelt, funktioniert dies ganz einwandfrei:
Standardprozedur im Modul:
Sub RahmenVoll(x As Range)
'Umrahmt die Zellen x
With x.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With x.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With x.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With x.Borders(xlEdgeRight)
.LineStyle = xlNone
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With x.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With x.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub

Prozedur im Arbeitsblatt:
Sub Rahmen()
RahmenVoll Range("B1:B30") 'Wert x für Prozedur RahmenVoll
End Sub

Nun mein Problem:
Ich will mit der gleichen Programmierstruktur nicht nur ein Range-Objekt sondern auch noch ein spezifisches Worksheet ansprechen. Wie müsste dann die Standardprozedur aussehen? Diese Versuche sind fehlgeschlagen:
Sub RahmenVoll(x As Worksheets, y as Range)
'Umrahmt die Zellen y in der Tabelle x
With x.y.Borders(xlEdgeLeft)
[...]


Sub RahmenVoll(x As Worksheets, y as Range)
'Umrahmt die Zellen y in der Tabelle x
With xy.Borders(xlEdgeLeft)
[...]


Sub RahmenVoll(x as Range)
'Umrahmt die Zellen x
With Worksheets("Tabelle1").x.Borders(xlEdgeLeft)
[...]

Wie kann ich es so programmieren, dass in der Prozedur im jeweiligen Arbeitsblatt auch das Tabellenblatt flexibel eingegeben werden kann?
Ich möchte bei der bestehenden Programmierstruktur bleiben.
Herzlichen Dank bereits im Voraus

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufruf Prozedur, Bennennung von Worksheets
24.03.2018 13:24:31
Worksheets
Auch diese Lösung funktioniert nicht...
Standardprozedur
Sub RahmenVoll(x As Range, y As Worksheets)
'Umrahmt sämtliche Zellen des in der Prozedur zu definierenden Worksheets y und Range x
With y
With x.Borders(xlEdgeLeft)
[...]
Was läuft hier falsch?
AW: Aufruf Prozedur, Bennennung von Worksheets
24.03.2018 13:41:09
Worksheets
Hallo,
ohne 's' und gib Deinen Vars mal sprechende Namen, nicht diese verkümmerten Buchstabenkürzel...
Sub RahmenVoll(x As Worksheets, y as Range)
'Umrahmt die Zellen y in der Tabelle x
With x.y.Borders(xlEdgeLeft)
[...]
Sub RahmenVoll(objWorksheet As Worksheet, objRange As Range)
'Umrahmt die Zellen y in der Tabelle x

            With objWorksheet.objRange.Borders(xlEdgeLeft)

'[...]

End Sub

Gruß, Mullit
Anzeige
AW: Aufruf Prozedur, Bennennung von Worksheets
24.03.2018 13:44:42
Worksheets
Hallo nochmal,
Du kannst natürlich auch gleich bei der Parameter-Übergabe des Range-Objekts das Blatt referenzieren..
Gruß, Mullit
AW: Aufruf Prozedur, Bennennung von Worksheets
24.03.2018 14:01:55
Worksheets
Danke Mullit
Ich habe mal die Variablen besser verständlich ausgeschrieben, das Problem bleibt jedoch bestehen...
Code im Standardmodul:
Sub RahmenVoll(objWorksheet As Worksheet, objRange As Range)
'Umrahmt die Zellen objRange im Tabellenblatt objWorksheet
With objWorksheet.objRange.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With objWorksheet.objRange.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With objWorksheet.objRange.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With objWorksheet.objRange.Borders(xlEdgeRight)
.LineStyle = xlNone
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With objWorksheet.objRange.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With objWorksheet.objRange.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
Code im Arbeitsblatt:
Sub Rahmen()
RahmenVoll Worksheets("Tabelle1"), Range("C1:C20") 'Definition von objWorksheet und objRange
End Sub
Mir ist echt nicht klar, wo da der Wurm begraben ist. Der Parameter objWorksheet muss ja im Arbeitsblatt mit Worksheets mit 'S' bezeichnet werden. Ich erhalte immer die Meldung, die Parameter seien nicht verträglich. Mann...
Was meinst du mit der Referenzierung auf das Blatt? Wie meinst du das?
Lieber Gruss und schon mal ein Dankeschön, dass du dich der Sache angenommen hast.
Anzeige
AW: Aufruf Prozedur, Bennennung von Worksheets
24.03.2018 14:12:52
Worksheets
Ich habe das Problem nachgebaut und die Datei hochgeladen:
https://www.herber.de/bbs/user/120653.xlsm
Das Ziel:
Eine Standardprozedur mit Worksheets und Range, die sich im jeweiligen Arbeitsblatt (hier Tabelle1 und Tabelle2 jeweils flexibel definieren lassen, d.h. jeweils angepasst auf das entsprechende Arbeitsblatt.
AW: Aufruf Prozedur, Bennennung von Worksheets
24.03.2018 14:16:48
Worksheets
Hallo,
besser so, hatt ich im 2. Beitrag noch geschrieben:
Sub Rahmen()
RahmenVoll Worksheets("Tabelle1").Range("C1:C20") 'Definition objRange
End Sub
Sub RahmenVoll(objRange As Range)
'Umrahmt die Zellen objRange im Tabellenblatt objWorksheet
With objRange.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub

Gruß, Mullit
Anzeige
AW: Aufruf Prozedur, Bennennung von Worksheets
24.03.2018 19:53:38
Worksheets
Danke Mullit. Das funktioniert so :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige