Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Macro: Format löschen / ändern von-bis?
#11
Moin Ralf,

vielen Dank für die Erklärung...  Das ist wirklich vollkommen verquer :16:  Ich glaube mal, VBS wird nie so richtig mein Freund :21:
DLzG...
Micha
Antworten Top
#12
Ist halt nur auf den ersten Blick so!
Man muss nur die Standardbelegung der noch nicht gefüllten Variablen-Typen kennen (oder das Lokalfenster im Editor einblenden).
Würdest Du so etwas auch als verquer titulieren?
Code:
Dim i As Long
i = 5 * 3
If Not i = 0 Then …
'hier ginge natürlich auch If i > 0 Then

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#13
... nö, das ist nicht verquer, das ist logisch ;)

Aber was anderes; kaum bin ich ein paar Tage weg, meint Excel resp. Mickersoft, es dürfe hier selbstständig was ändern (der Rechner war wohlgemerkt nicht an während meiner Abwesenheit) :@ 

Ich wollte vorhin mal das Script antesten. Also Template geöffnet und rein gebastelt... Test... Schei**** :@ AD fasst das Template zwar an, läuft dann aber auf eine Fehlermeldung, die es vorher noch nie so gegeben hat. Also alles wieder zurück (resp. vorher gesichertes Template wieder zurück kopiert) und neuer Versuch... Gleiche in Grün...

Fehlermeldung siehe Anlage...

Eine solche Temp- Datei ist an dem angegebenen Ort nicht zu finden, an den Rechten hat sich auch nichts geändert und Excel kann manuell auch problemlos da rein schreiben. Dennoch hakt das irgendwo...

Is mir gerade ein Rätsel ...


Angehängte Dateien Thumbnail(s)
   
DLzG...
Micha
Antworten Top
#14
:@ :@ :@  ... wenn mir Bill Gates mal im dunkeln über'n Weg läuft ... :@ :@ :@ 
Das komische tmp- Problem ist gelöst. WIN10 hatte mal wieder klammheimlich ein Update eingespielt. Nach "Rückabwicklung" und manuellem Einspielen des Updates ist der Fehler plötzlich weg...


Back to topic...

Ich habe den Code noch ein bisschen umgefrickelt; der sieht jetzt so aus:

Code:
Sub Formatkorrektur()
    Dim Bereich As Range
    Set Bereich = Range("A:A").Find("Quantity").Offset(1)
    If Not Bereich Is Nothing Then
        Set Bereich = Bereich.Resize(Bereich.End(xlDown).Row - Bereich.Row + 1, 13)
        Bereich.Columns("A").NumberFormat = "#,##0"
        Bereich.Columns("B:K").NumberFormat = "@"
        Bereich.Columns("L").NumberFormat = "_-* #,##0.0000 [$€-407]_-;-* #,##0.0000 [$€-407]_-;_-* ""-""???? [$€-407]_-;_-@_-"
       Bereich.Columns("M").NumberFormat = "_-* #,##0.000 [$€-407]_-;-* #,##0.000 [$€-407]_-;_-* ""-""??? [$€-407]_-;_-@_-"
        With Bereich.Columns("A:M")
            With .Font
                .Name = "Arial"
                .FontStyle = "Normal"
                .Size = 8
                .Strikethrough = False
                .Superscript = False
                .Subscript = False
                .OutlineFont = False
                .Shadow = False
                .Underline = xlUnderlineStyleNone
                .ColorIndex = 0
                .TintAndShade = 0
                .ThemeFont = xlThemeFontNone
            End With
        End With
    End If
End Sub
Funktioniert so weit wie gewollt, mit einer Einschränkung:
AD exportiert die Daten in Spalte "L" leider als Text und nicht als Zahl. Somit zieht auch die Formatierung als Währung über das Script nicht. Ebenfalls sind die "Text- Zahlen" zentriert dargestellt, obwohl diese Spalten als rechtsbündig deklariert sind... (humbug...)
Erstaunlicher Weise (für mich zumindest) scheint Excel aber damit rechnen zu können, denn die berechneten Daten in Spalte "M" ($A * $L) sind korrekt Zahlen und lassen sich somit auch als Währung deklarieren.

Frage also:
Wie kann ich das Script so erweitern, das zum einen die Spalte "L" von Text- auf Zahl umgeswitcht wird und dann zudem die Spalte rechtsbündig wird?!?
DLzG...
Micha
Antworten Top
#15
Hallo Micha,

vielleicht hilft etwas in der Art

Code:
Sub test()
With Range("L1:L3")
arrL = .Value
.ClearContents
.NumberFormat = "_-* #,##0.0000 [$€-407]_-;-* #,##0.0000 [$€-407]_-;_-* ""-""???? [$€-407]_-;_-@_-"
.Value = arrL
End With
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#16
Moin André,

mal sehen, ob ich das verstehe...

Du definierst den Bereich, schreibst den Inhalt in die Variable arrL (was heißt dsa genau? Ist das ein beliebiger Name oder ein Systemteil?), setzt das Nummernformat und schreibst den Kram zurück?

Ich werde das mal antesten und berichten ...
DLzG...
Micha
Antworten Top
#17
... nööööö, klappt so nicht, zumindest nicht so, wie ich es eingebunden habe. Oder habe ich das falsch gemacht? Es ändert sich im Grunde nichts. Die Spalte ist immer noch Text und die Formatierung als Währung wirkungslos...

Hier noch mal das Script mit dem "Trick" von André:

Code:
Sub Formatkorrektur()
    Dim Bereich As Range
    Set Bereich = Range("A:A").Find("Quantity").Offset(1)
    If Not Bereich Is Nothing Then
        Set Bereich = Bereich.Resize(Bereich.End(xlDown).Row - Bereich.Row + 1, 13)
        Bereich.Columns("A").NumberFormat = "#,##0"
        Bereich.Columns("B:K").NumberFormat = "@"
        With Bereich.Columns("L")
            arrL = .Value
            .ClearContents
            .NumberFormat = "_-* #,##0.0000 [$€-407]_-;-* #,##0.0000 [$€-407]_-;_-* ""-""???? [$€-407]_-;_-@_-"
            .Value = arrL
            .NumberFormat = "_-* #,##0.0000 [$€-407]_-;-* #,##0.0000 [$€-407]_-;_-* ""-""???? [$€-407]_-;_-@_-"
        End With
        Bereich.Columns("M").NumberFormat = "_-* #,##0.000 [$€-407]_-;-* #,##0.000 [$€-407]_-;_-* ""-""??? [$€-407]_-;_-@_-"
        With Bereich.Columns("A:M")
            With .Font
                .Name = "Arial"
                .FontStyle = "Normal"
                .Size = 8
                .Strikethrough = False
                .Superscript = False
                .Subscript = False
                .OutlineFont = False
                .Shadow = False
                .Underline = xlUnderlineStyleNone
                .ColorIndex = 0
                .TintAndShade = 0
                .ThemeFont = xlThemeFontNone
            End With
        End With
    End If
End Sub

EDIT sagt gerade:
Kann es ggf. sein, das in dem temporär gesicherten Daten das Apostroph weiterhin vorhanden ist (arrL = .Value) und dann ebenso wieder zurück gegeben wird (.Value = arrL) ?!?
Wenn dem so ist, müsste man irgendwie die Apostrophe in den Daten killen oder, was vielleicht auch geht, eine Dummy- Berechnung damit durchführen like "ZelleX = 10 * ZelleX /10" oder vielleicht reicht auch einfach "ZelleX = 1 * ZelleX"
DLzG...
Micha
Antworten Top
#18
Lasse doch einfach mal Daten, aus Tabelle (aka Power Query) drüberlaufen.
Die Umwandlung dürfte automatisch erfolgen.
Alternative: Daten, Text in Spalten nacheinander auf L und M, jeweils sofort fertigstellen.

Ich vermisse (D)eine Beispieldatei.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#19
Hallo Ralf,

schau mal ganz am Anfang. Dort findest Du die Vorlage als Beispiel...

Das Weitere habe ich nicht verstanden, was Du meinst...
PowerQuery "drüber laufen lassen" ist ein manueller Akt, der nicht machbar ist. Das ist ja Sinn der Aktion, das hier das "Geradeziehen" automatisch läuft und der Bestellfutzi keinesfalls noch an der Tabelle rumfrickeln soll.


Zitat:Alternative: Daten, Text in Spalten nacheinander auf L und M, jeweils sofort fertigstellen.

... Du sprichst in Rätseln Angel
DLzG...
Micha
Antworten Top
#20
Hallo,

probier mal diese Variante:
Code:
Sub Formatkorrektur()
    Dim Bereich As Range
    
    Set Bereich = Range("A:A").Find("Quantity").Offset(1)
    If Not Bereich Is Nothing Then
        Set Bereich = Bereich.Resize(Bereich.End(xlDown).Row - Bereich.Row + 1, 13)
        Bereich.Columns("A").NumberFormat = "#,##0"
        Bereich.Columns("B:K").NumberFormat = "@"
        Dim temp As Variant
        Dim i As Long
        temp = Bereich.Columns("L")
        For i = 1 To UBound(temp)
            temp(i, 1) = CDbl(temp(i, 1))
        Next
        Bereich.Columns("L") = temp
        Bereich.Columns("L").NumberFormat = "_-* #,##0.0000 [$€-407]_-;-* #,##0.0000 [$€-407]_-;_-* ""-""???? [$€-407]_-;_-@_-"
        Bereich.Columns("M").NumberFormat = "_-* #,##0.000 [$€-407]_-;-* #,##0.000 [$€-407]_-;_-* ""-""??? [$€-407]_-;_-@_-"
        With Bereich.Columns("A:M")
            With .Font
                .Name = "Arial"
                .FontStyle = "Normal"
                .Size = 8
                .Strikethrough = False
                .Superscript = False
                .Subscript = False
                .OutlineFont = False
                .Shadow = False
                .Underline = xlUnderlineStyleNone
                .ColorIndex = 0
                .TintAndShade = 0
                .ThemeFont = xlThemeFontNone
            End With
        End With
    End If
End Sub
Gruß
Michael
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste