Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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

Ansprechen von Zellen und Bereichen

Ansprechen von Zellen und Bereichen
10.07.2020 10:14:00
Zellen
Hallo Gemeinde,
es tut mir leid, dass ich hier mit möglicherweise üblen Trivialitäten aufschlage, aber ich verstehe das Problem einfach nicht und finde auch nach intensivem googeln nicht die richtige Antwort.
Ich habe ein Makro, das auf einem bestimmten Tabellenblatt (hier tblDeckblatt) gestartet wird und dann auf einem anderen Tabellenblatt (tblJahresbericht, "Vorlage Jahresbericht") Zellen löschen soll.
Ich gebe allen meinen Tabellen einen sprechenden Codenamen (tbl.......) und möchte die Blatter auch nur über die Codenamen ansprechen weil diese sich nicht ändern können (außer ich tue das).
Der Code den ich dafür nutze funktiioniert, aber ich bin nicht damti zufrieden, weil ich es nur mit dem Balttnamen und nicht mit dem Codenamen hinbekommen.
Hier der Code:
ThisWorkbook.Worksheets("Vorlage Jahresbericht").Activate
If intLetzteGefuellteZeile > 6 Then
tblJahresbericht.Range(Cells(7, 1), Cells(intLetzteGefuellteZeile, 23)).EntireRow.Delete Shift:=xlUp
End If~f~
Ich will das nicht mit der Zeile ThisWorkbook..... machen. Wie kann ich den Range von egal wo aus ansprechen ohne dass den Worksheet.Activate Befehl?
Dann noch eine zweite Frage:
zur Formatierung benutze ich an anderer Stelle eine Selection und verändere dann mit With Selection die Formatierung. Das sieht dann exemplarisch so aus:
~f~
Range(Cells(7, 1), Cells(intLetzteGefuellteZeile, 23)).Select
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade =
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Dieser select Befehl erscheint mir recht langsam. Gibt es da einen besseren Weg?
Die derzeit von mir benutze Vorgehensweise habe ich mit angespasstem Code aus aufgezeichneten Makros gemacht.
Lieben Dank für Eure Hilfe
LG
Klaus

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

Betreff
Datum
Anwender
Anzeige
AW: Ansprechen von Zellen und Bereichen
10.07.2020 10:58:07
Zellen
Hallo Klaus
so vielleicht:
'woher der Wert für 'intLetzteGefuellteZeile'
'kommt und ob die Variable dimensioniert ist kannst nur Du wissen
Option Explicit
Sub test1()
'Teil 1 Deiner Frage
Dim tblJahresbericht As Object
Set tblJahresbericht = ThisWorkbook.Worksheets("Vorlage Jahresbericht")
If intLetzteGefuellteZeile > 6 Then
tblJahresbericht.Range(Cells(7, 1), Cells(intLetzteGefuellteZeile, 23)).EntireRow. _
Delete Shift:=xlUp
End If
End Sub
Sub test2()
'Teil 2 Deiner Frage
With Range(Cells(7, 1), Cells(intLetzteGefuellteZeile, 23)).Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Range(Cells(7, 1), Cells(intLetzteGefuellteZeile, 23)).Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub

Gruß
Jochen
Anzeige
AW: Ansprechen von Zellen und Bereichen
10.07.2020 11:20:16
Zellen
Erstmal vielen Danke für Deine Antwort. Vor allem der zweite Teil hilft mir sehr. Was hatte ich da ein dickes Brett vor dem Kopf?
Beim ersten Teil drängt sich mir die Frage auf, ob der Dim tblJahresbericht As Objekt nicht zu einer Kollision führt? tblJahresbericht gibt es schon als Codenamen für die betroffene Tabelle. Und ich habe in dem Code immer noch die Krücke über .Activate die den Blattnamen benutzt. Wenn jetzt der Blattname von einem User verändert wird, kollabiert das Makro.
Kannst du dazu bitte nochwas schreiben?
Danke und Grusß
AW: Ansprechen von Zellen und Bereichen
10.07.2020 11:36:48
Zellen
in der VBA-Umgebung hat jedes Worksheet einen eindeutigen Bezeichner,
z.B.:
Tabelle1(Vorlage Jahresbericht);
diesen Bezeichner kannst Du nutzen er ist unveränderbar.
Dim myTab As Object
Set myTab = ThisWorkbook.Worksheets(Tabelle1)
damit zeigt myTab immer auf die Tabelle1
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige