VBA – die besten Beiträge

Exel VBA Berechnung im Userform/Textfeld?

Hallo

Heute habe ich mal wieder Zeit mich mit Excel / VBA zu beschäftigen. Und komme leider nicht wirklich weiter

Kurze Erläuterung:

Ich kann per DropDawn Liste in einem Userform, Daten aus einer Tabelle integrieren. Beispiel: Nahrungsmittel1 auf 100g mit jeweils 10g Eiweiß, 18g Kohlenhydrate usw. werden in Userform/Textfelder eingetragen

Jetzt möchte ich, wenn ich im Userform die Menge z.B. auf 200g ändere, dass die Zahlenwerte für Kohlenhydrate, Eiweiß etc. automatisch aktualisiert werden.

Code zuzeit
Private Sub txtMenge1_Change() 
    If CDbl(txtMenge1) <> 100 Then
               txtKohlenhydrate1.Value = CDbl(txtKohlenhydrate1) * CDbl(txtMenge1) / 100
        End If
    End Sub
Problem ist jetzt folgendes

Er aktualisiert zwar z.B. im Textfeld Kohlenhydrate was sobald eine Eingabe erfolgt, rechnet aber nicht mit dem Ursprungswert von zb. 10g oder 18g. Sobald ich anfange die Zahl in Menge auf 200g zu ändern passiert jetzt folgendes. Wenn ich jetzt anfange die Zahl auf 2 ändere, stimmt das Ergebnis noch. Möchte ich aber jetzt eine 0 hinzufügen, geht er nicht mehr von 10g bzw 18g aus, sondern von denm Wert der bei einer 2 berechnet wurde. Somit stimmt das Ergebnis nicht mehr. Bei 2 kommen bei 10g ja erst mal 0.2g aus, füge jetzt jetzt aber ne 0 hinzu, sollen eigentlich 2 rauskommen. Es kommt dann aber 0,04 raus.

Da ich in VBA noch Neuling bin,möchte ich bitten mir das verständlich zu erklären. Danke im Vorraus

Microsoft Excel, VBA

Wo ist der Fehler im Code (VBA PowerPoint)?

Hallo meine lieben,

ich benötige wieder einmal eure Hilfe. Ich habe im Internet einen VBA Code gefunden der es ermöglich in einer PowerPoint Präsentation die aktuelle Uhrzeit mit Sekunden anzuzeigen. Da der Code leider nicht 64bit tauglich war hab ich ein wenig rumgetüftelt und siehe da, die Uhr selbst funktioniert schon mal. Aber leider bekomme ich ständig eine Fehlermeldung sobald die Folie gewechselt wird. "slides (unknown member): bad argument type. Excectet Collection index (string or integer). Ich verwende Windows 10 und Office 2016.

Würde mich rießig freuen wenn mir hier jemand weiterhelfen kann.

Vielen Dank im Voraus.

Leider ist der Code zu lange daher in 2 Teile.

Erster Teil:

Option Explicit

'API Declarations
Declare PtrSafe Function SetTimer Lib "user32" _
                            (ByVal hwnd As LongPtr, _
                             ByVal nIDEvent As LongPtr, _
                             ByVal uElapse As LongPtr, _
                             ByVal lpTimerFunc As LongPtr) As LongLong

Declare PtrSafe Function KillTimer Lib "user32" _
                            (ByVal hwnd As LongPtr, _
                             ByVal nIDEvent As LongPtr) As LongLong

' Public Variables
Public ClockTimerID As LongLong
Public prevSlideIdx As LongLong

Const TIMEFORMATSTRING As String = "dd.mm.yyyy - HH:mm:ss - KW :ww" 'show seconds with: "HH:mm:ss""

Dim pptEventObject As New Klasse1 'AppClassModule
'DIESE METHODE EINMALIG UNTER MAKROS STARTEN, DAMIT DAS EVENTHANDLING FUNKTIONIERT!
Sub InitializeApp()
    Set pptEventObject.App = Application
End Sub


Sub StartClockTimer()
    On Error GoTo ErrorOccurred
    
    'first make sure its not already running
    ClockTimerID = KillTimer(0, ClockTimerID)
    ClockTimerID = SetTimer(0, 0, 1000, AddressOf TimerProcClock)
    If ClockTimerID = 0 Then
        MsgBox "Unable to create the clock timer", vbCritical + vbOKOnly, "Error"
        Exit Sub
    End If

    Exit Sub
ErrorOccurred:
    MsgBox Err.Description
End Sub


Sub StopClockTimer()
    On Error GoTo ErrorOccurred
    
    If Not ClockTimerID = 0 Then
        ClockTimerID = KillTimer(0, ClockTimerID)
    End If

    Exit Sub
ErrorOccurred:
    MsgBox Err.Description
End Sub


' The defined routine gets called every nnnn milliseconds.
Sub TimerProcClock(ByVal hwnd As LongPtr, _
                    ByVal uMsg As LongPtr, _
                    ByVal idEvent As LongPtr, _
                    ByVal dwTime As LongPtr)
On Error GoTo ErrHandler
    
    If Not ActiveSlide Is Nothing Then
        ActiveSlide.Shapes("PointaixClockLabel").TextFrame.TextRange.Text = WeekdayName(Weekday((Now()))) + " " + Format(Now(), TIMEFORMATSTRING)
    End If

    Exit Sub
ErrHandler:
End Sub
Microsoft PowerPoint, programmieren, Makro, VBA

Meistgelesene Beiträge zum Thema VBA