Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
744to748
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
744to748
744to748
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ws.Range(Cells(.... nur mit Activate??

ws.Range(Cells(.... nur mit Activate?
23.03.2006 20:58:57
Franz
Hallo Fachleute,
ws.Range(Cells(intWs - 1, 1), Cells(intWs - 1, 7)).Borders(xlEdgeTop).LineStyle = xlContinuous
"ws" ist die Variable für ein Worksheet.
Ist nun "ws" das aktive Blatt, klappt alles.
Ist "ws" aber NICHT das aktive Blatt, oder sogar ausgeblendet (so sollte es sein!), dann kommt bei obiger Code-Zeile die Fehlermeldung: "Die Methode 'Range' für das Objekt_Worksheet ist fehlgeschlagen".
Geht das wirklich nur, wenn das Blatt aktiviert ist? Oder kann man das auch anders schreiben? Ich bitte um Eure (Nach-)Hilfe.
Vielen Dank im Voraus und Grüße
Franz

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ws.Range(Cells(.... nur mit Activate?
23.03.2006 21:07:22
Leo
ws.Range(ws.Cells(intWs - 1, 1), ws.Cells(intWs - 1, 7)).Borders(xlEdgeTop).LineStyle = xlContinuous
Wird eigentlich in der Hilfe erklärt.
mfg Leo
AW: ws.Range(Cells(.... nur mit Activate?
23.03.2006 21:08:57
Franz
Hallo Leo,
danke, aber ich weiß leider nicht worauf Du abzielst! Warum sollte das denn nicht funktionieren?
Grüße Franz
AW: ws.Range(Cells(.... nur mit Activate?
23.03.2006 21:11:15
Leo
Hi,
Range(cells(),cells)) bezieht sich immer auf das aktive Blatt. Du musst das Blatt mit angeben, so wie ich es gepostet habe.
mfg Leo
AW: ws.Range(Cells(.... nur mit Activate?
23.03.2006 21:21:23
Franz
Hallo Leo,
aber ich habe das Blatt doch angegeben, wie ich es in meiner Anfrage schon gepostet habe:
Dim ws As Worksheet
Set ws = Worksheets("UrGr")
ws.Range(Cells(intWs - 1, 1), Cells(intWs - 1, 7)).Borders(xlEdgeTop).LineStyle = xlContinuous
"ws" ist die Variable für ein Worksheet.
?
Grüße Franz
Anzeige
leider noch offen...
23.03.2006 21:31:33
Franz
Grüße Franz
AW: leider noch offen...
23.03.2006 21:51:12
IngGi
Hallo Franz,
schau dir den ersten Beitrag von Leo nochmal genau an. Du musst nicht nur vor Range über ws referenzieren, sondern auch vor den beiden Cells, die den Bereich eingrenzen.
ws.Range(Cells(), Cells())  --> so geht's schief
ws.Range(ws.Cells(), ws.Cells())  --> so sollte es passen
Gruss Ingolf
Oh! So sorry!! :-(((
23.03.2006 22:01:12
Franz
Hallo Leo,
tut mir furchtbar leid, das hab ich leider völlig überlesen! Bitte um Deine Nachsicht...
Vielen Dank Ingolf, für Deinen Hinweis!
zerknirschte Grüße
Franz
AW: ws.Range(Cells(.... nur mit Activate?
23.03.2006 22:04:14
PeterW
Hallo Franz,
VBA fragt sich intensiv, welche Cells wohl bei dem ws.Range gemeint sein könnten und quittieret das Nachdenken mit der Fehlermeldung. Wenn, wie Leo es schreibt, ws.Range(ws.Cells()...) formuliert wird hat VBA keine Probleme, das umzusetzen. Das dann in einen With-Rahmen eingebunden erspart einiges an Tipperei. :-)

Sub RahmenOben()
Dim ws As Worksheet
Set ws = Worksheets(1)
With ws
.Range(.Cells(2, 2), .Cells(4, 4)).Borders(xlEdgeTop).LineStyle = xlContinuous
End With
End Sub

Gruß
Peter
Anzeige
AW: ws.Range(Cells(.... nur mit Activate?
23.03.2006 22:08:33
Franz
Hallo Peter,
schön von Dir zu hören :-))
hab oben leider den Fehler gemacht, Leos erste Antwort nicht richtig zu lesen :-(((.
Das in einen With-Rahmen einzubinden geht leider nicht (wäre mittlerweile sogar mir eingefallen :-))), weil das Ganze schon in einem With-Rahmen, der sich auf wieder ein anderes Blatt bezieht, steht.
Aber Leo hatte ja die Lösung ... wenn man lesen kann ...
Grüße Franz
AW: ws.Range(Cells(.... nur mit Activate?
23.03.2006 22:29:27
PeterW
Hallo Franz,
seit wann lassen sich With-Rahmen nicht verschachteln?

Sub RahmenAllUeberAll()
Dim ws As Worksheet
Set ws = Worksheets(1)
With ws
With Sheets(2).Range("C5:E13")
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 3
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 1
End With
End With
With .Range("B5").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 3
End With
With Sheets(2).Range("C5:E13")
With .Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 8
End With
With .Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 12
End With
With .Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 22
End With
End With
End With
End Sub

Mal in einer leeren Mappe probieren. ;-)
Gruß
Peter
Anzeige
AW: ws.Range(Cells(.... nur mit Activate?
24.03.2006 02:49:03
Franz
Hallo Peter,
stimmt natürlich, in Deinem Beispiel geht das. Ich hab aber in diesem Fall meist Zeilen dieser Art:
With ws1
.cells(x, y) = ws2.cells(xx, yy)
End With
Das mit dem Rahmen kommt in der ganzen Geschichte nur einmal vor. Und da kann ich die Verschachtelung natürlich schon einsetzen. Das hab ich hier vollkommen übersehen, war hier in nem anderen Denkschema drin...
Ich danke Dir und Grüße
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige