Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Range & Columns Syntax

Forumthread: Range & Columns Syntax

Range & Columns Syntax
28.10.2013 13:50:39
Psy
Hallo zusammen,
habe eine einfache Frage mit einer kleinen Einleitung.
Wenn ich innerhalb einer Spalte einen gewissen Bereich die Inhalte löschen möchte, schreibe ich das folgendermaßen.
Sub test
lrow1 = Sheets(1).UsedRange.Rows.Count
Sheets(1).Range("A1:A" & lrow1).ClearContents
End Sub
Nur weiß ich leider nicht, wie wenn ich dies auf eine Zeile beziehe... z.B. Zellenwerte von A1 bis Z1 oder AX1 oder ...
Vielleicht stehe ich gerade auf dem Schlauch, aber irgendwie komme ich nicht auf die Lösung. Vielen Dank für die Hilfe.
Grüße

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Range & Columns Syntax
28.10.2013 14:08:44
ede
Hallo Psy,
ich schreib das immer so:
Sheets(1).Range(Cells(1, 1), Cells(3, 2)).ClearContents
Gruss

AW: Range & Columns Syntax
28.10.2013 14:17:49
Psy
Hi,
danke für die Antwort und soweit ist mir das auch klar. Doch wie mache ich das, wenn ich einen variablen Bereich habe, bzw. nicht weiß, wie viele Zellen einer Zeile beschrieben ist!?

Anzeige
AW: Range & Columns Syntax
28.10.2013 14:22:49
ede
dann frag die letzte spalte der betroffenen spalte ab, TINO hat dir ein Beispiel bereits abgestellt.
ede

AW: Range & Columns Syntax
28.10.2013 14:26:58
ede
so ermittelt Du beispielsweise die letzte Spalte der Zeile 1
letzteSpalte = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
gruss

eigentlich ist die Syntax falsch
28.10.2013 14:17:18
Tino
Hallo,
eigentlich ist die Syntax nicht richtig, weil Dein Usedrange nicht in A1 beginnen muss.
Angenommen Usedrange Beginnt in A2 und hat nur eine Zelle,
dann wird nur A1 gelöscht obwohl schon leer.
Dim lRow As Long, lCol As Long
'Zeilen
With Sheets(1)
lRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
.Range("A1").Resize(lRow).ClearContents
End With
'Spalten
With Sheets(1)
lCol = .UsedRange.Columns(.UsedRange.Columns.Count).Column
.Range("A1").Resize(, lCol).ClearContents
End With
Gruß Tino

Anzeige
AW: eigentlich ist die Syntax falsch
28.10.2013 14:21:50
Psy
Hi,
danke für die Antwort aber es ist doch egal, wo ich anfange. UsedRange.rows.count bezieht sich ja nur auf die letzte beschreiben Zeile. Egal wo ich anfange. Wenn ich nun lrow1 deklariere und die Zellen A50 bis A3456 mit Werten befülle, zeigt es mir trotzdem lrow1 mit 3456 an oder irre ich mich da?
Resize kannte ich jetzt noch nicht. Werde damit versuchen, mein Problem zu lösen.

Anzeige
ja, da irrst du dich,
28.10.2013 14:28:23
EtoPHG
Psy,
Daten von A50 bis A3456 ergibt ein UsedRange.Rows.Count von 3407 und hat somit nichts mit der letzten beschrieben Zeile zu tun!
Gruess Hansueli

ist verzwickt mit dem benutzten Bereich
28.10.2013 14:47:14
Tino
Hallo,
spielt schon eine Rolle wo man anfängt und wo man aufhört.
UsedRange.rows.count zählt nur die Zeilen im Benutzten Bereich, aber wenn Du von einem Festen Anfang ausgehst passt es nur wenn Usedrange auch in dieser Zelle anfängt.
Was noch geht wäre dies,
birgt aber die Gefahr eine Spalte/Zeile zu löschen die man nicht löschen möchte.
Hier löscht der Code die erste Spalte oder die erste Zeile im Usedrange,
wenn aber beabsichtigt ist die Spalte A in der Tabelle zu löschen und
Usedrange in B erst anfängt, löscht dieser die Spalte B weil dies die erste Spalte ist.
Dim lRow As Long, lCol As Long
'Zeilen
With Sheets(1).UsedRange
lRow = .Rows.Count
.Cells(1, 1).Resize(lRow).ClearContents
End With
'Spalten
With Sheets(1).UsedRange
lCol = .Columns.Count
.Cells(1, 1).Resize(,lCol).ClearContents
End With

Gruß Tino

Anzeige
Eigentlich ist die Syntax NICHT falsch, ...
28.10.2013 14:52:18
Luc:-?
…denn sonst würde das Pgm gar nicht erst laufen, Psy;
was falsch ist, ist eher die (logische) Semantik bzw ggf Pragmatik (vgl dazu das!), aber das wurde dir ja inhaltlich bereits erläutert.
Gruß Luc :-?

Anzeige
AW: Eigentlich ist die Syntax NICHT falsch, ...
30.10.2013 07:41:33
Psy
Hi Luc,
danke für die Info´s. Bin aber ein wenig verwirrt. Die Thematik, Sematik oä ist verwirrend aber irgendwie auch interessant. :-)
Was ich nun gelernt habe ist, die folgenden Syntax zukünftig zu verwenden, wenn ich nicht ab der ersten Zeile beginne.
Sheets(1).UsedRange.Rows(Sheets(1).UsedRange.Rows.Count).Row
Werde mir auch die "Pragmatik" durchlesen. Mal sehen, ob ich etwas vertehe.
Vielen Dank an alle für eure Hilfe.

Anzeige
Bitte sehr, aber mal ganz einfach erklärt, ...
30.10.2013 14:32:58
Luc:-?
…Psy;
bei formalen Sprachen wie einer PgmierSprache (hier VBA) versteht man unter Syntax quasi die Bildungsregeln der Sprache. Ein Verstoß dagg wird schon vom VBEditor angezeigt (rot!).
Verstöße gg die (logische) Semantik wie bspw Fehlendes wdn idR frühestens beim Kompilieren bemerkt. (Logisch) Unsinniges, aber formal Zulässiges, wird nicht bemerkt, führt dann aber auch zu keinem sinnvollen Ergebnis. Das könnte man evtl als Pragmatik bezeichnen, ist aber bei formalen Sprachen eher nicht üblich.
Gruß Luc :-?
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige