Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1804to1808
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

Teil löschen, wenn Nullbestand + Suche

Teil löschen, wenn Nullbestand + Suche
20.01.2021 23:06:34
1nFected_f0x
Hallo zusammen,
ich möchte in der vorhandenen Tabelle Teile ein und austragen.
Das eintragen funktioniert wie gewünscht. das Abziehen der ausgelagerten Teile funktioniert ebenfalls.
Jedoch sollen Nullbestandszeilen gelöscht werden.
Außerdem möchte ich eine Teilenummer in die Suchmaske eingeben und in einem Textfeld soll die Anzahl und die Farbe der gefundenen Teile angezeigt werden.
Bsp. Ihr gesuchtes Teil ist "x" mal in "Grün" und "x" mal in "Rot" erhältlich
Danke für eure Hilfe
https://www.herber.de/bbs/user/143180.xlsm

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teil löschen, wenn Nullbestand + Suche
21.01.2021 01:17:44
ralf_b

Sub teilesuchen()
With Sheets("Inventarübersicht")
Dim arrFarben, rgDaten As Range
Dim hilfsspalte As Range, cnt As Double, x As Long, str As String
Dim TeileNR
TeileNR = Sheets("Bestandsverwaltung").Range("D11").Value
Set hilfsspalte = .Cells(1, .Cells(1, Columns.Count).End(xlToLeft).Column + 2)
Set rgDaten = .Range("A1:D9") 'datenbereich definieren
'datenbereich filtern nach teileNr
rgDaten.Cells(1).AutoFilter Field:=2, Criteria1:="=" & TeileNR, Operator:=xlAnd
.UsedRange.Columns(4).SpecialCells(xlCellTypeVisible).Copy hilfsspalte  'liste mit den  _
farben kopieren
hilfsspalte.CurrentRegion.RemoveDuplicates Columns:=Array(1), Header:=xlYes 'liste  _
dublikate entfernen
With WorksheetFunction  'liste in Array schreiben
arrFarben = .Transpose(hilfsspalte.CurrentRegion.Resize(hilfsspalte.CurrentRegion.Rows. _
Count - 1).Offset(1))
End With
For x = LBound(arrFarben) To UBound(arrFarben) 'schleife über die farbliste und  _
Summenbildung
cnt = WorksheetFunction.SumIfs(rgDaten.Columns(3), rgDaten.Columns(2), TeileNR, rgDaten. _
Columns(4), arrFarben(x))
str = str & IIf(str = "", "", vbCr) & cnt & " mal " & arrFarben(x) 'summenzeile in  _
Stringvariable schreiben
Next x
MsgBox str 'Ergebnisausgabe
.ShowAllData  'filter zurücksetzen
hilfsspalte.EntireColumn.Delete  'hilfsspalte löschen
End With
End Sub

Anzeige
AW: Teil löschen, wenn Nullbestand + Suche
21.01.2021 01:25:21
1nFected_f0x
hallo ralf_b
danke erstmal für die schnelle Hilfe.
wenn das gesuchte Teil vorhanden ist, funktioniert dein Code. Aber wenn ein Teil gar nicht in der Liste steht, kommt ein Laufzeitfehler.
Gruß
AW: Teil löschen, wenn Nullbestand + Suche
21.01.2021 02:12:20
ralf_b
naja dann weist du ja was du zu tun hast, oder? Der Code ist gut beschrieben. Die Abfrage ob die TeileNr in der Liste ist oder ob nach dem Filtern noch sichtbare Zellen da sind ,bekommst du sicher selbst hin.
gruß
rb
AW: Teil löschen, wenn Nullbestand + Suche
21.01.2021 04:50:12
1nFected_f0x
nein leider weiß ich nicht was zu tun ist.
Ich versteh nicht einmal deinen Code :(
AW: Teil löschen, wenn Nullbestand + Suche
21.01.2021 09:23:29
Werner
Hallo,
vor dem Filtern einfach prüfen, ob die Teilenummer im entsprechenden Bereich vorhanden ist oder nicht.
Sub teilesuchen()
Dim arrFarben, rgDaten As Range
Dim hilfsspalte As Range, cnt As Double, x As Long, str As String
Dim TeileNR
With Sheets("Inventarübersicht")
TeileNR = Sheets("Bestandsverwaltung").Range("D11").Value
Set hilfsspalte = .Cells(1, .Cells(1, Columns.Count).End(xlToLeft).Column + 2)
Set rgDaten = .Range("A1:D9")
If WorksheetFunction.CountIf(rgDaten, TeileNR) > 0 Then
rgDaten.Cells(1).AutoFilter Field:=2, Criteria1:="=" & TeileNR, Operator:=xlAnd
.UsedRange.Columns(4).SpecialCells(xlCellTypeVisible).Copy hilfsspalte
hilfsspalte.CurrentRegion.RemoveDuplicates Columns:=Array(1), Header:=xlYes
With WorksheetFunction
arrFarben = .Transpose(hilfsspalte.CurrentRegion.Resize(hilfsspalte _
.CurrentRegion.Rows.Count - 1).Offset(1))
End With
For x = LBound(arrFarben) To UBound(arrFarben)
cnt = WorksheetFunction.SumIfs(rgDaten.Columns(3), rgDaten.Columns(2), _
TeileNR, rgDaten.Columns(4), arrFarben(x))
str = str & IIf(str = "", "", vbCr) & cnt & " mal " & arrFarben(x)
Next x
MsgBox str
.ShowAllData
hilfsspalte.EntireColumn.Delete
Else
MsgBox "Die Teilenummer " & TeileNR & " ist nicht vorhanden."
End If
End With
End Sub
Gruß Werner
Anzeige
AW: Teil löschen, wenn Nullbestand + Suche
23.01.2021 16:52:51
1nFected_f0x
Hallo Werner,
riesen Dank für deine Hilfe.
AW: Teil löschen, wenn Nullbestand + Suche
23.01.2021 17:55:54
1nFected_f0x
Kann mir jemand sagen warum mir da s.Range jedesmal als unzureichend deklariert angemeckert wird?
Ich möchte meine Tabelle in Spalte A, ab Zeile 2 bis zur letzten gefüllten Zeile durchnummerieren.
Sub Nummerierung()
Dim Spalte As Integer
Dim StartWert As Integer
Dim Startzeile As Integer
Dim LetzteZeile As Long
Dim I As Integer
Spalte = 1
StartWert = 1
Startzeile = 2
For I = Startzeile To .Range("B" & Rows.Count).End(xlUp).Row
Cells(I, Spalte).Value = StartWert
StartWert = StartWert + 1
Next I
End Sub

Anzeige
AW: Teil löschen, wenn Nullbestand + Suche
23.01.2021 18:07:01
ralf_b
würde ich ja machen, aber du bist mir ein bissel zu undankbar.
AW: Teil löschen, wenn Nullbestand + Suche
24.01.2021 09:04:32
Thomas
Mehr als mich zu bedanken kann ich leider nicht machen.
Und da dies mein erster Kontakt mit VBA ist sind mir eure sicherlich gut geschriebenen Codes nicht immer gleich erklärbar.
Sorry dafür aber jeder fängt Mal bei 0 an. Leider vergessen das viele...
AW: Teil löschen, wenn Nullbestand + Suche
24.01.2021 12:53:34
ralf_b
tchja, und das ist auch das Problem. Anstatt sich dem Thema per Grundlagenaneignung zu nähern, läßt man sich Codes schreiben und kommt dann mit dem Ergebnis nicht klar. Das zeugt von reichlich Selbstüberschätzung. Du verkabelst doch auch einen halbfertigen Schaltschrank nicht fertig wenn du keine Ahnung davon hast.
Was würdest du denn tun wenn es diese Foren nicht gäbe? Ich rate mal. Du würdest Jemanden fragen der sich auskennt. Das fällt offensichtlich weg. Du würdest einen Auftrag an Jemanden geben. Das fällt wohl auch weg. Oder du beschäftigst dich mit der Programmiersprache und bildest dich weiter bist du zu dem Ergebnis kommst was du wolltest. Einhergehend mit Erlangung von Wissen was dich befähigt auch andere Problemstellungen zu lösen. Das fällt wohl auch weg. Denn du hast ja dafür keine Zeit!!!
Klar fängt Jeder mal bei 0 an. Nur du möchtest bei 2 anfangen. Was glaubst du wie lange es dauert bis man diese Codes locker aus dem Handgelenk schreiben kann? Ich weis es nicht, weil ich ständig selbst noch nachlesen muß. Und auch das kostet Zeit!! Aber meine und nicht deine. Schön für dich, nicht wahr?
Für den Referenzfehler in deiner Ausgangsfrage versuche den Punkt vor Range wegzulassen. Denn ich sehe kein with statement

with objektname
.objekteigenschaft irgend ein code
end with

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige