1.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich habe einen etwas längeren Code von "DieseArbeitsmappe" in
den Code eines Commandbuttons kopiert. Der Button befindet sich
auf einem Tabellenblatt namens "Input form" und sorgt seitdem
unter anderem bei folgender Codezeile für eine Fehlermeldung:

Worksheets(projectName).Range(Cells(1, 1),
Cells(highestRowNumber + 2, anzColumns +
1)).Borders(xlDiagonalDown).LineStyle = xlNone


Die Variablen stimmen und enthalten folgende Werte:
projectName="Testprojekt"
highestRowNumber=37
anzColumns=206

Fehlermeldung: Laufzeitfehler 1004: Anwendungs- oder
objektdefinierter Fehler

Könnt ihr mir sagen warum mein Code plötzlich nicht mehr
funktioniert?

Er stand wie gesagt vorher bei "DieseArbeitsmappe" in einem Public
Sub und ein Steuerelement war damit verknüpft. Wollte nur zu einem
Commandbutton umziehen, damit alle Buttons auf dem Blatt
Commandbuttons sind.

Gruß,
critchm

4 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

vor Cells fehlt der Bezug auf das Tabellenblatt.

Bis später,
Karin
0 Punkte
Beantwortet von
Hallo Karin,

vor Cells muss der auch nochmal? Obwohl ich schon
Worksheets(..).Range benutze?

Danke!

Gruß,
critchm
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

mit Worksheets(projectName).Range beziehst du dich auf ein direkt vorgegebenes Tabellenblatt, mit Cells(Zeile, Spalte) ohne Worksheet-Bezug immer auf das aktive Tabellenblatt. Solange Worksheets(projectName) das aktive Tabellenblatt ist, ist das kein Problem, sobald es aber nicht das aktive Tabellenblatt ist, wäre das ja ein 3D-Bezug: Range für das benannte Tabellenblatt und Cells für das aktive Tabellenblatt - und damit kann Excel natürlich nicht arbeiten. Vereinfachen kannst du es mit einer With-Anweisung, innerhalb derer sich alles auf das benannte Tabellenblatt bezieht:

With Worksheets(projectName)
.Range(.Cells(1, 1), .Cells(highestRowNumber + 2, anzColumns + 1)).Borders(xlDiagonalDown).LineStyle = xlNone
End With


Beachte den Punkt (.) vor Range und Cells - dadurch wird signalisiert, dass sie sich auf das Objekt beziehen, welches mit With benannt ist - also Worksheets(projectName)


Bis später,
Karin
0 Punkte
Beantwortet von
Hallo Karin,

danke für diesen äußerst aufschlussreichen Beitrag. Habe eine Menge gelernt. Auch das mit der With-Anweisung. With
kannte ich zwar schon und habe ich auch mit Range (und dem Punkt) verwendet. Aber an den Punkt vor Cells habe ich
nicht gedacht.

Echt klasse, mein Tool funktioniert jetzt!

Danke und Gruß,
critchm
...