31 Aufrufe
Gefragt in Tabellenkalkulation von peter-pfeiffer Einsteiger_in (26 Punkte)

Guten Morgen,

ich habe eine Tabelle mit den zwei Tabellenblättern Firma und Datentabelle.

Datentabelle:

Unternehmen | PLZ | Ort | Umsatz |

Firma

Unternehmen | PLZ | Ort

Zudem habe ich eine Userform, in der ich eine Combobox habe, welche die Werte aus dem Tabellenblatt Firma anzeigen und nach Auswahl und Click auf eine Schaltfläche in die erste freie Zeile des Tabellenblattes Datenblatt eingefügt werden sollen.

Die Eintäge im Tabellenblatt Firma sind dynamisch, können also mal mehr oer weniger sein.

Ich bekomme es aber nicht hin, die Werte PLZ und Ort zu übertragen.

Mein aktueller Code:

Private Sub UserForm_Activate()

With ThisWorkbook.Sheets("Firma")

Unternehmen.RowSource = Range(.Cells(2, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)).Address(External:=True)

Unternehmen.Value = .Cells(2, 1)

End With

End Sub

Und für die Schaltfläche

Private Sub uebernehmen_Click()

Dim letzteZeile As Integer

'Die letzte Zeile bestimmen

Range("A65536").End(xlUp).Select

'und eins draufaddieren damit man die erste freie Zeile bekommt

letzteZeile = ActiveCell.Row + 1

'die Werte schreiben

ThisWorkbook.Sheets("Datentabelle").Cells(letzteZeile, 4) = Unternehmen.Value
ThisWorkbook.Sheets("Datentabelle").Cells(letzteZeile, 7) = Umsatz.Value

'Die Maske schließen und wieder öffnen für die n#ächste Eingabe

Unload Me
UserForm1.Show
End Sub

Wäre superklasse, wenn mir hier jemand helfen könnte.

Vielen Dank im Voraus.

Liebe Grüße

Peter

4 Antworten

0 Punkte
Beantwortet von beverly_ Experte (1.2k Punkte)
Hi Peter,

du solltest vielleicht mal eine Beispielmappe hochladen - Daten kannst du anonymisieren falls es sensible Daten sind.

Bis später, Karin
0 Punkte
Beantwortet von peter-pfeiffer Einsteiger_in (26 Punkte)

Hallo Karin,

ich habe Dir einmal die ganze Datei gesendet.

Die ist etwas größer wie oben beschrieben.

Schlussendlich geht es aber um die Userform1 und dort um die Combobox "Unternehmen"

Tabelle

Vielen Dank

LG

Peter

0 Punkte
Beantwortet von beverly_ Experte (1.2k Punkte)

Hi Peter,

du solltest die Variable für die Zeilennummer nicht als Integer sondern zumindest als Long deklarieren, denn ein Tabellenblatt hat mehr Zeilen als der Typ Integer zulässt - und das könnte Probeme machen.

Private Sub uebernehmen_Click()
    Dim letzteZeile As Long
    Dim rngFirma As Range
    ' Firma wurde ausgewählt
    If Unternehmen.Value <> "" Then
        ' Firma in Tabelle "Firma" Spalte A suchen
        Set rngFirma = ThisWorkbook.Worksheets("Firma").Columns(1).Find(Unternehmen.Value, lookat:=xlWhole)
    End If
    With ThisWorkbook.Worksheets("Datentabelle")
        letzteZeile = .Columns(1).Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
        .Cells(letzteZeile, 1) = PLG.Value
        .Cells(letzteZeile, 2) = Datum.Value
        .Cells(letzteZeile, 3) = Sparte.Value
        .Cells(letzteZeile, 4) = Unternehmen.Value
        ' Firma wurde gefunden
        If Not rngFirma Is Nothing Then
            ' PLZ aus 1 Spalte rechts neben gefundener Firma übernehmen
            .Cells(letzteZeile, 5) = rngFirma.Offset(0, 1).Value
            ' Ort aus 2 Spalten rechts neben gefundener Firma übernehmen
            .Cells(letzteZeile, 6) = rngFirma.Offset(0, 2).Value
        End If
        .Cells(letzteZeile, 7) = Umsatz.Value
        .Cells(letzteZeile, 8) = Preis.Value
        .Cells(letzteZeile, 9) = Nebenkosten.Value
        .Cells(letzteZeile, 10) = Rabatte.Value
        .Cells(letzteZeile, 11) = Skonto.Value
        .Cells(letzteZeile, 12) = Charge.Value
        .Cells(letzteZeile, 13) = Zertifizierung.Value
        .Cells(letzteZeile, 14) = Reklamationen.Value
        .Cells(letzteZeile, 15) = PPM.Value
        .Cells(letzteZeile, 16) = Reaktion.Value
        .Cells(letzteZeile, 17) = Qualität.Value
        .Cells(letzteZeile, 18) = Logistik.Value
        .Cells(letzteZeile, 19) = Strategie.Value
        .Cells(letzteZeile, 20) = Umwelt.Value
        .Cells(letzteZeile, 21) = Support.Value
        .Cells(letzteZeile, 22) = Termintreue.Value
        .Cells(letzteZeile, 23) = Entwicklung.Value
        .Cells(letzteZeile, 24) = Konzept.Value
        .Cells(letzteZeile, 25) = Position.Value
        .Cells(letzteZeile, 26) = Erfüllung.Value
        .Cells(letzteZeile, 27) = Entwicklungskooperation.Value
    End With
'Die Maske schließen und wieder öffnen für die nächste Eingabe
    Unload Me
    UserForm1.Show
 End Sub

Bis später, Karin

0 Punkte
Beantwortet von peter-pfeiffer Einsteiger_in (26 Punkte)
Hallo Karin,

sorry bin erst jetzt wieder am Rechner.

Das klappt wunderbar, genau wie ich es wollte.

Vielen Dank und Dir einen guten Wochenstart.

LG

Peter
...