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