Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
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

Nur Zahlen und Punkte in Spalte erlauben!

Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 15:09:32
Gordon
Moin,
bin schon wieder da....
Ich möchte gerne, dass in einem bestimmten Spaltenbereich (G4:G299) nur Zahlen, Kommas und das Eurozeichen eingetragen werden dürfen. Nur weiß ich nicht, wie man in VBA das ausdrückt. Stelle mir das so in etwa vor:

Sub Zahlen()
Dim z as Long
With Worksheet("Blatt")
For z = .Range("G299"). end(x1up).row to 4 Step -1
If .Cells(z, 7)  ["Zahlen, Kommas, Eurozeichen"] then
Msg "Falsche Eingabe!"
.Cells(z, 7) = ""
.Cells(z, 7).select
End If
Next
End With
End Sub


Hat jemand 'ne Idee?
Gruß
Gordon

30
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 15:30:00
Rudi
Hallo,
warum nicht einfach eine Gültigkeitsregel?
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 15:38:39
Gordon
Wenn du mir sagst wie, gerne... :)

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 15:45:00
Rudi
Hallo,
Bereich markieren
Daten-Gültigkeit; zulassen: Dezimal; Max und Min eingeben
Zellen als Währung formatieren.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 16:18:00
Gordon
Leider geht das nur wenn man etwas per Hand einträgt, wenn man aber per Kopieren/Einfügen arbeitet, kann man immer noch alle Zeichen verwenden.

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 15:48:00
Daniel
HI
-betroffene Zellen markieren
- DATEN-GÜLTIGKEIT anklicken
- dort bei ZULASSEN "ZAHL" auswählen und die Maximal und minmal zulässigen Werte eingeben
-Falls du noch Mitteilungen an den Anwender machen willst, kannst du das in den beiden anderen Reitern machen.
- das Euro-Zeichen bekommst dadurch, daß du über FORMAT-ZELLE-ZAHL ein entsprechendes Währungsformat einstellst.
Gruß, Daniel

Anzeige
AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 16:12:00
dan
Hi,
ich habe jezt ein vba-code dafuer geschrieben. Sollte das selbe machen, aber ist ohne gewaehr :-)...wenig getestet. Vorteil: es ist wirksam fuer alle sheets, ohne die zellen formatieren zu muessen. Gruss Dan, cz.
Option Explicit
Private Const firstTestedRow As Long = 4
Private Const lastTestedRow As Long = 299
Private Const firstTestedCol As Long = 7
Private Const lastTestedCol As Long = 7

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo Err_Workbook_SheetChange
If (Target.Row  lastTestedRow Or _
Target.Column  lastTestedCol) Then
' no tested range, exit
Exit Sub
End If
Dim targetValue As String
Dim targetValueChar As String
Dim notAllowedChars As String
Dim i As Long
On Error Resume Next
Err.Clear
targetValue = Target.Value
If (Err.Number  0) Then
Err.Raise vbObjectError + 512, "Workbook_SheetChange", "Target.Value can't be converted  _
to string"
End If
On Error GoTo Err_Workbook_SheetChange
notAllowedChars = ""
For i = 1 To VBA.Strings.Len(targetValue)
targetValueChar = VBA.Strings.Mid(targetValue, i, 1)
Select Case targetValueChar
Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ",", VBA.Chr(128)
' number, komma, euro: OK
Case Else
' char not allowed
notAllowedChars = notAllowedChars & " " & targetValueChar
End Select
Next i
If (notAllowedChars  "") Then
MsgBox "Characters  are not allowed.", vbExclamation, "Warning" _
Target.Value = ""
End If
Exit Sub
Err_Workbook_SheetChange:
MsgBox Err.Description, vbCritical, "Err_Workbook_SheetChange"
End Sub


Anzeige
AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 16:42:35
Gordon
Hmm..blicke leider bei dem Qulltext gar nicht durch....wüßte nun auch nicht wohin ich ihn hinpacken sollte, damit er für meine Datei richtig funktioniert. Dennoch danke für die Mühe....

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 16:45:52
dan
Hi,
sorry ich habe vergessen zu schreiben, das man es in den klassen-module von dem wokrbook kopieren soll. So wird der code verfuegbar fuer alle sheets. Ist es verstendlich? Falls du hinweisse zu dem code brauchst, schreibe ich es gerne...
Gruss dan, cz.

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 16:55:05
Gordon
Naja,
also hab ihn jetzt in ein Klassenmodul eingefügt. Klappt dennoch nicht. Kann weiterhin Buchstaben in Spalte Spalte 7 einfügen ohne Probleme, ohne das etwas passiert. :(
Desweiteren soll es ja nicht für jedes Sheet bzw. für alle außer ein ganz betsimmtes....

Anzeige
AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 17:04:00
dan
Aha, das ist merkwurdig. hast du es wie auf diesem bild? Im VBA IDE ThisWorkbook anklicken and pasten, (also in den WorkBook, wo du testests, bei dir heisst es wahrscheinlich DieseArbeitsmappe (oder ehnliches...).
Userbild

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 17:15:00
Gordon
?
Jetzt verstehe ich gar nichts mehr....ich denke ich soll das in ein Klassenmodul werfen?

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 17:12:00
dan
Desweiteren soll es ja nicht für jedes Sheet bzw. für alle außer ein ganz betsimmtes.... dann muss man die bedingung so aendern:
("FuerDiesenSheetNicht" soll mit dem Namen des Ausnahme-Sheets ersaetzt werden...)
If (Target.Worksheet.Name = "FuerDiesenSheetNicht" Or _
Target.Row Target.Row > lastTestedRow Or _
Target.Column Target.Column > lastTestedCol) Then
' no tested range, exit
Exit Sub
End If

Anzeige
AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 17:30:00
Gordon
Ich habe das Gefühl ihr wollt mir einfach zuviel gutes tun....das Problem ist hier vielleicht auch, dass ich eure ganzen Quelltexte nicht vertshee oder nur hlab nachvollziehen kann.
Desweitern war vielleicht meine Informationmenge nicht gut genug. Daher nun, bevor ich völlig den Kopf verliere, nochmal von ganz vorne.
- Ich hab erstmal ein Tabellenblatt wo in der Spalte g nur Zahlen, Kommas und das Eurozeichen eingegeben werden dürfen.
- Sobald etwas anderes eingetippt wird, soll eine Fehlermeldung kommen und die Zelle wieder leeren
- Sobald etwas kopiertes eingefügt wird, soll auch eine Fehlermeldung kommen.
Daher war mein Ansatz dieser hier:

Sub Zahlen()
Dim z as Long
With Worksheet("Blatt")
For z = .Range("G299"). end(x1up).row to 4 Step -1
If .Cells(z, 7)  ["Zahlen, Kommas, Eurozeichen"] then
Msg "Falsche Eingabe!"
.Cells(z, 7) = ""
.Cells(z, 7).select
End If
Next
End With
End Sub


Kann mir jemand da Änderungstipps geben, wie ich die Lücke schließen kann oder geht das so, wie ich es geschrieben habe gar nicht?
PS: Ich weiß dass der obige Quelltext so sich nicht automatisch ausführt. Aber ich möchte erstmal nur das der Text läuft.

Anzeige
AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 20:29:00
dan
Hallo Gordon,
ok, also hier dein code. Ich habe die funktion "CellContainsIllegalCharacters" hinzugefuegt.
Ist alles klar jetzt? Gruss dan, cz.

Sub Zahlen()
Dim z As Long
With Worksheets("Blatt")
For z = .Range("G299").Row To 4 Step -1
If (CellContainsIllegalCharacters(.Cells(z, 7)) = True) Then '  ["Zahlen, Kommas,  _
Eurozeichen"] Then
MsgBox "Falsche Eingabe!"
.Cells(z, 7) = ""
.Cells(z, 7).Select
End If
Next
End With
End Sub


' - die funktion "CellContainsIllegalCharacters" prueft,
' ob die zelle die nicht-erlaubten zeichen aenthealt
' - die nicht-erlaubten characters sind in der funktion selbst definiert
' - wenn die zelle einen oder mehrere nicht-erlaubten characters aenthaelt,
' dann wird die funktion "true" zurueckgeben, anderenfalls "false"


Function CellContainsIllegalCharacters(ByRef testedCell As Range) As Boolean
Dim testedValue As String
Dim testedValueChar As String
Dim notAllowedChars As String
Dim i As Long
CellContainsIllegalCharacters = False
testedValue = testedCell.Value
notAllowedChars = ""
' man geht die zeichen der zell-value eine nach dem anderen durch,
' und testet, ob das zeichen zahl, komma, oder euro ist
' falls nicht, dann wird das zeichen in variable notAllowedChars gespeichert
For i = 1 To VBA.Strings.Len(testedValue)
testedValueChar = VBA.Strings.Mid(testedValue, i, 1)
Select Case testedValueChar
Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ",", VBA.Chr(128)
' number, komma, euro: OK
Case Else
' char not allowed
notAllowedChars = notAllowedChars & " " & testedValueChar
End Select
Next i
' wenn mindestens ein nicht-erlaubtes zeichen gefunden wurde,
' gibt die funktion true zurueck
If (notAllowedChars  "") Then
CellContainsIllegalCharacters = True
End If
End Function


Anzeige
AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 16:29:07
Daniel
Hi
probier mal das hier aus:

Sub Texte_Löschen()
On Error Resume Next
Range("G2:G299").SpecialCells(xlCellTypeConstants, 2).ClearContents
If Err = 0 Then MsgBox "Ihre Eingabe enthielt Texte. Diese wurden gelöscht."
On Error GoTo 0
End Sub


Gruß, Daniel

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 16:44:56
Gordon
Hat leider nicht funktioniert.... :(

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 16:57:00
Daniel
Hi
bei mir gehts, guckst du hier.
https://www.herber.de/bbs/user/49502.xls
außerdem würde mich interessieren, was nicht funktioniert hat.
leider kenne ich deine Daten, die du einfügen willst, nicht.
Gruß, Daniel

Anzeige
AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 17:28:00
Gordon
Ich habe das Gefühl ihr wollt mir einfach zuviel gutes tun....das Problem ist hier vielleicht auch, dass ich eure ganzen Quelltexte nicht vertshee oder nur hlab nachvollziehen kann.
Desweitern war vielleicht meine Informationmenge nicht gut genug. Daher nun, bevor ich völlig den Kopf verliere, nochmal von ganz vorne.
- Ich hab erstmal ein Tabellenblatt wo in der Spalte g nur Zahlen, Kommas und das Eurozeichen eingegeben werden dürfen.
- Sobald etwas anderes eingetippt wird, soll eine Fehlermeldung kommen und die Zelle wieder leeren
- Sobald etwas kopiertes eingefügt wird, soll auch eine Fehlermeldung kommen.
Daher war mein Ansatz dieser hier:

Sub Zahlen()
Dim z as Long
With Worksheet("Blatt")
For z = .Range("G299"). end(x1up).row to 4 Step -1
If .Cells(z, 7)  ["Zahlen, Kommas, Eurozeichen"] then
Msg "Falsche Eingabe!"
.Cells(z, 7) = ""
.Cells(z, 7).select
End If
Next
End With
End Sub


Kann mir jemand da Änderungstipps geben, wie ich die Lücke schließen kann oder geht das so, wie ich es geschrieben habe gar nicht?
PS: Ich weiß dass der obige Quelltext so sich nicht automatisch ausführt. Aber ich möchte erstmal nur das der Text läuft.

Anzeige
AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 18:01:10
Daniel
Hi
wenn du mir sagst, was genau bei meinem Code bei dir nicht funktioniert, hätte ich u.U. eine für dich verständliche Erweiterung deines Makros.
Gruß, Daniel

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 18:04:00
Gordon
Was sol ich sagen...ich hab den Quelltext bei mir eingefügt, ausprobiert und nichts geschah...kam auch keine Fehlermeldung. Würde dir gerne mehr berichten können....

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 18:08:08
Daniel
Hi
hast du das Makro mal in Einzelstep-Modus getestet oder deine Daten mal in meine Bespieldatei reinkopiert?
wie gibst du die Daten ein? von Hand oder werden sie aus einer anderen Datei rüberkopiert?
Gruß, Daniel

Anzeige
AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 18:12:00
Gordon
Deine Beispeildatei geht...aber das ist ja nicht das was ich brauche.
Die Daten werden bei mir per Hand und auch per "einfügen" eingegeben. Wie gesagt, wenn etwas in Spalte G kommt und es ist keine Zahl (ob ganzzahlig oder dezimal) soll sofort alarm geschlagen werden....

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 18:13:37
Werner
Hi,
wenn du das € eingibst, wird das immer Text.
mfg Werner

AW: Nur Zahlen und Punkte in Spalte erlauben!
29.01.2008 19:14:00
Daniel
Hi
je nach Ländereinstellung.
wenn dort das €-Zeichen als Währungssymbol hinterlegt ist, dann wird bei der Eingabe von "123€" diese Eingabe in eine Zahl umgewandelt und das Zahlenformat auf ein Währungsformat eingestellt.
vielleicht gibts noch irgendwo ne Einstellung ,wo man das deaktivieren kann, aber ist mir nicht bekannt.
Vermutlich liegt das Problem darin, das Gorden Daten aus Textdateien kopiert, die dann nicht in Zahlen umgewandelt werden.
aber dieser Code hier sollte auf jeden Fall funktionieren:
die Auswahl der erlaubten Zeichen läst sich recht leicht im Konstant-String verändern.

Sub Zahlen()
Dim z As Long, i As Long
Dim txt As String
Const ErlaubteZeichen = "1234567890€,"
Dim Check As Boolean
With Worksheets("Blatt")
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!"
.Cells(z, 7) = ""
.Cells(z, 7).Select
End If
Next
End With
End Sub


Gruß, Daniel

AW: Nur Zahlen und Punkte in Spalte erlauben!
30.01.2008 10:00:00
Gordon
Supper,
das hat nun so geklappt, wie ich es mir vorgestllt habe. Jetzt habe ich nur noch eine Frage. Und zwar, wenn ich Text kopiere und dann in der Spalte G einfüge kommt ja die Fehlermeldung und die Zelle wird gelöscht. Das soweitr alles richtig gut.
Nur würde ich dann gerne, dass auch die Zellenformatierung auf Währung (Euro , 2 Kommastellen) gestellt wird, da diese nämlich vorher auch drin war, aber durch das einfügen verloren ging. Die müßte doch an folgende Stelle:

Sub Zahlen()
Dim z As Long, i As Long
Dim txt As String
Const ErlaubteZeichen = "1234567890€,"
Dim Check As Boolean
With Worksheets("Blatt")
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!"
.Cells(z, 7) = ""
.Cells(z, 7).Select
.Cells(z, 7) = [Zellenformatierung]
End If
Next
End With
End Sub


Nur was müßte ich da eintragen?
Gruß
Gordon

AW: Nur Zahlen und Punkte in Spalte erlauben!
30.01.2008 16:12:14
Gerd
Hi,
If Check Then
MsgBox "Falsche Eingabe!"
.Cells(z, 7) = 1
.Cells(z, 7) = .Cells(z, 7) * 1
.Cells(z, 7).clearcontents
.Cells(z, 7).Select
.Cells(z, 7).numberformat = "#,###,##0.00"
End If
Gerd

AW: Nur Zahlen und Punkte in Spalte erlauben!
30.01.2008 16:28:19
Gordon
Numberformat funktioniert leider nicht.

AW: Nur Zahlen und Punkte in Spalte erlauben!
30.01.2008 19:12:00
Daniel
Hi
schau dir den Code nochmal genau an, gehen ihn mal schritt für Schritt durch, und überlege dir, für welche Zellen das Zahlenformat so eingestellt wird.
dann sollte dir auch auffallen, warum es nicht funktionieren kann.
Gruß, Daniel

AW: Nur Zahlen und Punkte in Spalte erlauben!
31.01.2008 07:53:00
Gordon
Ist mir leider nicht auf gefallen.
Hab es inzwischen so gelöst, dass der Formatspeicher jedesmal drüber kopiert wird (natürlich nur das Format). Kannst mir dennoch verraten, warum das icht geht....bin wohl zu müde/doof um das zu sehen. :(

AW: Nur Zahlen und Punkte in Spalte erlauben!
31.01.2008 20:51:29
Daniel
HI
weil in dem Code die Formatierung nur dann ausgeführt wird, wenn ein Text eingegeben und die Zelle gelöscht wurde.
Bei Zellen, die Zahlen enthalten , wird der IF-Block , in dem der Formatbefehl steht, ja nicht ausgeführt.
Sollte mit ein bisschen Grundlagenkenntis im Programmieren aber recht leicht zu erkennen sein.
Gruß, Daniel

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige