Excel-möglichkeit zahlen ergänzen?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Excel-möglichkeit zahlen ergänzen?
von: Thomas
Geschrieben am: 26.04.2005 10:29:14
Hallo zusammen,
Folgendes Problem:
Jemand schreibt täglich mehrere 7stellige Zählerstände auf. Dabei notiert er immer nur die letzten 3-4 Zahlen, die sich auch wirklich geändert haben. Danach tippt er das ganze in excel, wo er dann jedoch die komplette Zahl neu tippen muss.
Gibt es eine Möglichkeit, das dieser Jemand nur die letzten zahlen eingibt und excel automatisch den Rest (also dass was davor steht) ergänzt?
Wenn nicht, wie könnte so etwas in VBA aussehen?
Vielen Dank, Thomas

Bild

Betrifft: AW: Excel-möglichkeit zahlen ergänzen?
von: Dr.
Geschrieben am: 26.04.2005 10:31:46
Yep, benutzerdefiniertes Zahlenformat zum Beispiel so:
1234#####
Bild

Betrifft: AW: Excel-möglichkeit zahlen ergänzen?
von: Thomas
Geschrieben am: 26.04.2005 10:52:57
Hmmm....die Idee ist schon nicht schlecht, aber soooo einfach geht es nicht :-)
Wenn ich das so mache, dann schreibt er ja nur immer die 1234 davor. Wenn sich der Stand aber auf 1235 ändert, würde es ja schon nicht mehr klappen. Es müsste schon so sein, das Excel die letzten 3 oder 4 oder 5 oder wieviel auch immer Zahlen übernimmt...
Bild

Betrifft: AW: Excel-möglichkeit zahlen ergänzen?
von: MichaV
Geschrieben am: 26.04.2005 11:15:34
Hi,
in A1 steht 12345
in A2 steht 90
in B2 steht =(VERKETTEN(LINKS(A1;LÄNGE(A1)-LÄNGE(A2));A2))*1
das ist dann 12390
Probier mal aus, ob das so genügt. Wenn sich eine Stelle mehr geändert hat, muß auch eine mehr eingegeben werden.
Gruß- Micha
Bild

Betrifft: AW: Excel-möglichkeit zahlen ergänzen?
von: Martin Beck
Geschrieben am: 26.04.2005 11:21:48
Hallo Thomas,

versuch's mal mit folgender Ereignisprozedur:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errorhandler
If Not Application.Intersect(Target, Range("A2:A100")) Is Nothing Then
    Set Quelle = Target.Offset(-1, 0)
    If Not IsEmpty(Quelle) Or IsNumeric(Quelle) Then
        Application.EnableEvents = False
        Target.ClearContents
        MsgBox "Zelle zur Datenübernahme ist leer bzw. enthält keine Zahl"
        Target.Select
        Application.EnableEvents = True
        Exit Sub
    End If
    Application.EnableEvents = False
    Target = CDbl(Left(Quelle, Len(Quelle) - Len(Target)) & Target)
    Application.EnableEvents = True
End If
errorhandler:
Application.EnableEvents = True
End Sub

Der Code gehört nicht in ein normales Modul. Rechtsklick auf das Tabellenregister und dann "Code anzeigen", dort den Code hineinkopieren.
Außerdem bin ich in dem Beispiel davon ausgegangen, daß in A1 eine Ausgangszahl steht (erster Zählerstand) und dann nacheinander in A2:A100 Zählerstände eingegeben werden. Das mußt Du ggf. anpassen.
Gruß
Martin Beck
Bild

Betrifft: in Hilfsspalte
von: Reinhard
Geschrieben am: 26.04.2005 11:20:35
Hallo Thomas,
=LINKS("1234567";7-LÄNGE(A1))&A1
Viele Grüße
Reinhard
Bild

Betrifft: Format Zelle "333666"000
von: serge
Geschrieben am: 26.04.2005 11:35:10
Hi Thomas und wie wärs mit:
Format Zelle "333666"000 damit kannst Du auch weiterrechnen!
Serge
Bild

Betrifft: AW: Format Zelle "333666"000
von: Thomas
Geschrieben am: 26.04.2005 11:40:47
Vielen Dank erstmal für so viele Möglichkeiten !!!
Aber so richtig klappen tut es immer noch nicht.
Am besten würde mir eine Lösung ohne Hilfszeile gefallen, also die VBA - Lösung. Da meckert er allerding immer das die Zelle leer oder keine Zahl sei.......
egal was ich mache
Bild

Betrifft: AW: Zur VBA-Lösung
von: Martin Beck
Geschrieben am: 26.04.2005 11:52:46
Hallo Thomas,
der Code funktioniert, ich habe ihn getestet. Voraussetzung ist, daß die Zählerstände untereinander eingetragen werden und das der Code von Dir korrekt angepasst wurde, was offensichtlich nicht der Fall ist. Einzige CHance: Lade die Datei hoch, damit ich den Code an Deinen TAbellenaufbau anpassen kann. Oder schreibe zumindest, wo die DAten in die Tabelle eingetragen werden sollen. In meinem Beispiel funktioniert es wie folgt:
A1: 1234567
A2: Eingabe: 899; in der Zelle steht 1234899
A3: Eingabe: 5215; in der Zelle steht 1235215
usw.
Gruß
Martin Beck
Bild

Betrifft: AW: Zur VBA-Lösung
von: Thomas
Geschrieben am: 26.04.2005 12:09:42
Hallo Martin,
vielen Dank erstmal für deine Geduld mit mir :-)
ich habe den Code garnicht angepasst. Ich probiere es genau so, wie du es beschrieben hast. In A1 steht 1234567, in A2 schreibe ich 888. Dann kommt das Meldungsfenster mit der Fehlermeldung....
Bild

Betrifft: ups AW: Zur VBA-Lösung
von: Martin Beck
Geschrieben am: 26.04.2005 12:46:01
Hallo Thomas,
mea culpa, ein "Not" stand an der falschen Stelle. So sollte es gehen:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errorhandler
If Not Application.Intersect(Target, Range("A2:A100")) Is Nothing Then
    Set Quelle = Target.Offset(-1, 0)
    If IsEmpty(Quelle) Or Not IsNumeric(Quelle) Then
        Application.EnableEvents = False
        Target.ClearContents
        MsgBox "Zelle zur Datenübernahme ist leer bzw. enthält keine Zahl"
        Target.Select
        Application.EnableEvents = True
        Exit Sub
    End If
    Application.EnableEvents = False
    Target = CDbl(Left(Quelle, Len(Quelle) - Len(Target)) & Target)
    Application.EnableEvents = True
End If
errorhandler:
Application.EnableEvents = True
End Sub

Gruß
Martin Beck
Bild

Betrifft: ups AW: Zur VBA-Lösung
von: Thomas
Geschrieben am: 26.04.2005 13:10:41
So funktioniert es....
Kann ich das auch auf mehrere Bereiche ausweiten? Wenn meine Daten z.b. in A1-A20 (1.Zähler), B1-B20 (2.Zähler) usw. stehen?
Bild

Betrifft: Erweiterung
von: Martin Beck
Geschrieben am: 26.04.2005 13:24:16
Hallo Thomas,
der Bereich, in dem die Prozedur ausgelöst wird, wenn in einer der Zellen manuell ein Wert geändert wird, wird durch
Range("A2:A100")
festgelegt.
Das kannst Du z.B. in
Range("A2:C20")
ändern. Dann funktioniert der Code in den Spalten A,B, C in den Zeilen 2 bis 20, wobei in A1, B1 und C1 jeweils ein "Startwert" vorhanden sein muß, ab dem gezählt wird.
Gruß
Martin Beck
Bild

Betrifft: AW: Format Zelle "333666"000
von: Reinhard
Geschrieben am: 26.04.2005 11:58:32
Hallo Thomsas,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Or Target = "" Then Exit Sub
Target = Left("1234567", 7 - Len(Target)) & Target
End Sub

Viele Grüße
Reinhard
Bild

Betrifft: AW: Format Zelle "333666"000
von: Thomas
Geschrieben am: 26.04.2005 12:12:52
Hallo Reinhard,
vielen Dank für Deinen Lösungsvorschlag. Allerdings tut sich bei mir nichts :-(
Wo muss ich was eingeben, damit es funktioniert?
Mfg, Thomas
Bild

Betrifft: AW: Format Zelle "333666"000
von: Reinhard
Geschrieben am: 26.04.2005 12:17:55
Hallo Thomas,
Code funktioniert.
Rechtsklick unten auf den Tabellenreiter, Code anzeigen, dorthin den Code kopieren.
dann in Spalte A was eingeben...
Die 1 in dem befehl
If Target.Column <> 1 Or Target = "" Then Exit Sub
ist die Spalte 1, 2= B , 3= C usw.
Viele Grüße
Bild

Betrifft: AW: Format Zelle "333666"000
von: Thomas
Geschrieben am: 26.04.2005 12:28:20
Ah ja, jetzt tut sich was..... allerdings ist die funktion nicht korrekt.
Ich habe den Zählerstand 1234567
Ich gebe ein "800"
Ich bekomme 1234800 = Richtig
Danach gebe ich ein 90
Sollte kommen: 1234890
Es kommt: 1234590
Bild

Betrifft: AW: Format Zelle "333666"000
von: Reinhard
Geschrieben am: 26.04.2005 12:39:10
Hallo Thomas,
axo, der Zähler soll hochzählen je tiefer man in Apalte A kommt? naja, vielleicht heisst er deshalb Zähler *g

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Or Target = "" Or Target.Address = "A1" Then Exit Sub
Target = Left(Target.Offset(-1, 0), 7 - Len(Target)) & Target
End Sub

Viele Grüße
Bild

Betrifft: Korrektur
von: Reinhard
Geschrieben am: 26.04.2005 12:41:22
Hallo Thomas,
so klappts:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Or Target = "" Or Target.Address(0,0) = "A1" Then Exit Sub
Target = Left(Target.Offset(-1, 0), 7 - Len(Target)) & Target
End Sub

Viele Grüße
Bild

Betrifft: AW: Korrektur
von: Thomas
Geschrieben am: 26.04.2005 12:56:58
Jau, so klappts ... Vielen Dank für Deine Geduld.... :-)
Thomas
Bild

Betrifft: AW: Format Zelle "333666"000
von: Thomas
Geschrieben am: 26.04.2005 12:45:49
Sieht gut aus, Formel enthält allerdings einen Fehler... Kommt sofort das "Debug"-Menue
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Excel-möglichkeit zahlen ergänzen?"