tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
NEIN
ANTWORTEN
29
ZUGRIFFE
1780
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    mr_ds mr_ds ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    16
    Ich wünschte ich hätte mich verschrieben

    Leider ist das tatsächlich so, dass 3,5 (ohne Nullen) in die Zelle geschrieben wird.
     

  2. #17
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Schau mal ob du damit etwas anfangen kannst:

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    Sub zahl_format()
    'Bildschirmanzeige ausschalten
    Application.ScreenUpdating = False
     
    'letzte Zeile in Spalte A suchen
    zeilen% = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
     
    'letzte Spalte in Zeile 1 suchen
    spalten% = Tabelle1.Cells(1, Columns.Count).End(xlToLeft).Column
     
    'alle Spalten durchlaufen
    For s% = 1 To spalten%
     
    'alle Zeilen durchlaufen
        For z% = 1 To zeilen%
    'wenn Komma in der Zelle vorkommt
            If InStr(1, Tabelle1.Cells(z%, s%), ",") Then
    'Teil links inklusive Komma
            links$ = Left(Tabelle1.Cells(z%, s%), InStr(1, Tabelle1.Cells(z%, s%), ","))
    'Teil rechts vom Komma
            rechts$ = Mid(Tabelle1.Cells(z%, s%), InStr(1, Tabelle1.Cells(z%, s%), ",") + 1, Len(Tabelle1.Cells(z%, s%)))
    'Wert formatieren und in Zelle eintragen
            Tabelle1.Cells(z%, s%) = links$ & rechts$ & String(3 - Len(rechts$), "0")
            End If
        Next z%
     
    Next s%
     
    'Bildschirmanzeige wieder einschalten
    Application.ScreenUpdating = True
    End Sub

    Da ich den genauen Ablauf nicht kenne wie du die Daten in Excel einliest, kann ich dir jetzt nicht sagen wo du das Makro am besten einbindest. Die Umwandlung klappt soweit ich es jetzt getestet habe so aber.
    mr_ds bedankt sich. 
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  3. #18
    mr_ds mr_ds ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    16
    Wow, das ist ein toller Ansatz. Leider tut sich nichts bei mir wenn ich das Makro ausführe.

    Mache ich das was falsch? Habe unter Ansicht das Makro angelegt und wollte es testweise auf einem bestimmten Reiter (NL - Holland) anwenden.

    (Meine Mappe hat 15 Reiter mit verschiedenen Ländern. Ganz vorne habe ich eine Tabelle gebastelt die aus diesen ganzen Reitern, meist per S-Verweis, die gewünschten Informationen zieht.)

    Die Daten aus SiteCatalyst werden in jeden Reiter im Bereich A1 bis W57 gezogen.

    Vielleicht helfen die Informationen ja weiter!?

    Finde ich nebenbei bemerkt super dass Leuten wie mir, die keine Ahnung von Makros haben, hier so toll geholfen wird!
     

  4. #19
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    VORSICHT: Dinge die per Makro geändert wurden lassen sich nicht mit "Bearbeiten Rückgängig" zurücksetzten!!

    Ich habe es in meinem Beispiel alles auf "Tabelle1" geschrieben, dort werden also die Änderungen gemacht.

    Um dir weiter zu helfen hätte ich jetzt erst 2 Fragen:
    1) wie "sensibel" sind die Daten den mit denen du da arbeitest?
    2) kannst du mir die Datei schicken und kannst du sie dann als 2000-er Version speichern?

    Ansonsten ändere alles was jetzt "Tabelle1" heißt in "ActiveSheet" und (sofern nicht eh schon geschehen) kopiere den Code in das Register "DieseArbeitsmappe", den er darf nicht innerhalb eines bestimmten Arbeitsblattes stehen.

    Dann kannst du diesem Makro eine Tastenkombination zuweisen und es immer wenn du in einer bestimmten Tabelle stehst darüber starten.

    Beim ermitteln der letzten Zeile/Spalte endet das Makro immer wenn es auf eine leere Zelle trifft! Es du mit dieser Abbruchbedingung klar kommst musst du testen.
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  5. #20
    mr_ds mr_ds ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    16
    Habe den Code auf "AvtiveSheet" geändert, da wo Tabelle1 stand. Leider ohne Veränderung. Es passiert nichts.
    Zu Deinen Fragen: es sind sensible Daten, aber ich habe eine Beispielsdatei erstellt und als 2000er Version gespeichert. Wie soll ich Dir diese zukommen lassen? Über das Forum kann ich ja keine Dateien verschicken.
     

  6. #21
    mr_ds mr_ds ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    16
    Ich habe die Datei nochmal auf- und zugemacht..... es hat funktioniert******!

    Tombe... du hast es drauf******!!

    Ich Danke dir 1000-fach für Deine tolle unterstützung****** Finde ich super dass sich Leute wie Du anderen zur Verfügung stellen die Hilfe brauchen!

    Nochmals vielen Dank..... ich empfehle Dich und diese Seite auf jeden Fall weiter!
     

  7. #22
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Freut mich wenn es geklappt hat.

    Ansonsten hätte ich dir meine eMail Adresse per PN geschickt, dann hätten wir es so gemacht.
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  8. #23
    mr_ds mr_ds ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    16
    Bevor ich das Thema nun schließe ist mir gerade aufgefallen dass es die Werte wunderbar ändert bis eine leere Spalte kommt.

    Kannst Du mir bitte noch ganz kurz einen Tipp geben wie ich es schaffe das ganze Sheet abzuändern und nicht nur Spalte B und C (A ist Text)?
    Spalte D ist leer und dann kommt wieder E mit Text F & G mit Zahlen, dann wieder leer usw.
    Datenbereich insgesamt A1 bis W57 .
     

  9. #24
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Dazu musst du die zwei Zeilen in denen die letzte Zeile bzw. die letzte Spalte ermittelt wird so ändern:

    Code vb:
    1
    2
    3
    4
    5
    
    'letzte Zeile in Spalte A suchen
    zeilen% = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
     
    'letzte Spalte in Zeile 1 suchen
    spalten% = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column

    Jetzt ist es egal ob es irgendwo dazwischen leere Zellen gibt.
    mr_ds bedankt sich. 
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  10. #25
    Drogist Drogist ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Beiträge
    229
    Moin mr_ds,

    schau mal in dein Postfach ...
     
    Best regards
    Drogist

  11. #26
    mr_ds mr_ds ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    16
    Schönen guten Morgen Tobe,

    Vielen Dank für die Antwort, funktioniert mal wieder super!

    Folgende Frage ist nun wirklich die letzte mit der ich Dich zu diesem Thema belästige:

    Gibt es die Möglichkeit das Makro über mehrere Reiter/Register laufen zu lassen damit ich nicht alle 15 Stück anklicken und das Makro ausführen muss?

    @Drogist: Danke für Deine PN! Habe drauf genatwortet.

    Beste Grüße aus Baden-Württemberg
     

  12. #27
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Sorry bin ein bisschen spät dran heute, dafür habe ich eine Lösung für dich.

    Neu ist hier nur das die Anzahl der vorhandenen Tabellen ermittelt werden und eine weitere For/Next-Schleife die dann eben nacheinander alle Tabellen durchläuft.

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    Sub zahl_format()
    'Bildschirmanzeige ausschalten
    Application.ScreenUpdating = False
     
    'zuerst die Anzahl der Tabellen ermitteln ** NEUE ZEILE **
    tabellen% = ActiveWorkbook.Sheets.Count
     
    'alle Tabellen durchlaufen ** NEUE FOR/NEXT-SCHLEIFE **
    For t% = 1 To tabellen%
        ActiveWorkbook.Sheets(t%).Activate
        'letzte Zeile in Spalte A suchen
        zeilen% = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
     
        'letzte Spalte in Zeile 1 suchen
        spalten% = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
     
        'alle Spalten durchlaufen
        For s% = 1 To spalten%
     
            'alle Zeilen durchlaufen
            For z% = 1 To zeilen%
            'wenn Komma in der Zelle vorkommt
                If InStr(1, ActiveSheet.Cells(z%, s%), ",") Then
                    'Teil links inklusive Komma
                    links$ = Left(ActiveSheet.Cells(z%, s%), InStr(1, ActiveSheet.Cells(z%, s%), ","))
                    'Teil rechts vom Komma
                    rechts$ = Mid(ActiveSheet.Cells(z%, s%), InStr(1, ActiveSheet.Cells(z%, s%), ",") + 1, Len(ActiveSheet.Cells(z%, s%)))
                    'Wert formatieren und in Zelle eintragen
                    ActiveSheet.Cells(z%, s%) = links$ & rechts$ & String(3 - Len(rechts$), "0")
                End If
            Next z%
     
        Next s%
     
    Next t%
    'Bildschirmanzeige wieder einschalten
    Application.ScreenUpdating = True
    End Sub

    Es grüßt ebenfalls aus BaWü

    Thomas
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  13. #28
    mr_ds mr_ds ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    16
    Vielen Dank schonmal, Thomas.

    Leider kommt eine Fehlermeldung, mit dem Verweis auf:

    ActiveSheet.Cells(Z%, s%) = Links$ & rechts$ & String(3 - Len(rechts$), "0")

    "Laufzeitfehler '5': Ungültiger Prozeduraufruf oder ungültiges Argument"

    Kann es sein dass es wegen dem ersten Tabellenblatt ist? Da hab ich insgesamt 81 Seiten mit Diagrammen, Tabellen und Bildern (Daten kommen aus dem zweiten Tabellenblatt 'Übersicht'. Die Daten für die Übersicht (Tabellenblatt 2) werden aus den weiteren 15 Länder-Tabellenblättern gezogen, die wiederrum aus SiteCatalyst kommen.

    Im Grund genommen könnten die ersten beiden Tabellenblätter ignoriert werden.

    Schöne Grüße
    Daniel
     

  14. #29
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Der Fehler wird wohl immer dann ausgelöst wenn eine Zahl mehr als 3 Stellen nach dem Komma hat, was ja eigentlich nicht sein dürfte.

    Für diesen Fall (oder wenn sonst ein Fehler auftritt) habe ich den Code nochmals geändert. Tritt ein Fehler auf, wird am Ende eine Meldung angezeigt und der Name der Tabelle sowie die Zeile und die Spalte ausgegeben.

    Die Schleife ist jetzt auch gleich so geändert das erst in Tabelle 3 begonnen wird.

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    
    Sub zahl_format()
    Dim blatt()
    Max% = 0
    fehler% = 0
     
    On Error GoTo format_fehler
    'Bildschirmanzeige ausschalten
    Application.ScreenUpdating = False
     
    'zuerst die Anzahl der Tabellen ermitteln ** NEUE ZEILE **
    tabellen% = ActiveWorkbook.Sheets.Count
     
    'alle Tabellen durchlaufen ** NEUE FOR/NEXT-SCHLEIFE **
    For t% = 3 To tabellen%
        ActiveWorkbook.Sheets(t%).Activate
        'letzte Zeile in Spalte A suchen
        zeilen% = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
     
        'letzte Spalte in Zeile 1 suchen
        spalten% = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
     
        'alle Spalten durchlaufen
        For s% = 1 To spalten%
     
            'alle Zeilen durchlaufen
            For z% = 1 To zeilen%
            'wenn Komma in der Zelle vorkommt
                If InStr(1, ActiveSheet.Cells(z%, s%), ",") Then
                    'Teil links inklusive Komma
                    links$ = Left(ActiveSheet.Cells(z%, s%), InStr(1, ActiveSheet.Cells(z%, s%), ","))
                    'Teil rechts vom Komma
                    rechts$ = Mid(ActiveSheet.Cells(z%, s%), InStr(1, ActiveSheet.Cells(z%, s%), ",") + 1, Len(ActiveSheet.Cells(z%, s%)))
                    'Wert formatieren und in Zelle eintragen
                    ActiveSheet.Cells(z%, s%) = links$ & rechts$ & String(3 - Len(rechts$), "0")
                End If
            Next z%
     
        Next s%
     
    Next t%
    'Bildschirmanzeige wieder einschalten
    Application.ScreenUpdating = True
     
    If fehler% > 0 Then
        fehlertext$ = "Es traten insgesamt " & fehler% & " Fehler auf." & Chr$(13) & Chr$(13)
        For a% = 0 To UBound(blatt)
            fehlertext$ = fehlertext$ & blatt(a%) & Chr$(13)
        Next a%
        MsgBox fehlertext$
    End If
     
    Exit Sub
    format_fehler:
    fehler% = fehler% + 1
    ReDim Preserve blatt(Max%)
    blatt(Max%) = ActiveSheet.Name & " (Zeile " & z% & " - Spalte " & s% & ")"
    Max% = Max% + 1
    Resume Next
    End Sub
    mr_ds bedankt sich. 
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  15. #30
    mr_ds mr_ds ist offline Mitglied
    Registriert seit
    Jan 2011
    Beiträge
    16
    Thomas, ich kann Dir gar nicht genug danken! Respekt, wirklich.

    Funktioniert tadellos!
     

Ähnliche Themen

  1. Excel 97 VB Makro hat Laufzeitfehler unter Excel 2007
    Von V&M im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 28.06.10, 10:14
  2. Antworten: 1
    Letzter Beitrag: 18.07.08, 13:46
  3. Excel 2007 + Makro + rauschreiben als Excel 1997 - 2003
    Von Herli im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 10.08.07, 11:09
  4. Antworten: 2
    Letzter Beitrag: 09.11.05, 11:05
  5. Antworten: 4
    Letzter Beitrag: 11.03.04, 14:04

Stichworte