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

VBA Produkte nach Herstellern anlegen

VBA Produkte nach Herstellern anlegen
21.04.2019 19:23:44
Patrick
Hallo ich habe ein neues Problem
ich würde gerne Artikel bzw Produkte in eine Liste Hinzufügen und dann diese in die erste freie Zeile des jeweiligen Herstellers eingeben.
Über VBA schaffe ich es nur die neuen Produkte ganz unten einzufügen.
Ich hab leider alles versucht If then els find....keine ahnung was ich falsch mache.
Habe auch alle codes wieder verworfen und nur noch den standart code für die letzte gefüllte zeile drin.
Die userform existiert bereits.
Leider lässt sich meine datei nicht hochladen, deswegen nur Screeshot und Mein bisheriger Code
Private Sub CommandButton_Hinzufügen_Click()
Dim last As Integer
last = Cells(Rows.Count, 2).End(xlUp).Row + 1
Cells(last, 2).Value = TextBox_Hersteller
End Sub

Userbild

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Produkte nach Herstellern anlegen
21.04.2019 19:30:39
Hajo_Zi
ich konnte nicht Dein If sehen, das liegt vielleich daran das ich nicht auf fremde Rechner schaue.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: VBA Produkte nach Herstellern anlegen
21.04.2019 19:33:04
Patrick
Liegt leider daran wer meinen text nicht lesen will wird auch nicht wissen das ich alle anderen codes wieder verworfen habe
AW: VBA Produkte nach Herstellern anlegen
21.04.2019 19:34:30
Hajo_Zi
Gut ich habe es dann falsch gelesen das Du den Fehler bei If lösen wolltest.
Dann ´habe ich die Aufgabe falsch verstzanden und bin raus.
Gruß Hajo
Anzeige
AW: VBA Produkte nach Herstellern anlegen
21.04.2019 19:55:43
Patrick
Ich würde meine datei gern hochladen aber das Upload Tool lässt dies bei meiner xlms oder xlxs nicht zu
AW: VBA Produkte nach Herstellern anlegen
21.04.2019 19:38:50
Patrick
Ich brauch im grunde nur für jeden Hersteller ein code welcher mir die erste frei zeile des jeweiligen herstellers mit der eingabe aus der textbox füllt.
Sprich Textbox = hersteller 1 dann
erste frei spalte suchen unter hersteller 1 und dort dann die eingabe aus der textbox eintragen
selbe dann für Hersteller 2
AW: VBA Produkte nach Herstellern anlegen
21.04.2019 19:56:50
Werner
Hallo Patrick,
sorry aber meiner Meinung nach ist dein Tabellenaufbau "subobtimal" um es mal freundlich auszudrücken.
Private Sub CommandButton1_Click()
Dim strSuche As String, raFund As Range
With Worksheets("Tabelle1")
strSuche = Me.TextBox1
If Not strSuche = vbNullString Then
Set raFund = .Columns(2).Find(what:=strSuche, LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlPrevious)
If Not raFund Is Nothing Then
If raFund.Offset(1) = "" Then
raFund.Offset(1) = Me.TextBox1
raFund.Offset(1, 1) = Me.TextBox2
Else
MsgBox "Kein Platz mehr."
End If
End If
End If
End With
Set raFund = Nothing
End Sub
Gruß Werner
Anzeige
AW: VBA Produkte nach Herstellern anlegen
21.04.2019 20:07:14
Patrick
Sie mag wohl suboptimal sein aber dein Code funktioniert so wie ich es mir erhofft habe es werden nie mehr als diese 10 Zeilen gebraucht deswegen muss ich hier nicht weiter erweitern können sehr vielen dank dir
Gerne u. Danke für die Rückmeldung. o.w.T.
21.04.2019 20:12:13
Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
21.04.2019 20:41:39
Patrick
Ok ich habe verstanden warum suboptimal
Wenn ich zum Beispiel Hersteller 4 (den es ja noch nicht gibt) anlegen will klappt das nicht.
Wie muss ich dein Code ändern um auch neue Hersteller anzulegen die es noch nicht in meiner Liste gibt aber trotzdem noch die funktion der Sortierung nach Herstellern habe
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
21.04.2019 21:07:56
Werner
Hallo Patrick,
schau dir das mal an:
Private Sub CommandButton1_Click()
Dim strSuche As String, loLetzte As Long, raFund As Range
With Worksheets("Tabelle1")
strSuche = Me.TextBox1
If Not strSuche = vbNullString Then
Set raFund = .Columns(2).Find(what:=strSuche, LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlPrevious)
If Not raFund Is Nothing Then
'Platz da, dann in erste freie
If raFund.Offset(1) = "" Then
raFund.Offset(1) = Me.TextBox1
raFund.Offset(1, 1) = Me.TextBox2
Else
'Platz voll neue Zeile einfügen
raFund.Offset(1).EntireRow.Insert
raFund.Offset(1) = Me.TextBox1
raFund.Offset(1, 1) = Me.TextBox2
End If
Else
'neuer Hersteller dann ans Ende
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Offset(1).Row
.Cells(loLetzte, 2) = Me.TextBox1
.Cells(loLetzte, 3) = Me.TextBox2
End If
End If
End With
Set raFund = Nothing
End Sub
Aber wie schon gesagt, ich würde den Tabellenaufbau überdenken.
Tabelle ohne Leerzeilen.
Neue Einträge einfach ganz am Ende einfügen.
Danach Tabelle nach Herstellernamen sortieren.
Gruß Werner
Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
21.04.2019 21:57:36
Patrick
Wenn ich neue Zeilen wie in deinem Code einfüge und auch eventuell ohne Leerzeilen arbeite wie kann ich dann von mir vorgegebene Artikelnummern fortlaufend einfügen, mir gefällt dein code wirklich sehr gut.
Nur brauch ich dann eben noch die fortlaufenden Nummern. Im Beispiel zu Beginn sind natürlich nur Beispiele
Artikelnummer wäre die erste zum Beispiel 10110
jetzt wird es langsam Zeit für eine Beispielmappe.
21.04.2019 22:08:45
Werner
Hallo Patrick,
..mit ein paar Beispieldaten. Vor allem mit ein paar Beispielen wie denn die Artikelnummern aussehen sollen bei verschiedenen Herstellern.
Sonst wird das ein gestochere im Nebel.
Gruß Werner
AW: jetzt wird es langsam Zeit für eine Beispielmappe.
21.04.2019 22:19:28
Patrick
https://www.herber.de/bbs/user/129308.xlsm
hier ist noch ein alter Code von mir drin welcher natürlich nicht funktioniert hat aber jetzt hast du mal ein Überblick wie ich es in etwa gestalten will.
In meiner Datei ist das Format natürlich Querformat sollte aber hier glaub ich nicht stören.
Die Hersteller differenzier ich in den Verschiedenen Gruppen nachher über If Optionbutton was ich aber erstmal weggelassen habe da das eigentlich gut geklappt hat
Die Gruppen sind Immer so aufgebaut 5Stellige Nummer die ersten beiden ziffern sind die Hauptgruppe
die dritte Ziffer ist eine Untergruppe und die letzten zwei Ziffern beginnend ab 10 sind die Fortlaufende Nummerierung
Beispiel 10110
Hauptgruppe 10 Licht
Untergruppe 1 Moving Heads
forlaufende Nummer 10
Anzeige
AW: VBA Produkte nach Herstellern anlegen
21.04.2019 20:07:32
Nepumuk
Hallo Patrick,
teste mal (die Namen der Controls musst du natürlich anpassen)
Private Sub CommandButton1_Click()
    Dim objCell As Range
    Dim lngRow As Long
    With Worksheets("Tabelle1")
        Set objCell = .Columns(2).Find(What:=TextBox1.Text, After:=.Cells(.Rows.Count, 2), _
            LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True, SearchDirection:=xlPrevious)
        If Not objCell Is Nothing Then
            With objCell
                If IsEmpty(.Offset(1, 1).Value) Then
                    .Offset(1, 0).Value = TextBox1.Text
                    .Offset(1, 1).Value = TextBox2.Text
                    TextBox1.Text = vbNullString
                    TextBox2.Text = vbNullString
                Else
                    Call MsgBox("Keine freie Zeile unter dem Hersteller gefunden.", vbExclamation, "Hinweis")
                End If
            End With
        Else
            Call MsgBox("Hersteller nicht gefunden.", vbExclamation, "Hinweis")
        End If
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Produkte nach Herstellern anlegen
22.04.2019 10:50:40
Herbert
Hallo Patrick,
warum machst du das so kompliziert? Warum machst du nicht einfach eine fortlaufende Liste mit Herstellern und Produkten? Aus dieser könntest du doch alles herausfiltern, was immer du auch benötigst! Probiers doch mal!
Servus

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige