Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

mehrer Fehler im Code

mehrer Fehler im Code
01.05.2014 19:40:00
Andy
Hallo,
habe mehrere kleine Fehler und Fragen zu den VBA-Codes, kann sich jemand das anschauen, habe dies in einer Datei beschrieben.
Währe super von euch.
Danke Andy
https://www.herber.de/bbs/user/90429.xlsm

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrer Fehler im Code
02.05.2014 02:51:21
fcs
Hallo Andy,
Folgende Probleme:
 
1.Wenn ein Teil entnommen wird kann an in einer Combobox eine Anlage auswählen in der das Ersatzteil verwendet werden soll.
Allerdings funktionieren die ersten 3 Einträge aus der Dropdownliste nicht.
 
Und es soll die Auswahl nicht wie bisher direkt anwählen sondern mit dem OK Button bestätigt werden

passe den Code des Userforms wie folgt an:

Private Sub Ok_Click()
With Me.ComboBox1
If .ListIndex = -1 Then
MsgBox "Bitte erst einen Eintrag in der Combobox wählen!"
ComboBox1.SetFocus
Else
Worksheets("Datenliste").Range("d3").Value = Me.ComboBox1.Value
Unload Me
End If
End With
End Sub
Private Sub UserForm_Initialize()
With ComboBox1
.ColumnCount = 1
.ColumnHeads = False
ComboBox1.RowSource = "Datenliste!b3:b18"
End With
Worksheets("Datenliste").Range("d3").ClearContents
End Sub

  
2. beim entnehmen schreibt mein Quellcode die Zeilennummer der ausgewählten Artikelzeile 2mal unter die Ersatzteilliste.
   Wieso?.
 
3. Beim zubuchen wird die Zeilennummer 1 mal darunter gesetzt

Wieso? Weil du entsprechende Anweisungen im Code stehen hast.
With Worksheets("Ersatzteilliste")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = ActiveCell.Row
End With

Taucht 2 bzw. 1 mal im Code auf. Diese Zeilen löschen!
4. Wenn ein Artikel zu gebucht wird muss ein Aktueller Stückpreis eingegeben werden.
    Dieser ist als String dimensioniert damit ich ihn mit isnumeric prüfen kann ob es eine zahl ist.
 
   Der eingegebene Preis wird beim Ersatzteil buchen in der Ersatzteilliste in spalte M eingetragen
   Aber leider nur als String somit schreibt Excel  ungültige Zahl,. Es müsste aber eine zahl werden 

Die Inputbox und auch deine Variablen liefern Text(String)-Werte. Also trägt Excel bei Datum und Zahlen auch Text in die Zellen, wenn du keine Konverson in Exceldatums- bzw. Dezimalwert im Makro vornimmst.
zeilenanzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.Cells(zeilenanzahl, 21).Value = CDate(datum2)
ActiveSheet.Cells(zeilenanzahl, 22).Value = CDbl(menge2)
ActiveSheet.Cells(zeilenanzahl, 23).Value = Name2
ActiveSheet.Cells(zeilenanzahl, 24).Value = wnummer
ActiveSheet.Cells(zeilenanzahl, 25).Value = CDbl(preisaktuell)
ActiveSheet.Cells(zeilenanzahl, 25).Style = "Currency"

Die Datumskonversion musst du auch im Entnahme-Makro machen. Mit korrekter Konversion funktionieren dann auch die Autofilter und Formeln.
5.Modul3
 
Wenn der Button nötige Artikel zur Nachbestellung suchen gedrückt wird.
Habe ich jede Zeile in  das Datenblatt kopieren lassen wenn in spalte F Nachbestellung steht.
 
Die Namensliste in einer MSGbox ausgegeben. Und danach wieder aus der Datenliste gelöscht.
 
Das geht doch bestimmt einfacher.

Warum setzt du nicht "einfach" den Autofilter für Spalte F (Flag Nachbestellung) auf "Nachbestellung" ?
Dann hast eine Liste mit allen Informationen.
Sub suchen()
Dim wks As Worksheet
Set wks = Worksheets("Ersatzteilliste")
With wks
If .FilterMode = True Then
.ShowAllData
End If
.AutoFilter.Range.AutoFilter Field:=6, Criteria1:="Nachbestellung"
End With
End Sub

Ansonsten kann man dein Makro wie folgt vereinfachen:
Sub suchen()
Dim suche As String
Dim z As Integer, Zeile As Long
With Worksheets("Ersatzteilliste")
If .FilterMode = True Then
.ShowAllData
End If
suche = "Nachbestellung"
z = 0
strg = ""
For Zeile = 5 To .Cells(.Rows.Count, 6).End(xlUp).Row
'wenn die Zelle den gesuchten Wert enthält:
If .Cells(Zeile, 6).Value = suche Then
z = z + 1
strg = strg & vbLf & .Cells(Zeile, 1).Value & "   -   " & .Cells(Zeile, 4).Value
End If
Next Zeile
End With
strg = "Es sind folgende " & z & " Artikel nachzubestellen" & vbLf _
& "Bezeichnung    -    Istmenge" & vbLf & strg
MsgBox strg, vbInformation, "Bestellliste:"
End Sub
Gruß
Franz

Anzeige
AW: mehrer Fehler im Code
02.05.2014 18:16:41
Andy
Hallo,
danke für deine Hilfe
Gruß Andy

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige