Thema: Excel Makro
Einzelnen Beitrag anzeigen
Alt 24.11.2009, 16:56   #7 (permalink)
[EID]-Mr.GiZMO
semi-diabolisch
 
Benutzerbild von [EID]-Mr.GiZMO
 

Registriert seit: 12.09.2005
Beiträge: 2.922

[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein[EID]-Mr.GiZMO kann auf vieles stolz sein

Standard AW: Excel Makro

Habe mal was universelles cecodet:

Makro rechnet alles um, was du definierst. Groß- und Kleinschreibung der Einheit ist egal, Dezimaltrennzeichen Punkt wird als Komma angesehen (1.5 = 1,5 ABER ist dann auch 1.000 = 1,0).

Du musst nur die Startzelle und deine Einheiten definieren.

Der Code:

Code:
' Zeitaufwandskonverter von [EID]-Mr.GiZMO :)


' Beginn Konfiguration

    Const Startzeile As Integer = 1     ' Hier definieren, wo die erste Zelle mit Zeiteintrag steht
    Const Startspalte As Integer = 1
    
    Type EinheitUndWertInMinuten
        Einheit As String
        Wert As Integer
    End Type
    Global Zeiteinheiten() As EinheitUndWertInMinuten
    

Sub Converter()
        
    ReDim Zeiteinheiten(0 To 2)         ' Hier Zahl erhöhen, wenn unten weitere Einheit hinzukommt
    
    Zeiteinheiten(0).Einheit = "min"    ' Immer Wort ('min' findet "min", "minute", minuten" etc. in Groß- und Kleinschreibung
    Zeiteinheiten(0).Wert = 1           ' Und zugehöriger Wert
    
    Zeiteinheiten(1).Einheit = "st"
    Zeiteinheiten(1).Wert = 60
    
    Zeiteinheiten(2).Einheit = "tag"
    Zeiteinheiten(2).Wert = 1440
    
' Ende Konfiguration
    
    


actualLine = Startzeile
actualRow = Startspalte
weiter = True

While weiter = True
    Zelleninhalt = Cells(actualLine, actualRow).Value
    For i = 0 To UBound(Zeiteinheiten)
        If LCase(Zelleninhalt) Like "*" & Zeiteinheiten(i).Einheit & "*" Then
            ZellenWert = Replace(Left(Zelleninhalt, InStr(LCase(Zelleninhalt), Zeiteinheiten(i).Einheit) - 1), ".", ",")
            Cells(actualLine, actualRow + 1).Value = ZellenWert * Zeiteinheiten(i).Wert
        End If
    Next
    actualLine = actualLine + 1
    If Cells(actualLine, actualRow).Value = "" Then weiter = False
Wend
    
End Sub
Im Anhang gleich die .bas Datei zum direkten Import in VBA.
Dann noch nen Button oder Tastenkombi auf Converter.Timeconverter lgen et voilà!

Gruß
:gizmo:
Angehängte Dateien
Dateityp: zip Converter.zip (808 Bytes, 2x aufgerufen)
War mein Post nützlich für dich? Ein Danke oder eine Bewertung sind immer schön.
Teilnehmer der Initiative "User verbessern Qualität im Forum" | Meine Systeme

Darf ich mal bitte vorbei?! Das geht nach Kompetenz... Danke! | | | Einmal dachte ich, ich hätte Unrecht. Hab mich aber getäuscht!
"Es ist gelogen, dass Videogames Kids beeinflussen. Hätte Pacman das getan, würden wir heute durch dunkle Räume irren, Pillen fressen und elektronische Musik hören."

[EID]-Mr.GiZMO ist offline   Mit Zitat antworten
Für diesen Beitrag bedankt sich:
io.sys (17.12.2009)