1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Zellformat für Excel 2003 gesucht

Discussion in 'Office-Programme' started by thschmalz, Oct 5, 2006.

Thread Status:
Not open for further replies.
  1. thschmalz

    thschmalz Kbyte

    Hallo,

    ich möchte ein Feld formatieren, in das eine Nummer eingegeben werden soll. Das Format soll so aussehen:

    R-06-1000

    und wird mit Eingabe einer Zahl um diese vergrößert.

    R-06-1000 + 1 = R-06-1001

    Natürlich kann man die Zelle Benutzerdefiniert mit R-06-1000 formatieren, jedoch soll die 06 im Format jeweils die letzten beiden Zahlen des aktuellen Jahres sein. So wird dann nächstes Jahr aus

    R-06-1000 die Formatierung R-07-1000

    Wie kann ich so eine Formatierung verwirklichen?

    Ciao
    Tom
     
  2. Hascheff

    Hascheff Moderator

    So ganz ist mir dein Problem noch nicht klar.
    Also du gibst "1" ein und es erscheint"R-06-1001"
    Willst du jeden neuen Wert von Hand eingeben, oder willst du mit "Automatisch ausfüllen" eine Reihe bilden?
    Gehen die Werte über R-06-1999 hinaus?

    Ich vermute, dass es auf eine benutzerdefinierte Prozedur Worksheet_Change hinausläuft, dazu gibt es in anderem Zusammenhang in http://www.pcwelt.de/forum/office-programme-microsoft-office-openoffice-org-staroffice/220196-zelleninhalt-eine-fuellfarbe-zuweisen.html#post1164100
    ein Beispiel.
     
  3. thschmalz

    thschmalz Kbyte

    Hi,

    die Nummer ist in einer Tabelle für Rechnungen notwendig. Die Nummer geht über die R-06-1999 hinaus und zwar wäre der nächste Wert R-06-11000. Die Formatierung sollte sich für jedes neue Jahr dann automatisch einstellen, R-07-1000...R-08-1000 usw. Leider bekomme ich die letzten beiden Zahlen eines Jahres nicht in einer Formatierung unter.

    Ciao Tom
     
  4. Hascheff

    Hascheff Moderator

    Versuch mal folgendes:
    Rechtsklick auf Tabellennamen - Code
    Im VBA-Editor rechtes Fenster oben:
    Objekt Worksheet
    Prozedur Change
    und dann zwischen erster und letzter Zeile ergänzen.
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Target.Column = 1 Then
        If IsNumeric(Target.Value) Then
            Target.Value = "R-" & Format(Date, "yy") & "-1" & Format(Target.Value, "000")
            End If
        End If
    
    End Sub
    
    Mein Excel 2000 hat zwar manchmal einen Anzeigefehler gehabt, aber es funktioniert.
     
  5. thschmalz

    thschmalz Kbyte

    Hi,
    ich versuche mein Problem mal etwas genauer darzustellen:
    Habe eine Tabelle RECHNUNGEN angelegt. In dieser Tabelle wird in Feld O19 die Rechnungsnummer eingetragen. Das Feld ist mit dem benutzerdefinierten Format R-06-5000 formatiert. Mit einem Makro wird eine neue Rechnung bereitgestellt, in der alle Eingabefelder geleert wurden und die Rechnungsnummer wurde um 1 erhöht, also aus R-06-5001 wird dann R-06-5002 usw. In diesem Format sollen die zwei Zahlen nach dem R- immer die letzten beiden Zahlen des aktuellen Jahres sein, alles andere bleibt unverändert. Im nächsten Jahr gebe ich nun in das Feld O19 eine 1 bei der ersten Rechnung manuell ein und es sollte dann so aussehen: R-07-5001.

    Hoffe, das war so formuliert, dass man das Problem jetzt besser versteht. Leider kann ich mit Deinem Code nicht weiterkommen.

    Ciao Tom
     
  6. Hascheff

    Hascheff Moderator

    Aha.
    Dann brauchst du kein neues Makro schreiben, sondern "nur" ein bestehendes verändern.
    Dann stellt sich erst mal die Frage, ist das Makro von dir selbst erstellt worden? Oder anders formuliert: Hast du Ahnung, und hast du überhaupt Zugriff auf den Makro-Code. Ein Fremder könnte das Makro geschützt haben.

    Das Makro löscht also ein paar Zellen und verändert O19. Diese Zelle hat sicher Textformat. Das Makro muss also vom Text rechts 3 Stellen abtrennen, in eine Zahl umwandeln, 1 addieren und das Ergebnis an "R-06-1" anhängen. Nebenbei stellt sich die Frage, warum es nicht 4 Stellen nimmt, warum nach 1999 nicht 2000 kommt.
    Jedenfalls kann es kein Problem sein, in <R-06-1> die 3. und 4. Stelle (06) auszuwerten und wenn sie sich von <Format(Date, "yy")> unterscheidet, zwei Aktionen auszuführen:
    - Zählung beginnt bei 1001
    - <"R-06-1"> wird ersetzt durch <"R-" & Format(Date, "yy") & "-1">

    Also gib Bescheid, ob wir so vorgehen können.
     
  7. thschmalz

    thschmalz Kbyte

    Hi,

    erst einmal Danke für Deine Hilfe. Die Tabelle und Makros sind von mir selbst erstellt worden und an die nötigen Codes komme ich auch dran. Selbstverständlich kann nach 1999 auch 2000 kommen. Wir können es auch so machen, wie Du es vorgeschlagen hast. Da ich des Programmierens nicht mächtig bin, kann ich halt manche Dinge nicht verwirklichen und komme gelegentlich über mehrere Umwege erst zum Ziel. Wäre also Super, wenn Du mir weiterhin Zur Hand gehen würdest und mir evtl. eine Lösung zukommen lässt. Danke schon mal im voraus.

    Ciao Tom
     
  8. Hascheff

    Hascheff Moderator

    Ok. Dann poste doch mal aus deinem Makro die Zeile(n) betreffend
     
  9. thschmalz

    thschmalz Kbyte

    Hi Hascheff,

    erst einmal vielen Dank für Deine bisherige Unterstützung, mir bei meinem Problem zu helfen. Habe die ganze Nacht an meinem Tabellenblatt gesessen und tatsächlich eine Lösung gefunden. Sie ist wahrscheinlich nicht der optimalste Weg, aber es funktioniert prima. Aber ich will Dir das Makro nicht vorenthalten:

    Sub neue_Rechnung_eingeben()
    '
    ' neue_Rechnung_eingeben Makro
    ' Makro am 08.10.2006 von Thomas Schmalz aufgezeichnet
    '

    '
    ActiveSheet.Unprotect
    Range("P1").Select
    Selection.Copy
    ActiveWindow.SmallScroll Down:=-2
    Range("B7").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
    Range("B9").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("P1").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
    Application.CutCopyMode = False
    Range("O23").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("O21").Select
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=21
    Range("B38:B49").Select
    Selection.ClearContents
    Range("K38:M49").Select
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=15
    Range("B57:B67").Select
    ActiveWindow.SmallScroll Down:=6
    Selection.ClearContents
    Range("O57:O67").Select
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=-54
    Range("a1").Select
    Range("O23").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub

    In der Zelle P1 habe ich nun die Möglichkeit, die Rechnungsnummer auf einen bestimmten Wert zu setzen, bei Aktivierung des Makros wird dann wieder 1 hinzugezählt. So kann ich in jedem neuen Jahr wieder mit 1 anfangen, die Rechnungsnummer wird nicht doppelt vergeben, weil eben die letzten zwei Stellen der Jahreszahl verändert wurden.

    Ciao Tom
     
  10. Hascheff

    Hascheff Moderator

    Hi Tom,
    Ich seh schon, ist alles mit Recorder aufgenommen.
    Aus P1 kopierst du den Wert in B7. B9 enthält die entscheidende Formel, das kann ich jetzt nicht erkennen. Aus B9 wird der Inhalt in P1 kopiert. (Bearbeiten - Inhalte Einfügen - Wert <=> Selection.PasteSpecial Paste:=xlValues) der Rest ist für uns unwichtig.
    Jetzt hast du das Problem aus dem Makro-Code in die Formel in Zelle B9 verlagert. Der Vorteil: Dort spricht man Deutsch.
    Nun Könnte ich sagen, poste mal die Formel, aber wenn du nicht zufällig gerade wartest, geht es schneller, wenn ich gleich in Excel loslege.
    Ich schicke bloß schnell erst mal die Antwort los, falls du wartest.
     
  11. Hascheff

    Hascheff Moderator

    Hi Tom,
    jetzt hab ich's in 2 Varianten:
    1. für 11000 nach 1999:

    =WENN(WERT(TEIL(B9;3;2))=JAHR(JETZT())-2000;LINKS(B9;6)&TEXT(WERT(RECHTS(B9;3))+1;"000");"P-"&TEXT(JAHR(JETZT())-2000;"00")&"-1"&"000")

    2. für 2000 nach 1999:

    =WENN(WERT(TEIL(B9;3;2))=JAHR(JETZT())-2000;LINKS(B9;5)&TEXT(WERT(RECHTS(B9;4))+1;"0000");"P-"&TEXT(JAHR(JETZT())-2000;"00")&"-"&"0000")

    Im "DANN"-Zweig müsstest du deine ursprüngliche Formel wiederfinden.
    Ich bin davon ausgegangen, dass in B7

    P-06-1999

    steht.

    Na dann, alles Gute.
    Hartmut
     
  12. thschmalz

    thschmalz Kbyte

    Hallo Hartmut,

    vielen Dank für Deine schnelle Hilfe. Deine Formeln funktionieren alle beide sehr gut und ich habe mich für die zweite Lösung entschieden.
    Nur eine Frage am Rand, wo kann man sich einige Excellösungen ansehen oder sogar herunterladen, ohne dafür auch noch jede Menge Geld bezahlen zu müssen. Habe mir meine Kentnisse mit Excel und Access selbst angeeignet und suche immer wieder nach Tipps und Tricks, die ich weiterverarbeiten kann um noch mehr über diese Programme zu lernen.

    Wünsche Dir noch eine gute Zeit

    Tom
     
  13. Hascheff

    Hascheff Moderator

    Hallo Tom,
    kompakte Literatur kann ich dir nicht nennen. Ich bin halt schon lange dabei, Excel war damals noch nicht bei Microsoft (merkt man dem Programm auch heute noch an).
    Als Mathe- und Informatik-Lehrer habe ich auch oft Gelegenheit, in Excel zu arbeiten, und Spaß muss es auch machen. Geholfen haben mir auch oft PC-Welt-Tipps.
    Mit Access arbeite ich auch oft. Access habe ich erst im 2. Anlauf in den Griff bekommen. Als ich z.B. von VBA noch wenig Ahnung hatte, habe ich oft erst Makros erstellt und die dann in VBA umwandeln lassen.
    Für beide Programme ist es nützlich, wenn man Programmieren gelernt hat.
    Aber ich lerne noch ständig dazu, z.B. in [thread=220196]dem Thread.[/thread]
    Wir werden uns also bestimmt noch häufiger hier treffen.
     
Thread Status:
Not open for further replies.

Share This Page