Anzeige
Archiv - Navigation
1416to1420
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

Datensätze auf anderes Tabellenblatt übertragen

Datensätze auf anderes Tabellenblatt übertragen
31.03.2015 13:57:13
puma_888
Hallo zusammen,
ich möchte aus dem Tabellenblatt "Produktvergleich" Daten an das Tabellenblatt "Vergleichsformular" durch klick des CommandButton1 übergeben. Es sollen jedoch nur die Daten von den Zellen übergeben werden, bei denen eine Checkbox davor markiert ist, alle anderen Daten sollen nicht übergeben werden.
https://www.herber.de/bbs/user/96766.xls
Die zu übergebende Daten befinden sich in der Tabelle "Produktvergleich" von B10:B21 und von D10 bis D21, wobei D20 und D21 nur übergeben werden sollen wenn ein Text in der Zelle hinterlegt ist. Die Daten mit markierten Checkbox sollen anschließend im Tabellenblatt "Vergleichsformular" ab A7:A aufgeführt werden.
Wie ich eine einzelne Zelle übertragen kann bei markierter Checkbox hat funktioniert:
Private Sub CommandButton1_Click()
If CheckBox2.Value Then
Worksheets("Vergleichsformular").Range("A7").Value = "Traglast"
End If
End Sub
Allerdings wie ich das mit mehreren gleichzeitig durchführen kann, die nur aufgeführt werden im anderen Tabellenblatt, wenn die Checkbox markiert ist und ansonsten die nächste markierte Zelle übertragen wird, bin ich leider auf keine Lösung gekommen. Ich habe es versucht mit:
Private Sub CommandButton1_Click()
Dim Daten1 As Range
Dim Daten2 As Range
Dim i As Long
Dim aWerte()
Set Daten1 =Worksheets("Produktvergleich").Range("B10:B21")
Set Daten2 =Worksheets("Vergleichsformular").Range("A7:A18")
For i = 10 to 21
If Worksheets(Produktvergleich").Checkbox & i.value = True Then
aWerte()= Daten1
Daten2 = aWerte()
End IF
Next
End Sub
Dieser Code deckt jedoch nicht alle Daten ab und funktioniert auch auf diese Art und Weise nicht richtig, vielleicht könnte mir jemand weiter helfen.
Gruß
Markus

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datensätze auf anderes Tabellenblatt
31.03.2015 17:10:07
Nepumuk
Hallo,
du hast von mir zwei Beispiele bekommen wie du Controls in einer Tabelle über das OLEObject in einer Schleife abklappern kannst. Und jetzt schreibst du wieder so etwas:
Worksheets(Produktvergleich").Checkbox & i.value
Ein bisschen mehr solltest du dich schon mit dem zur Verfügung stehenden Code befassen, sonst lernst du es nie. Oder hast du das gar nicht vor?
Gruß
Nepumuk

AW: Datensätze auf anderes Tabellenblatt
01.04.2015 11:38:56
puma_888
Hallo Nepumuk,
es tut mir leid wenn es dir so rüber kommt, dass ich mich gar nicht mit dem Code beschäftigen würde, das stimmt nämlich nicht. Hab hier zwar im Forum diese Frage gestellt aber parallel dazu weiter am Code selber herum getüftelt. Nur leider will es bei mir meistens nicht so richtig klappen.
Ich habe das bestehende Problem deswegen erst mal in kleinere Teile zerlegt für die ich erst Lösungen suche. So fällt es mir leichter.
1.Teil: Wenn eine Checkbox im Tabellenblatt "Produktvergleich"(Tabelle3) markiert ist, soll es mir den Text aus der nebenstehenden Spalte B10:B21 in das Tabellenblatt "Vergleichsformular" in der Spalte A7:A21 übernehmen. Wenn die Checkbox nicht markiert ist soll dementsprechend im Tabellenblatt "Vergleichsformular" nichts angezeigt werden und der Datensatz einer anderen Zeile eins nach oben rutschen. Für dieses Teil hab ich folgenden Code geschrieben:
Private Sub CommandButton1_Click()
Dim i As Long
Dim Daten1 As String
For i = 10 To 21
If tabelle3.OLEObjects("CheckBox" & i).Object.Value = True Then
Daten1 = Worksheets("Produktvergleich").Cells(i, 2)
Worksheets("Vergleichsformular").Cells(-3 + i, 1) = Daten1
ElseIf tabelle3.OLEObjects("CheckBox" & i).Object.Value = False Then
Worksheets("Vergleichsformular").Cells(-3 + i, 1) = ""
End If
Next
End Sub
Bei Anwendung dieses Codes, werden die Daten mir in die entsprechende Spalte der Tabelle "Vergleichsformular" übernommen, wenn eine Checkbox im Tabellenblatt "Produktvergleich" markiert ist. Jedoch hat sich gezeigt, wenn eine Checkbox nicht markiert ist, wird der Wert trotzdem im anderen Tabellenblatt angezeigt. Hast du vielleicht eine Idee woran das liegen könnte? Wenn ich den Code mit F8 durchgehe, geht das Programm immer nur den If Teil durch und ignoriert den Teil ElseIF, wenn eine Checkbox nicht markiert ist.
Gruß
Markus

Anzeige
AW: Datensätze auf anderes Tabellenblatt
01.04.2015 12:34:02
Nepumuk
Hallo,
von hier aus sieht es richtig aus. Ich kann also nicht sagen woran das liegt. Hast du schon mal geprüft ob die Nummern der Boxen stimmen?
Gruß
Nepumuk

AW: Datensätze auf anderes Tabellenblatt
01.04.2015 14:44:54
puma_888
Hallo Nepumuk,
du hattest recht, es lag an der Nummer der Checkboxen diese gehen von Checkbox2 bis Checkbox25, da ich sowohl die Daten und die Checkboxen über die gleiche Variable laufen ließ gab das Probleme. Ich lass es jetzt zwar immer noch beides über die gleiche Variable i laufen doch für die Checkboxen lautet es jetzt i-8, sodass mit der checkbox2 angefangen wird. Somit funktioniert es, vielen Dank für den Tipp :).
Private Sub CommandButton1_Click()
Dim i As Long
Dim Daten1 As String
Dim Daten2 As String
For i = 10 To 21
If tabelle3.OLEObjects("CheckBox" & i - 8).Object.Value = True Then
Daten1 = Worksheets("Produktvergleich").Cells(i, 2)
'Daten2 = Worksheets("Vergleichsformular").Cells(-3 + i, 1)
Worksheets("Vergleichsformular").Cells(-3 + i, 1) = Daten1
ElseIf tabelle3.OLEObjects("CheckBox" & i - 8).Object.Value = False Then
Worksheets("Vergleichsformular").Cells(-3 + i, 1) = ""
'If CheckBox2.Value Then
'Worksheets("Vergleichsformular").Range("A7").Value = "Traglast"
'End If
End If
Next
End Sub

Ich muss den Code allerdings noch etwas erweitern damit er genau das erfüllt für das ich in benötige. Es sollen nämlich nicht nur die Daten aus den Spalten von B10:B21 aus Tabellenbaltt "Produktvergleich" aufgenommen werden, sondern auch von D10:D21 und diese im Tabellenblatt "Vergleichsformular" in Spalte A6:A wiedergeben. Mein Problem ist, dass ich momentan in meinem Code über Cells(i,2) die Daten von B10:B21 einlese. Um die Daten beider Spalten einzulesen benötige ich ja eine Range("B10:B21","D10:21"), wobei ich nicht weiß wie ich in diesem Fall die Variable i integrieren soll, damit das Programm weis bei welcher Zelle man sich während der Schleife gerade befindet. Außerdem sollen ja nur im Tabellenblatt "Vergleichsformular" die Daten angezeigt werden, bei den die Checkbox markiert ist, dafür habe ich die Formel etwas umgeschrieben aber leider funktioniert es nicht richtig. Vllt. kannst du mir ja einen tipp geben was ich falsch gemacht habe.
Private Sub CommandButton1_Click()
Dim i As Long
Dim Daten1 As String
Dim Daten2 As String
Dim strRowSource As String
For i = 10 To 21
If tabelle3.OLEObjects("CheckBox" & i - 8).Object.Value = True Then
Daten1 = Worksheets("Produktvergleich").Cells(i, 2)
strRowSource = "A6:A" & CStr(.Cells(Rows.Count, 1).End(xlUp).Row + 1)
With Worksheets("Vergleichsformular")
strRowSource = Daten1
End With
End If
Next
End Sub

Anzeige
AW: Datensätze auf anderes Tabellenblatt
01.04.2015 15:21:01
Nepumuk
Hallo,
was du schreibst + dein Code dazu stiften mehr Verwirrung als sie zur Lösung beitragen. Schreib einfach was genau passieren soll ohne irgendwelche Variablen im Text. :)
Gruß
Nepumuk

AW: Datensätze auf anderes Tabellenblatt
01.04.2015 15:36:27
puma_888
Hi,
ok^^. Ich habe im Tabellenblatt Produktvergleich in den Spalten A10:A21 und C10:C21 Checkboxen (aktiveX) integriert beginnend mit checkbox2 bis Checkbox25. In den Spalten B10:B21 und D10:D21 befinden sich Daten, die den jeweiligen Checkboxen zugeordnet sind. D.h. ist die Checkbox2 in A10 markiert, wird der Datensatz aus Zelle B10 benötigt. Durch das klicken eines Buttons sollen für alle markierten Checkboxen die jeweiligen Datensätze im Tabellenblatt "Vergleichsformular" aufgelistet werden, angefangen bei A7:A. Ist eine Checkbox nicht markiert soll der Datensatz der nachfolgenden markierten Checkbox eine Zeile im Tabellenblatt "Vergleichsformular" nach oben verschoben werden, sodass keine Lücke entsteht. Mein bisheriger Code konnte die Datensätze nur von einer Spalte z.B. B10:B21 in die neue Tabelle übertragen und bei einem nicht ausgewählten Datensatz entstand bis jetzt immer eine freie Zeile. Ich hoffe es ist jetzt verständlicher, vielen dank für deine Hilfe.
Gruß
Markus

Anzeige
AW: Datensätze auf anderes Tabellenblatt
02.04.2015 09:01:40
Nepumuk
Hallo,
so?
Public Sub Test()
    Dim lngIndex As Long, lngRow As Long
    With Worksheets("Tabelle1")
        Worksheets("Vergleichsformular").Range("A7:A30").ClearContents
        lngRow = 7
        For lngIndex = 2 To 13
            If .OLEObjects("CheckBox" & CStr(lngIndex)) Then
                Worksheets("Vergleichsformular").Cells(lngRow, 1).Value = .Cells(lngIndex + 8, 2).Value
                lngRow = lngRow + 1
            End If
        Next
        For lngIndex = 14 To 25
            If .OLEObjects("CheckBox" & CStr(lngIndex)) Then
                Worksheets("Vergleichsformular").Cells(lngRow, 1).Value = .Cells(lngIndex + 8, 4).Value
                lngRow = lngRow + 1
            End If
        Next
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: Datensätze auf anderes Tabellenblatt
02.04.2015 09:03:25
Nepumuk
Halt,
da ist ein Fehler in der unteren Schleife:
Public Sub Test()
    Dim lngIndex As Long, lngRow As Long
    With Worksheets("Tabelle1")
        Worksheets("Vergleichsformular").Range("A7:A30").ClearContents
        lngRow = 7
        For lngIndex = 2 To 13
            If .OLEObjects("CheckBox" & CStr(lngIndex)) Then
                Worksheets("Vergleichsformular").Cells(lngRow, 1).Value = .Cells(lngIndex + 8, 2).Value
                lngRow = lngRow + 1
            End If
        Next
        For lngIndex = 14 To 25
            If .OLEObjects("CheckBox" & CStr(lngIndex)) Then
                Worksheets("Vergleichsformular").Cells(lngRow, 1).Value = .Cells(lngIndex - 4, 4).Value
                lngRow = lngRow + 1
            End If
        Next
    End With
End Sub

Anzeige
AW: Datensätze auf anderes Tabellenblatt
02.04.2015 09:25:29
puma_888
Hi,
danke aber es funktioniert nicht ganz, er bringt in der Zeile
If .OLEObjects("CheckBox" & CStr(lngIndex)) Then
die Meldung: "Objekt unterstütz diese Eigenschaft oder Methode nicht"
Ich hab darauf versucht mal nach dem If das entsprechende Tabellenblatt mit anzugeben aber kommt trotzdem noch dieselbe Fehlermeldung.
Gruß
Markus

AW: Datensätze auf anderes Tabellenblatt
02.04.2015 09:27:50
Nepumuk
Ooooops
da fehlt noch was (hatte es ohne Controls getestet)
If .OLEObjects("CheckBox" & CStr(lngIndex)).Object.Value Then

Gruß
Nepumuk

AW: Datensätze auf anderes Tabellenblatt
02.04.2015 09:54:21
puma_888
Hi,
vielen Dank, jetzt funktioniert es :)
Gruß
Markus
Anzeige

362 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige