Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

CDbl Faktor <1 wird nicht übernommen

Betrifft: CDbl Faktor <1 wird nicht übernommen von: Thomas Herzlieb
Geschrieben am: 08.09.2020 10:30:53

Guten Tag,


ich habe ein kleines Problem was wahrscheinlich der VBA Profi und 2 sec löst.


Ich habe ein User Form das Eingabe von 2 Artikelnnummern und einem Umrechnungsfaktor vorgibt.

Mein Problem bei Zahlen <1 beim Umrechnungsfaktor will das Ganze nicht laufen. Ich vermute an einer Zahlenvariablen (CDbl) icht würde beim Rechnen auch Zahlen <1 benötigen bspw. 0,5.


Bitte um Lösungen, Danke.


Hier noch der CODE:


Option Explicit




Private Sub CommandButton1_Click()

Dim loLetzte As Long, ws As Worksheet

Application.ScreenUpdating = False

If Me.TextBox1 <> "" And Me.TextBox2 <> "" And Me.TextBox3 <> "" Then
    For Each ws In ActiveWorkbook.Worksheets
        If WorksheetFunction.CountIf(ws.Columns(3), CDbl(Me.TextBox1)) = 0 Then
        Else
            With ws
                loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
                .Range("C1:F" & loLetzte).AutoFilter Field:=1, Criteria1:=Me.TextBox1
                .AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count - 1).Columns(1)  _
 _
 _
 _
 _
 _
_
                .SpecialCells(xlCellTypeVisible).Value = CDbl(Me.TextBox2)
                .AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count - 1).Columns(4)  _
 _
 _
 _
 _
 _
_
                .SpecialCells(xlCellTypeVisible).Value = CDbl(Me.TextBox3)
                .AutoFilterMode = False
            End With
        End If
    Next ws
    Unload Me
Else
    MsgBox "Es sind nicht alle Eingabefleder befüllt."
    Me.TextBox1.SetFocus
End If

End Sub





Private Sub CommandButton2_Click()

Unload Me

End Sub





Private Sub UserForm_Click()


End Sub





Schon mal Danke vorab

Betrifft: AW: CDbl Faktor <1 wird nicht übernommen
von: Werner
Geschrieben am: 08.09.2020 10:54:19

Hallo,

und wir sollen jetzt wissen, wo genau im Code es jetzt "klemmt"?
Und welche Fehlermeldung wird dir denn ausgegeben.

Ich denke mal, dass das ohne eine(deine) Mappe mit ein paar Datensätzen eher nichts wird.

Gruß Werner

Betrifft: AW: CDbl Faktor <1 wird nicht übernommen
von: Thomas Herzlieb
Geschrieben am: 08.09.2020 12:36:32

Fehler ist "Laufzeitfehler 1004"

Private Sub CommandButton1_Click()

Dim loLetzte As Long, ws As Worksheet

Application.ScreenUpdating = False

If Me.TextBox1 <> "" And Me.TextBox2 <> "" And Me.TextBox3 <> "" Then
    For Each ws In ActiveWorkbook.Worksheets
        If WorksheetFunction.CountIf(ws.Columns(3), CDbl(Me.TextBox1)) = 0 Then
        Else
            With ws
                loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
                .Range("C1:F" & loLetzte).AutoFilter Field:=1, Criteria1:=Me.TextBox1
                .AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count - 1).Columns(1)  _
_
                .SpecialCells(xlCellTypeVisible).Value = CDbl(Me.TextBox2)
                .AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count - 1).Columns( _
4) _
                .SpecialCells(xlCellTypeVisible).Value = CDbl(Me.TextBox3)
                .AutoFilterMode = False
            End With
        End If
    Next ws
    Unload Me
Else
    MsgBox "Es sind nicht alle Eingabefleder befüllt."
    Me.TextBox1.SetFocus
End If

End Sub



Das fett gedruckte wird beim debuggen gelb markiert.

Schöne Grüße
Thomas

Betrifft: AW: CDbl Faktor <1 wird nicht übernommen
von: Werner
Geschrieben am: 08.09.2020 12:57:55

Hallo,

und deine Datei ist jetzt wo?

Da ich keine Ahnung habe, wo du welche Werte hast jetzt überall mit CDbl
Private Sub CommandButton1_Click()
Dim loLetzte As Long, ws As Worksheet

Application.ScreenUpdating = False

If Me.TextBox1 <> "" And Me.TextBox2 <> "" And Me.TextBox3 <> "" Then
    For Each ws In ActiveWorkbook.Worksheets
            With ws
                If WorksheetFunction.CountIf(.Columns(3), CDbl(Me.TextBox1)) > 0 Then
                    loLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
                    .Range("C1:F" & loLetzte).AutoFilter Field:=1, Criteria1:=CDbl(Me.TextBox1)
                    With .AutoFilter.Range
                        .Offset(1).Resize(.Rows.Count - 1).Columns(1) = CDbl(Me.TextBox2)
                        .Offset(1).Resize(.Rows.Count - 1).Columns(4) = CDbl(Me.TextBox3)
                    End With
                    .AutoFilterMode = False
                End If
            End With
    Next ws
    Unload Me
Else
    MsgBox "Es sind nicht alle Eingabefleder befüllt."
    Me.TextBox1.SetFocus
End If

End Sub
Gruß Werner

Betrifft: AW: CDbl Faktor <1 wird nicht übernommen
von: Thomas Herzlieb
Geschrieben am: 08.09.2020 14:26:29

Guten Tag noch mal,

hier noch die Datei
https://www.herber.de/bbs/user/140127.xlsm

Es geht wie gesagt darum verschiedene Artikel in einer Kalkulation zu ersetzen und der Faktor rechnet verschiedene Einheiten um, damit nachher alles als Basis KG hat.

Es funktioniert auch prima mit allen Zahlen größer 1

danke noch mal bis hierhin

Betrifft: Beispielmappe ohne Daten, sehr sinnvoll. oT
von: Werner
Geschrieben am: 08.09.2020 14:45:26



Betrifft: AW: CDbl Faktor <1 wird nicht übernommen
von: Daniel
Geschrieben am: 08.09.2020 11:04:05

Hi

Bei einem Textbox1.Value fehlt noch das CDBl.
Ich vermute mal, dass es daran hakt.

Du könntest auch auf das CdBl verzichten, müsstest dann aber das Komma durch den Punkt ersetzen.

Bei den SpecialCells fehlt noch der Ausgangszellbereich davor.
Momentan bezieht du das auf das Worksheet WS.

Gruß Daniel

Beiträge aus dem Excel-Forum zum Thema "CDbl Faktor <1 wird nicht übernommen"