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

Mit ComboBox Zeilen verschieben

Mit ComboBox Zeilen verschieben
10.10.2017 14:39:35
Ulf
Moin, moin
ich bekomme mein Vorhaben nicht umgesetzt und brauche bitte Hilfe.
Ich wähle über eine ComboBox einen Typ aus. Der ausgewählte Typ wird dann in der letzten freien Zelle von V30:V72 eingefügt. Es soll aber der Typ aus dem Vorlagenbereich V73:V87 (sprich die Zeile) an die letzte freie Zelle von V30:V72 kopiert werden.
Was ich bei meinem Code nicht verstehe, warum wird in der letzten freien Zelle von V30:V72 ein Typ eingetragen, wenn ich in Spalte K ein „x“ eintrage? Der Code bezüglich Zeile verschieben ist so gewollt, aber ohne einen neuen Typ.
Gruß
Ulf
https://www.herber.de/bbs/user/116844.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: Mit ComboBox Zeilen verschieben
10.10.2017 14:59:18
yummi
Hallo Ulf,
hier dein code:

Private Sub Worksheet_Change(ByVal Target As Range)  'wird immer ausgeführt wenn sich etwas auf  _
dem Tabellenblatt ändert
'Zeile nach oben verschieben
Dim Z As Long
If Target.Column = 11 Then   'wenn Änderung in Spalte 1 (K)
If Target.Count = 1 Then    'wenn nur in eienr Zelle geändert wurde
If Not Target Is Nothing Then    'ist hier überflüssig
If Target.Value = "x" Then      'wenn in der geänderten Zelle ein "x" steht
Range("30:30").Rows.Insert     'füge in Zeile 30 eine Zeile ein
Target.EntireRow.Copy Range("30:30")  'kopiere zeile mit x nach zeile 30
Target.EntireRow.Delete shift:=xlUp  'lösche zeile zeile mit x
End If
End If
End If
End If
End Sub
Hoffe du verstehst jetzt deinen Code
Gruß
yummi
Anzeige
AW: Mit ComboBox Zeilen verschieben
10.10.2017 15:15:45
Ulf
Moin,
Danke, das habe ich soweit verstanden. Aber jedes mal, wenn ich in Spalte K ein "x" einfüge, wird in Spalte V ein Typ zusätzlich eingetragen. Das verstehe ich nicht.
Gruß
Ulf
AW: Mit ComboBox Zeilen verschieben
10.10.2017 15:35:09
yummi
Hallo Ulrf,
nein Du hast es nicht verstanden.
Die Zeile, in die Du ein x einträgst verschiebt sich an die erste stelle deienr liste, anschliessend wird die x Zeile gelöscht
vorher
1 2 3 4 5 6 7 8 9 sind zeilen
in zeile 7 ein x ergibt dann
7 1 2 3 4 5 6 8 9
Gruß
yummi
AW: Mit ComboBox Zeilen verschieben
10.10.2017 15:52:06
Ulf
Moin,
entschuldige, ja aber:
wieso taucht dann in Zeile 10, Spalte "V", der Typ auf, der in der ComboBox ausgewählt ist?
Die Zelle war doch vorher leer. Hängt das mit dem Code von der ComboBox zusammen?
Gruß
Ulf
Anzeige
AW: Mit ComboBox Zeilen verschieben
10.10.2017 15:59:40
yummi
Hallo Ulf,
ich sehe keinen Eintrag in V10, sry verstehe nicht was du meinst
Gehst du von der Datei aus, die du hochgeladen hast und wenn ja was machst du dann damit du etwas in V10 siehst?
GRuß
yummi
AW: Mit ComboBox Zeilen verschieben
10.10.2017 17:12:51
Ulf
Moin,
Mist mein Fehler, die AW bezog sich auf dein Zeilenbeispiel 1 2 .... 9.
Also zurück, ausgehend von dieser Tabelle: https://www.herber.de/bbs/user/116844.xlsm
In Zeile V44 steht "Typ4",wenn jetzt ein "x" in K35 geschrieben wird, wird diese Zeile nach oben kopiert.
Und jetzt steht plötzlich in V45 "Typ3" (also das was in der ComboBox ausgewählt wurde). Warum?
Hoffentlich kommen deshalb nicht vom eigentlichen Problem ab:
Ich wähle über eine ComboBox einen Typ aus. Der ausgewählte Typ wird dann in der letzten freien Zelle von V30:V72 eingefügt. Es soll aber der Typ aus dem Vorlagenbereich V73:V87 (sprich die Zeile) an die letzte freie Zelle von V30:V72 kopiert werden.
Gruß
Ulf
Anzeige
Frage noch offen - owT
10.10.2017 17:16:11
Ulf
Mist Häckchen vergessen.
AW: Mit ComboBox Zeilen verschieben
11.10.2017 09:35:00
yummi
Hallo Ulf,
ok jetzt verstehe ich was du meinst.
Das kommt aus deienr Button_click Funktion
Cells(Typ, "V").Value = ComboBox1.Value 'erste freie Zelle in SpalteV ab Zeile 31
Dort schreibst du immer den Wert aus der Combobox.
Wobei du in der zeile darüber die Variable zeile manipulierst, aber nie darauf zugreifst. Verstehe nicht was Du da wirklich machen willst, aber so geht das bestimmt nicht.
Welchen Wert willst du da jetzt laut deienr Beispieldatei reinschreiben? Typ14 (letzter Wert aus V73:V87) oder aber Typ 3, welches der letzte Wert in Spalte V ist?
Gruß
yummi
Anzeige
AW: Mit ComboBox Zeilen verschieben
11.10.2017 11:17:55
Ulf
Guten Morgen,
Meine Vorstellung:
Die Zeilen 73:87 sind Vorlagen. Ich wähle über die ComboBox einen Typ aus. Dieser Typ wird in V73:V87 gesucht. Wenn der Typ gefunden wurde die entsprechende Zeile kopieren und an die erste freie Zelle im Bereich V31:V72 einfügen.
Bsp:
Von der Tabelle ausgehend: https://www.herber.de/bbs/user/116844.xlsm
In der Combox wird Typ7 ausgewählt, welches dann der Zeile 80 entspricht. Zeile 80 kopieren und in Zeile 45 einfügen. (Das ist die erste freie Zelle im Bereich V31:V72).
Mit dem Code habe ich angefangen zu spielen, bis ich gemerkt habe, das der mich nicht weiterbringt in dem was ich möchte.
Private Sub ComboBox1_Change()
Dim Typ As Long
Typ = Range("V73").End(xlUp).Row + 1
If Typ > 73 Then Zeile = 31
Cells(Typ, "V").Value = ComboBox1.Value 'erste freie Zelle in SpalteV ab Zeile 31
End Sub
Gruß
Ulf
Anzeige
AW: Mit ComboBox Zeilen verschieben
11.10.2017 16:01:41
Ulf
Mahlzeit,
Nein, leider nicht, jetzt wird nur Zelle V45 mit dem ausgewählten Typ ausgefüllt.
Die Zellen M45:V45 ändern sich nicht (Farbe).
Ich möchte, das fortlaufend. Also wenn Zeile 45 mit einem Typ belegt ist, dann Zeile 46. usw.
Des weiteren bekomme ich jetzt einen Fehler 1004, wenn ich in Spalte K ein x schreibe.
Er bleibt im Modul bei
Set rng = wks.Range(strRange).Find(strWert, LookAt:=xlWhole)
stehen.
Ich habe das ganze eben nur schnell überflogen. Morgen sehe ich mir das in Ruhe an.
Jetzt muss ich erst einmal abschalten.
Danke für deine bisherige Mühe.
Gruß
Ulf
https://www.herber.de/bbs/user/116878.xlsm
Anzeige
AW: Mit ComboBox Zeilen verschieben
11.10.2017 16:25:44
yummi
Hallo Ulf,
änder mal die Funktion

Private Sub ComboBox1_Click()
Dim strtyp As String
Dim rng As Range
Dim llast As Long
Initialisiere   'nur wegen Testing
strtyp = ComboBox1.Value
If strtyp  "" Then
Set rng = FindeWert(wksdata, "V73:V87", strtyp)
If Not rng Is Nothing Then
llast = BestimmeLetzteZeile(wksdata, 1) + 1   'nur wenn Spalte A befüllt wird neue  _
letzte Zeile gefunden sonst schreibt er bei mehrmaliger Auswahl hintereinander immer wieder in die selbe Zeile
wksdata.Rows(rng.Row).Copy wksdata.Range("A" & llast)
Application.CutCopyMode = False
Else
MsgBox ("Eingestellten Typ nicht gefunden")
End If
End If
End Sub
Gruß
yummi
Anzeige
AW: Mit ComboBox Zeilen verschieben
12.10.2017 11:15:59
Ulf
Moin, moin
ich verneige mich in großer Dankbarkeit für die Hilfe.
Ich habe den Code auf Spalte P angepasst.
Leider blieb der Code immer noch im Modul hängen, Fehler 1004
Set rng = wks.Range(strRange).Find(strWert, LookAt:=xlWhole)
Nach meinen deletantischen Änderungen
Private Sub Worksheet_Change(ByVal Target As Range)
'Zeile nach oben verschieben
Dim Z As Long
If Target.Column = 11 Then
If Target.Count = 1 Then
If Not Target Is Nothing Then
If Target.Value = "x" Then
ComboBox1.Value = False
Range("30:30").Rows.Insert
Target.EntireRow.Copy Range("30:30")
Target.EntireRow.Delete shift:=xlUp
ComboBox1.Value = True
ComboBox1.Text = ""
End If
End If
End If
End If
End Sub
läuft jetzt alles so wie es soll.
https://www.herber.de/bbs/user/116898.xlsm
Eine Frage noch. Wofür ist das "Initialisiere" (im Modul und diese Arbeitsmappe)?
Nochmals Danke.
Gruß Ulf
Anzeige
AW: Mit ComboBox Zeilen verschieben
12.10.2017 11:53:49
yummi
Hallo Ulf,
das initialisiere hier in der Funktion habe ich eingebaut, damit ich es testen konnte, das wird ja normal beim öffnen des workbooks aufgerufen, tut aber nicht weh wenn du es dort lässt.
In der funktion selber werden die Variablen für das workbook und die Sheets, in dienm Fall wksdata initialisiert und mit speicherplatz versehen.
wie du beim aufruf von FindeWert siehst, wird dort wksdata mit übergeben. Das ist das Sheet auf dem die Funktion sucht. Du kannst da auch jedes andere Sheet übergeben, wen ndu es in anderen Projekten benutzt.
Du kannst auch überall im Code Thisworkbook.Sheets("MeinSheetName") schreiben. Das Problem ist, wenn du dir dann überlegst den Namen zu ändern, musst du zig Anpassungen in deienm Code machen.
So wie Du es jetzt hast, benuttzt du im Code überall wksdata, also brauchst Du nur in der Funktion initialisere ändern und den neunen Sheetnamen eintragen und schon läuft wieder alles.
Ich hoffe, das hilft als Erklärung.
Ansonsten kann ich dir nur den Rat geben, setz dir breakpoints im debugger und steppe Schritt für Schritt durch die Zeilen, schau dir an was passiert und welchen WErt die Variablen haben, damit du verstehst, was du da machst.
Aber freut mich, wenn jetzt alles so läuft wie gewünscht
Gruß
yummi
Anzeige
Danke für die Arbeit & Erklärungen - owT
12.10.2017 13:19:33
Ulf

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige