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

Frage zur Formatierung

Frage zur Formatierung
30.01.2008 12:35:00
Gordon
Hmm,
hatte zwar schon einen Beitrag dazu geschrieben, aber dieser ist anscheinend nicht mehr vorhanden. Dann halt nochmal:
Ich habe einen Quellcode der bewirkt, dass wenn jemand in die Spalte G (von G4 bis G299) nicht eine Zahl eingibt, eine Fehlermeldung bekommt. Desweiten wird die nichterlaubte Eingabe gelöscht.
Leider ist es nun so, wenn jemand etwas per Maus in die Spalte G einfügt, dass zwar die Fehlermeldung kommt und auch das die Zelle gelöscht wird, aber die Formatierung (Währung, €) futsch ist.
Nun wollte ich, dass genauso so, wie die Zelle gelöscht wird, die Formatirung der Zelle wieder auf Währung umgestellt wird. Leider schaffe ich das irgendwie nicht! Hat da jemand 'nen Tipp?
Hier mal mein Quellcode:

Sub Zahlentest()
Dim z As Long, i As Long
Dim txt As String
Dim tb
Const ErlaubteZeichen = "1234567890€,"
Dim Check As Boolean
For tb = 1 To ThisWorkbook.Worksheets.Count
Select Case Worksheets(tb).Name
Case "Jahresübersicht", "Formatspeicher"
Case Else
With Worksheets(tb)
For z = Range("G299").End(xlUp).Row To 4 Step -1
txt = .Cells(z, 7).Value
Check = False
For i = 1 To Len(txt)
If InStr(ErlaubteZeichen, Mid(txt, i, 1)) = 0 Then
Check = True
Exit For
End If
Next
If Check Then
MsgBox "Falsche Eingabe!" & vbCrLf & "Bitte tragen Sie in der Spalte ' _
Betrag' nur Zahlen ein!"
.Cells(z, 7) = ""
.Cells(z, 7).Select
End If
Next
End With
End Select
Next tb


13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Versuch's mal mit .ClearContents statt =""! -orT
30.01.2008 12:44:47
Luc:-?
Gruß Luc :-?

AW: Versuch's mal mit .ClearContents statt =""! -orT
30.01.2008 12:50:00
Gordon
Naja,
aber damit ist doch nicht das Problem gelöst, oder? Also ClearContents bewirkt doch nur, dass die Zelle gelöscht wird, aber die Formatierung wird ja nicht auf Währung gesetzt?
Gruß
Gordon

Nee, aber die alte bleibt erhalten! Allerdings...
30.01.2008 13:17:00
Luc:-?
...sollte das auch bei ="" der Fall sein, Gordon.
Allerdings hattest du geschrieben, dass das Format mit gelöscht wird... Also nahm ich an, dass die Zellen bereits formatiert sind! Wenn du sie auch per VBA formatieren willst, hast du mehrere Möglichkeiten, von denen die folgende die direkte ist: Range("adresse").NumberFormat = "# ##0.00 €"
Also wie im Zellformat, aber mit Dezimalpunkt und TsderTrenner wie gewünscht (Komma statt Punkt, bei mir stets Leerzeichen).
Gruß Luc :-?

Anzeige
AW: Nee, aber die alte bleibt erhalten! Allerdings...
30.01.2008 13:29:00
Gordon
Das hatte ich leider auch schon probiert, funktionierte aber leider nicht. Bekomme immer folgende Fehlermedlung:

Laufzeitfehler '1004':
Die NumberFormat-Methode des Range-Objektes konnte nicht ausgeführt werden.


Hier nochmal der Quelltext mit der NumberFormat-Methode:


Sub Zahlentest()
Dim z As Long, i As Long
Dim txt As String
Dim tb
Const ErlaubteZeichen = "1234567890€,"
Dim Check As Boolean
For tb = 1 To ThisWorkbook.Worksheets.Count
Select Case Worksheets(tb).Name
Case "Jahresübersicht", "Formatspeicher"
Case Else
With Worksheets(tb)
For z = Range("G299").End(xlUp).Row To 4 Step -1
txt = .Cells(z, 7).Value
Check = False
For i = 1 To Len(txt)
If InStr(ErlaubteZeichen, Mid(txt, i, 1)) = 0 Then
Check = True
Exit For
End If
Next
If Check Then
MsgBox "Falsche Eingabe!" & vbCrLf & "Bitte tragen Sie in der Spalte ' _
Betrag' nur Zahlen ein!"
.Cells(z, 7) = ""
.Cells(z, 7).Select
.Cells(z, 7).NumberFormat "#,##0.00 €"
End If
Next
End With
End Select
Next tb
End Sub


Anzeige
das "=" fehlt! o.T.
30.01.2008 13:34:19
Josef

Gruß Sepp



AW: das "=" fehlt! o.T.
30.01.2008 13:38:02
Gordon
Sorry,
hab nur vergessen es hier einzutragen. Geht dennoch nicht...auch mit "=".... :(

Vielleicht hast du Formatänderungen irgendwo...
30.01.2008 14:11:03
Luc:-?
...verboten, Gordon,
sonst ist es mir bisher (noch dazu bei xl9, mit dem ich auch teste!) unverständlich... ?
Aber vielleicht fällt uns ja noch was ein bzw auf... ;-)
Gruß Luc :-?

AW: Vielleicht hast du Formatänderungen irgendwo...
30.01.2008 14:16:00
Gordon
Hmm...ja und nu? Keine Idee mehr? :(
Also in dem Feld g4 bis g299 ist schon eine Formateinstellung auf Währung, aber wenn ich etwas per Maus einfüge (zB einen Text), ändert sich die ja. Und daher soll das per VBA dann wieder auf Währung zurückgestellt werden.
Aber ich sehe derzeit keine Idee. :(

Anzeige
Das ist klar! "Per Maus Einfügen" heißt ja...
30.01.2008 14:40:40
Luc:-?
...wohl Aufkopieren (mit der gesamten Formatierung!), Gordon!
Man kann allerdings auch nur Werte einfügen! Wenn du dazu nicht ständig über Menü Bearbeiten - Inhalte einfügen - Werte gehen willst, leg dir ein Icon oder ein Kommando für Werte einfügen an. Das findest du unter Extras - Anpassen.
Gruß Luc :-?

AW: Das ist klar! "Per Maus Einfügen" heißt ja...
30.01.2008 14:45:00
Gordon

Man kann allerdings auch nur Werte einfügen! Wenn du dazu nicht ständig über Menü Bearbeiten - Inhalte einfügen - Werte gehen willst, leg dir ein Icon oder ein Kommando für Werte einfügen an. Das findest du unter Extras - Anpassen.


Das ist mir klar,
nur leider ist diese Excel-Datei nicht für mich, sodnern für ein paar Mitarbeiter die zu doof sind "Inhalte einfügen..." zu benutzen. Die zerschießen einem jede Excel-Datei, wenn man das nicht strikt vorgibt bzw. unterbindet. Deswegen soll die Formatirung immer neu gesetzt auf die alte gesetzt werden.

Anzeige
Au! Au! Dann hast du wirklich ein Problem... ;-)
30.01.2008 14:52:00
Luc:-?
Mal sehen, was sich machen lässt!
Gruß Luc :-?

AW: Au! Au! Dann hast du wirklich ein Problem... ;-)
30.01.2008 14:55:00
Gordon
Na,
ich glaub nicht, dass sich hier noch jemand meldet der mehr weiß....

Bis es soweit ist, kannst du ja erst mal...
30.01.2008 18:09:40
Luc:-?
...Folgendes ausprobieren, Gordon... ;-)
Ich habe mal versucht, die Situation mit Zufallszahlen, die mit aufkopierten Texten überschrieben wdn, nachzustellen und dazu eine kleine Reparaturprozedur geschrieben, die du ja mal testen kannst. Vielleicht ergibt sich daraus dann ja der Grund, warum in deinem Pgm die Zellformatierung nicht fkt will...

Sub CellRepair()
Dim x As Range
For Each x In ActiveWindow.RangeSelection
If Not IsNumeric(x) Then
x.Font.Size = 10: x.NumberFormatLocal = "#.##0,00 €;-#.##0,00 €"
x.FormulaLocal = "=RUNDEN(ZUFALLSZAHL()*100000;2)"
End If
Next x
End Sub


Das Format fkt nur, wenn bei dir auch wirklich Pkt als TsderTrennzeichen eingestellt ist. Ansonsten erhältst du so genau das Format Währung. Sonst wäre es immer benutzerdefiniert!
Statt einer Formel könntest du natürlich auch ein fertiges und vorformatiertes Ergebnis in die Zellen eintragen. Dazu könntest du x = FormatCurrency(ausdruck, 2) verwenden.
Gruß Luc :-?
PS: Übrigens, was heißt hier "...mehr weiß..."? Wir müssen das Alles ja schließlich erst mal nachbauen... Und ob wir da genau deine Bedingungen treffen, ist mehr als fraglich. Außerdem hat auch nicht jeder Lust, fremde Pgmm am eigenen PC auszuprobieren... Wenn's um Wissen geht, bleibt letztinstanzlich nur noch die MS-Service-Seite... ;-)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige