Wieso klappt das so?

Bild

Betrifft: Wieso klappt das so? von: Tobias Marx
Geschrieben am: 05.04.2005 10:19:54

Guten Morgen!

Ich hatte gerade ein Makro als Antwort fuer einen Beitrag geschrieben, welches das Hochkomma entfernen soll. Der Source sieht so aus:

Sub temp()
  endup = Range("A65536").End(xlUp).Row
  For i = 1 To endup
  Range("A" & i).Activate
  ActiveCell.Value = Right(ActiveCell.Value, Len(ActiveCell))
  Next i
End Sub

Nun meine Frage: Wieso funktioniert das Makro? Letztendlich macht es doch nichts anderes, als den Wert der aktiven Zelle zu veraendern, aber eigentlich ja auch nicht, weil Right(ActiveCell.Value, Len(ActiveCell)) doch eigentlich dasselbe sein muesste wie ActiveCell.Value, da ich weder vorne noch hinten was abschneide. Trotzdem werden die Hochkommata entfernt. Weiss jemand, wieso?

Gruesse

Tobias
Bild


Betrifft: AW: Wieso klappt das so? von: Tobias
Geschrieben am: 05.04.2005 10:29:50

Hallo Tobias,

ich glaube es liegt daran das man durch dass auslesen des Zelleninhaltes und erneuten Schreiber des Inhaltes in die Zelle das Zellenformat auf Standard gesetzt wird. :-)

Gruß Tobias


Bild


Betrifft: AW: Wieso klappt das so? von: Tobias Marx
Geschrieben am: 05.04.2005 10:31:15

Servus!

Habs grad eben getestet, das Zellformat bleibt dasselbe, also muss es doch etwas anderes sein.

Gruss

Tobias


Bild


Betrifft: AW: Wieso klappt das so? von: Panicman
Geschrieben am: 05.04.2005 10:30:43

Hallo Tobias,

das klappt, weil len() das Hochkomma nicht mitzählt.
A1 = '12345 = Länge(A1) = 5 (obwohl eigentlich 6)
A2 = 12345 = Länge(A2) = 5
Also Länge von Rechts ist dann ohne Hochkomma.

Gruß
Holger


Bild


Betrifft: AW: Wieso klappt das so? von: Tobias Marx
Geschrieben am: 05.04.2005 10:32:47

Servus Holger,

bist du dir da sicher?
Der code klappt naemlich auch genauso, wenn ich das len() durch eine feste Zahl ersetze, z.B. ActiveCell.Value = Right(ActiveCell.Value, 255).

Any ideas?

Gruss

Tobias


Bild


Betrifft: AW: Wieso klappt das so? von: IngoG
Geschrieben am: 05.04.2005 10:41:41

Hallo Tobias,

mw ist das Hochkomma an der ersten Stelle nicht Teil des Strings, sondern ein Steuerzeichen für Excel. Wenn Du zB links(a1,1) schreibst erhälst Du nicht ' sondern 1.

Gruß Ingo


Bild


Betrifft: AW: Wieso klappt das so? von: Tobias Marx
Geschrieben am: 05.04.2005 10:43:43

Servus Ingo,

sowas hab ich mir auch schon gedacht... dein Beispiel ist ja im Prinzip dasselbe wie bei mir, nur halt als Formel.
Finds aber lustig, dass das klappt - wie aus Programmierfehlern manchmal doch was Gutes entsteht :)

Gruss

Tobias


Bild


Betrifft: AW: Wieso klappt das so? von: Panicman
Geschrieben am: 05.04.2005 10:42:50

Hallo Tobias,

du hast Recht. Es ist auch in der Zelle egal, ob du links(A1;255) oder recht(A1,255) oder Text(A1;"@") nimmt, das Hochkomma wird immer ignoriert. Da es für Excel ja nur eine Formatierung ist, wird es anscheinend bei Formeln und VBA immer ignoriert.
Also keine wirkliche Erklärung.

Gruß
Holger


Bild


Betrifft: AW: Wieso klappt das so? von: u_
Geschrieben am: 05.04.2005 10:44:01

Hallo,
' wird als Steuerzeichen interpretiert und nicht als Zellinhalt.
Schreib mal in eine Zelle '12345 und dann im Direktfenster ? Selection
Was siehst du?

Gruß


Bild


Betrifft: AW: Wieso klappt das so? von: Tobias Marx
Geschrieben am: 05.04.2005 10:46:56

Servus Udo,

ich seh 12345 :) Aber das mit dem Steuerzeichen war mir eben nicht bekannt... jetzt bin ich schon wieder schlauer :-)

Gruss

Tobias


Bild


Betrifft: AW: Wieso klappt das so? von: UweD
Geschrieben am: 05.04.2005 10:55:37

Hallo

Links, rechts usw. kannst du ganz weglassen..

ActiveCell.Value = ActiveCell.Value

macht das selbe.

Das ' wird als Steuerzeichen interpretiert. Rest wird gelesen (also das was du als Zellinhalt siehst) und das wird der Zelle neu zugeordnet....



Gruß Uwe


Bild


Betrifft: AW: Wieso klappt das so? von: Tobias Marx
Geschrieben am: 05.04.2005 10:57:03

Servus!

Das is natuerlich ne nette Sache... vielen Dank euch allen fuer die Hilfe!

Gruss

Tobias


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Probleme bei dem ausführen Makros"