Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
644to648
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
644to648
644to648
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Format einer Zelle ändern
30.07.2005 22:24:23
Alexander
Guten Tag,
ich möchte das Format einer Zelle unter einer bestimmten Bedingung ändern lassen. Dies ist mit der WENN-Funktion unter Excel nicht möglich. Auch die "Bedingte Formatierung" funktioniert nicht, da die Bedingung in einer anderen Zelle steht, als die zu formatierende Zelle.
Ich habe also ein Makro mit der Formatänderung aufgezeichnet. Um diesen Code aublaufen zu lassen brauche ich doch aber ein Ereignis, oder?! Z.B. CommandButton1_Click oder ähnlich. Als Ereignis:
Private Sub Range("A1") = "2"
funktioniert es nicht. Was mache ich falsch?
Vielen Dank im Vorraus
Alex

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Format einer Zelle ändern
30.07.2005 22:31:14
Hajo_Zi
Hallo Alex,
benutze bedingte Formatierung und Formel ist.
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


AW: Format einer Zelle ändern
30.07.2005 22:36:30
Alexander
Wow,
sehe gerade. Da kann man einfach die Bedingung reinschreiben.
Vielen Dank nochmal.
Alex
anderes Format ändern!
30.07.2005 22:41:10
Alexander
Hallo,
unter bedingte Formatieren kann man nurn einen kleinen Teil verändern. Ich möchte aber die Einheit verändern. Also z.B. ob kg oder Euro.
Wie kann ich das einstellen?
Alex
Anzeige
AW: anderes Format ändern!
30.07.2005 22:45:28
Matthias
Hallo Alex,
das geht nun wieder über Formel:

=WENN(A1=1;TEXT(A1*10;"0 kilo");TEXT(A1*20;"0 €"))

Gruß Matthias
AW: anderes Format ändern!
30.07.2005 22:48:04
Alexander
Super,
das hilft mir weiter. Gibt es eine Übersicht für Formeln, die Formate ändern?
Danke
Alex
AW: anderes Format ändern!
30.07.2005 22:52:10
Matthias
Hallo Alex,
im Grunde ist das Zelformat damit gar nicht geändert (guck nach: es steht immer auf "Standard"). Es wird nur verschiedener Ausgabetext erzeugt.
Das Problem ist dabei auch, dass man mit dem Ergebnis nicht einfach weiterrechnen kann...
Gruß Matthias
AW: anderes Format ändern!
30.07.2005 23:03:46
Alexander
Hallo,
ich muss mit dem Ergebnis schon weiterrechnen.
Außerdem: Die Zelle, die die Formatierung ändert muss leer bleiben, da dort ein Wert per Hand eingetragen wird.
Ist dies möglich?
Nochmals Danke
Alex
Anzeige
AW: anderes Format ändern!
30.07.2005 23:03:53
Alexander
Hallo,
ich muss mit dem Ergebnis schon weiterrechnen.
Außerdem: Die Zelle, die die Formatierung ändert muss leer bleiben, da dort ein Wert per Hand eingetragen wird.
Ist dies möglich?
Nochmals Danke
Alex
AW: anderes Format ändern!
30.07.2005 23:08:26
Matthias
Hallo Alex,
wenn das so ist:
entweder, du nimmst zwei Zellen, eine für die Zahl, die andere für die Einheit, oder du wagst dich ein wenig an VBA ran.
[ ] ich bleib bei der einfachen Lösung
[ ] ok, zeig mir wie das mit VBA geht
Gruß Matthias
Wagen wir VBA!
30.07.2005 23:16:41
Alexander
Hallo Matthias,
den ersten Weg habe ich bereits versucht. Ist aber nicht zufriedenstellend.
Zu der 2. Sache: Ich habe eine leere Zelle als Vorlage formatiert. Ein Makro aufgezeichnet, in dem ich das Format übertrage. Ich brauche also einen Code, der die Befehle des Makros startet, sobald die Zahl einer anderen Zelle von 0 auf 1 sich ändert.
Vielen Dank
Alexander
Anzeige
AW: Wagen wir VBA!
30.07.2005 23:35:27
Matthias
Hallo Alex,
also gut.. :-)
Nun, in Excel gibt es viele Ereignisse, aus die man mit Codezeilen reagieren kann. z.B. auf das aktivieren/deaktivieren einer Mappe, eines Blattes, auch die Neuberechnung der Zellen oder auf Änderungen von Zellen per Hand.
Wir brauchen nun das Ereignis, das auf die manuelle Änderung von Zellen reagiert, denn du willst ja in eine bestimmte Zelle (im Beispiel) 1 oder 2 schreiben, und davon abhängig soll eine andere Zelle im Format geändert werden.
Dieses Ereignis ist dem Tabellenblatt zugeordet. (Wenn du auf alle Änderungen in allen Blättern der Mappe regieren wolltest, wäre es der Mappe (Modul "DieseArbeitsmappe") zugeordnet. Wenn du auf alle Blätter aller geöffnetn Mappen reagieren wolltest, müsstest du Nepumuk fragen wg. Klassenmodul, vergiss das gleich wieder;-) )
Zum Codemodul des Tabellenblattes kommt man am einfachsten, wenn man einen Rechtsklick auf den Tabellenblattnamen macht (Arbeitsblattregister, z.B. auf "Tabelle1") und im erscheinenden Kontextmenü "Code anzeigen" wählt.
Oben im erschienenen Codefenster sind 2 Comboboxen, links steht (Allgemein) und rechts (Deklarationen).
Ändere nun die Box links in "Worksheet": Schon wird ein Prozedurrumpf erzeugt für das Ereignis "SelectionChange". Das brauchen wir hier aber nicht. Also die Box rechts öffnen und "Change" auswählen. Nun steht da:

Private Sub Worksheet_Change(ByVal Target As Range)
End Sub

und alles, was du da an Code reinschreibst, wird ausgeführt, sobald auf dem Blatt eine manelle Änderung von Zellen durchgeführt wurde.
Die Prüfung, was geändert wurde, erfolgt über die Prüfung des Argumentes "Target".
mein Vorschlag nun für das Worksheet_Change()-Ereignis:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Select Case Target.Value
Case 1
Range("A2").NumberFormat = "# kilo"
Case 2
Range("A2").NumberFormat = "# €"
Case Else
Range("A2").NumberFormat = "General"
End Select
End If
End Sub

Die erste Zeile (If Intersect(...) fragt ab, ob die Schnittmenge aus dem geänderten Bereich und der Zelle A1 "nicht nichts", also etwas ist.
Man könnte auf abfragen

If Taget.Address = "$A$1" Then

aber dann fällt es durch die Prüfung, wenn du z.B. die ganze Spalte A auswählst und löschst oder mit Strg-Enter Eingaben für alle ausgewählten Zellen machst.
Den Rest schau mal durch und sag, ob es dir weiterhilt. Mein Schreibwahn ebbt nun nämlich langsam ab. ;-)
Gruß Matthias
Anzeige
AW: Wagen wir VBA!
30.07.2005 23:44:10
Alexander
Hallo nochmal,
vielen Dank für die schnelle und ausführliche Hilfe.
Was Du geschrieben hast leuchtet mir ein. Ich werde es morgen ausprobieren.
Wenn ich dann noch Probleme habe werden ich mich melden.
Vielen Dank und Gute Nacht.
Alex
Worksheet_Change()-Ereignis
31.07.2005 10:44:25
Alexander
Hallo zusammen,
der Code von Matthias:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Select Case Target.Value
Case 1
Range("A2").NumberFormat = "# kilo"
Case 2
Range("A2").NumberFormat = "# €"
Case Else
Range("A2").NumberFormat = "General"
End Select
End If
End Sub

funktioniert ausgezeichnet. Nur leider ändert sich der Inhalt der Zelle "A1" durch einen Sverweis. Damit reagiert der Code nicht. Was muss ich ändern?
Bitte helft mir. Danke
Alex
Anzeige
AW: Worksheet_Change()-Ereignis
31.07.2005 11:40:50
Josef
Hallo Alex!
Dann so!
Private Sub Worksheet_Calculate()
    Range("A2").NumberFormatLocal = IIf(Range("A1") = 1, "0,00 kg", "#.##0,00 €")
End Sub


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


Anzeige
AW: Worksheet_Change()-Ereignis
31.07.2005 12:38:14
Alexander
Hallo,
habe es jetzt soweit geschafft. Letzte Frage:
Mit der Formatierung: "# €" "# kilo" funktioniert alles. Nur möchte ich es in Gramm also "# g" angeben. Das macht er aber nicht. Wiso nur?
(Fehlermeldung: Die Number-Eigenschaft des Range-Objektes kann nicht festgelegt werden)
Danke für die Hilfe
Alex
AW: Worksheet_Change()-Ereignis
31.07.2005 12:47:58
Josef
Hallo Alex!
Dasfunktioniert bei mir ohne Probleme!
Private Sub Worksheet_Calculate()
    Range("A2").NumberFormatLocal = IIf(Range("A1") = 1, "# g", "# €")
End Sub


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


Anzeige
AW: Worksheet_Change()-Ereignis
31.07.2005 13:04:26
Alexander
Hallo,
bei mir funktioniert es nicht.
Habe eine Mappe hochgeladen. Sobald in "A1" eine "1" steht. kommt die Fehlermeldung.
https://www.herber.de/bbs/user/25157.xls
Danke
Alex
AW: Worksheet_Change()-Ereignis
31.07.2005 13:16:59
Josef
Hallo Alex!
Auch in deiner Mappe klappt's bei mir!
Probier mal so!
Private Sub Worksheet_Calculate()
    Range("A2").NumberFormat = IIf(Range("A1") = 1, "# ""g""", "# ""€""")
End Sub


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


Anzeige
AW: Worksheet_Change()-Ereignis
31.07.2005 13:19:16
Alexander
Jetzt funktioniert es!!! Danke!
Weißt Du, warum es bei mir nicht ohne doppelte Anführungszeichen geht?
Alex
AW: anderes Format ändern!
30.07.2005 22:47:47
Josef
Hallo Alex!
Welche Bedingungen sollen zur Änderung der Formatierung herangezogen werden?
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


AW: anderes Format ändern!
30.07.2005 22:49:52
Alexander
Hallo Sepp,
die Bedingung ist einfach: Der Inhalt einer bestimmten Zelle ist "1" oder "2".
Alex
AW: anderes Format ändern!
30.07.2005 23:34:13
Josef
Hallo Alex!
Die Zelle die das Format bestimmt ist "A1", in "B1" wird das Format geändert!
Rechtsklick auf Blattregister - Code anzeigen - in das rechte Fenster den Code kopieren!
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        [B1].NumberFormatLocal = IIf(Target = 1, "0,00 kg", "#.##0,00 €")
    End If
End Sub


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


Anzeige
AW: anderes Format ändern!
30.07.2005 23:47:00
Alexander
Hallo Sepp,
vielen Dank für den Code. Ich werde das morgen früh ausprobieren.
Wenn ich noch Probleme habe, melde ich mich.
Danke nochmal für die schnelle Hilfe.
Alex

33 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige