PDA

Vollständige Version anzeigen : Excel formatierung


HandwerkerOld
23.07.2012, 08:03
hi community,

möchte vorgeben dass bei einer Excel Tabelle, in einer bestimmten Spalte die Daten in einem vorgegebenem Format eingegeben werden ... und zwar

XXX.XXX.XXX.??? die drei Fragezeichen sollen heissen dass 1 bis 3 zeichen eingegeben werden können

also vier felder die mit einem punkt getrennt sind, wobei im letzten feld 1-3 zeichen eingegeben werden können

vielen dank für die hilfe

chris-kaiser
23.07.2012, 08:20
Hi


=UND(SUMME((TEIL(C1;ZEILE($1:$18);1)=".")*ZEILE($1:$18))=24;LÄNGE(C1)>12;LÄNGE(C1)<16)

HandwerkerOld
23.07.2012, 08:50
ehrlich gesagt verstehe ich nur Bahnhof [ vielleicht hast du dich im Post vergriffen oder ich habe mich falsch ausgedrückt ] ...

AAA.111.111.A
ABC.123.123.AL
ABC.567.987.ZO
so etwas möchte ich haben für alle Spalten in der Tabelle

habe dann die ganze Spalte selektiert - zellen formatierung - benutzerdefiniert und dann als typ:

&&&"."###"."###"."???

doch komme nicht auf das erhoffte ergebniss
was mache ich falsch ?

chris-kaiser
23.07.2012, 08:56
Hi

was mache ich falsch ?
Du verwechselst Excel mit Acc. vermute ich mal. :)

Wenn du das für alle Spalten in Excel benötigst..., warum Excel überhaupt als Datenmaske verwenden, In einem Formular in Acc ist dies wesentlich leichter einzustellen.

Meine Überprüfung war nur OB auch richtig Daten eingeben worden sind, (inkl. der Punkte)

ansonsten über VBA
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tempStr As String, tg As Range
On Error GoTo errmsg
If Target.Column = 4 Then 'für Spalte D anpassen
Application.EnableEvents = False
For Each tg In Target
tempStr = Replace(tg, ".", "")
If Len(tempStr) > 9 And Len(tempStr) < 13 Then
'XXX.XXX.XXX.???
tg = Left(tempStr, 3) & "." & Mid(tempStr, 4, 3) & "." & Mid(tempStr, 7, 3) & "." & Mid(tempStr, 10, Len(tempStr) - 9)
End If
Next
End If
errmsg:
Application.EnableEvents = True
End Sub

EarlFred
23.07.2012, 08:57
Hi Chris,

ich bin mal gaaanz fies:
.....000.0000
;)


Vielleicht geht's damit (als Ergänzung Deiner Formel):
SUMME((TEIL(C2;{4.8.12};1)=".")*1)=3

Vielleicht wär's mit RegExp leichter.


Grüße
EarlFred

HandwerkerOld
23.07.2012, 09:04
Der VBA code wird mir sicherlich weiterhelfen ... damit kann ich schön überprüfen ob der code ( so nenne ich ihn mal ) richtig eingegeben worden ist.

Ja ich möchte später auf meine Excel Tabelle zugreifen und die Daten ziehen.

Doch ich wollte schon im Voraus im Excel die Formatierung festlegen - natürlich werde ich später beim lesen der Daten den check mit dem VBA code machen

doch wie schaffe ich es jetzt im Excel dieses Format zu überprüfen, also der user setzt die Maus in die Spalte und tippt z.b. OOO111222AL ein dann soll automatisch zu 000.111.222.AL umgeformt werden

chris-kaiser
23.07.2012, 09:10
Hi

doch wie schaffe ich es jetzt im Excel dieses Format zu überprüfen, also der user setzt die Maus in die Spalte und tippt z.b. OOO111222AL ein dann soll automatisch zu 000.111.222.AL umgeformt werden

füge mal meinen Code in das Blatt ein...
und trage dein OOO111222AL in Spalte 4 ein...
was erscheint?

und Formate die es in Acc. gibt, sind in Excel bei TEXTEN nun mal nicht möglich.

Darum würde ich gleich die Daten in Acc. eingeben.
ich möchte später auf meine Excel Tabelle zugreifen und die Daten ziehen
ergibt für mich keinen Sinn..., ausser das deine User kein Acc. auf dem Rechner haben.
Aber selbst dann würde es die Möglichkeit eines Webbformulares geben, wenn ich mich nicht täusche.

HandwerkerOld
23.07.2012, 09:45
Nicht jeder user hat Access auf seinem Rechner ... und das sind meine Vorgaben.
Dein Code habe ich jetzt hinzugefügt und er funktioniert prächtig, war mein Fehler da ich erst später gemerkt habe das es eine xslm datei sein muss, da er mir sonst mein VBA Code nicht speichert.

habe nur noch Target.Row <> 1 gemacht da er mir meine Überschrift mit Formatiert hat :)