Excel VBA Werte in anderes Tabellenblatt kopieren bei aktivieren der Checkbox

ChazyChaz

Lt. Commander
Registriert
Jan. 2006
Beiträge
1.028
Hey Leute,
habe mal wieder ein kleines Problem.
Ich möchte die Werte die in C8-G10 stehen in ein anderes Tabellenblatt kopieren.
Dies soll aber nur geschehen, wenn ich davor eine Checkbox die ich mit der UserForm erstellt habe, angeklickt wird.
Jetzt funktioniert das leider überhaupt nicht so wie ich mir das Vorstelle.
Die Werte werden einfach nicht kopiert da stimmt wohl was mit dem Code net.

Option Explicit
Private Sub CommandButton1_Click()

If CheckBox1.Value = True Then

Dim zelle As Range, zeile As Long
For Each zelle In Sheets("Tabelle1").Range("C8:G10")

zeile = zelle.Row
Rows(zeile).Copy Destination:=Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Next
End If
Unload Me

End Sub


Das hab ich mir so mehr oder weniger aus dem Internet zusammengeschustert^^

kann mir da vll jemand weiterhelfen?
 
Moin

ich finde es gut, dass du dir die Mühe gemacht hast, irgend etwas passendes zu finden. Dass es dann nicht so klappt, wie gewollt, das passiert. Der folgende Code wird funktionieren:
Code:
Option Explicit

Private Sub CommandButton1_Click()
   Dim Rng2Copy As Range, Rng2Paste As Range
   Dim aWerte()
   
   Set Rng2Copy = Sheets("Tabelle1").Range("C8:G10")
   Set Rng2Paste = Sheets("Tabelle2").Range("B7:F9")
   If Sheets("Tabelle1").CheckBox1.Value = True Then
      aWerte() = Rng2Copy
      Rng2Paste = aWerte()
   End If
End Sub
Am besten in das Modul "DieseArbeitsmappe" einfügen. Ich habe als Zielbereich bewusst einen anderen Bereich gewählt!
 
Vielen vielen Dank!
Ich musste nur eins ändern. Bei
Code:
If Sheets ("Tabelle1").CheckBox1.Value = True Then
hier musste ich
Code:
If CheckBox1.Value = True Then
reinschreiben.

Sonst aber wunderbar. Nochmal Danke !

Jetzt hab ich aber noch ne Frage^^
Das ganze wird ja auch der Tabelle 2 ausgegeben. Von diesen Werten holt sich ein Diagramm die Daten. Nun würd ich noch gern die Funktion einbauen, dass die Werte wenn ich die User Form noch einmal öffne und die Checkboxen anklicke, die Werte die darin stehen erstmal löscht und dann die neuen reinschreibt. Geht das?

Edit: Hab mir schon selbst geholfen.
Habe jetzt folgenden Code einfach vor das ganze gestellt:
Code:
Worksheets("Zusatzdaten").Range("B2:F24").ClearContents
 
Zuletzt bearbeitet:
Moin ChazyChaz,

danke für das Feedback. Ist leider nicht selbstverständlich. Und natürlich freue ich mich, dass es jetzt so läuft, wie du das gerne möchtest.
 
Hi Günther,

ich brauche Deine Hilfe. Ich bin Normal-Excel-Awender und würde gerne Werte in anderes Tabellenblatt kopieren bei aktivieren der Checkbox. Könntest Du mir bitte sagen, wo ich was in Excel 2007 klicken soll, damit ich mein Ziel erreiche?

Vielen Dank schon mal im vorraus.

Grüße

Jamie
 
Hallo Jamie,

ich kann mir nicht so recht vorstellen, was du wie erreichen willst. Stelle einfach einmal eine kleine Mustertabelle mit beliebigen (aber keinen echten) Daten ein und schreibe dann genau, was geschehen soll.

... Und ehe jemand "meckert": Ein neues Thema sollte eigentlich in einen neuen Beitrag. Ich weiß, du wolltest mich ansprechen, aber das geht a) auch gut im neuen Beitrag (einfach kurz beschreiben, dass du mich ansprichst) und b) wir helfen alle gerne.
 
Hallo Günther,

ich stehe seit einigen Tagen vor folgendem Problem, ich bearbeite eine Tabelle mit mehreren tausend Zeilen, für jede Zeile soll eine Checkbox deklariert werden, sodass wenn das Häkchen gesetzt wurde die ganze Zeile kopiert wird und in eine andere Tabelle (die sich auf einem anderen Tabellenreiter unten links befindet, nicht auf derselben Excel Seite) Kopiert werden sollte. Da meine VBA Kenntnisse nicht ausreichend sind, brächte ich da unbedingt Hilfe. Ich habe es schon mit folgenden Codes versucht, leider fehlgeschlagen:


Sub CheckBoxen()

For i = 1 To ActiveSheet.CheckBoxes.Count
ActiveSheet.Shapes("Check Box " & i).Select
Selection.LinkedCell = "J" & 6 + i
Next i

End Sub
-----------------------------------
Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Worksheets("Tabelle1").Range("F2").Value = Worksheets("Tabelle1"). _
Range("E2").Value
Else
Worksheets("Tabelle1").Range("Tabelle1!F2").Value = ""
End If
End Sub


und noch einige mehr.

Ich wüsste nicht wie ich z.B. die Range angeben müsste da sie ja für jede Checkbox und Zeile anders ist und bei mehreren tausend Zeilen würde ich da wahnsinnig werden, vor allem wüsste ich nicht wie der Code deklariert werden müsste, das wenn z.B. in Tabelle1 das Häkchen gesetzt wird, diese kopierte Zeile versteht das sie in Tabelle 2 immer unter der letzten Zeile sich anordnen muss. Als Beispiel habe ich dir mal eine Tabelle Kreiert damit du eine Ungefähre Vorstellung hast wie ich das meine…

Wäre dir unendlich dankbar wenn sich da was tun lässt...


viele Grüße
 

Anhänge

  • Excel.jpg
    Excel.jpg
    97,3 KB · Aufrufe: 1.927
Hallo Jamie,


da mein Excel keine Screenshots in's Excel-Format umwandeln kann, muss ich ein wenig herumraten. (Datei = *.xls* !).
Du verwendest wahrscheinlich ActiveX-Checkboxen. Hast du die irgendwie an eine Zelle gebunden? Vermutlich nicht ...

Dann bleibt dir wohl nur die Option, dass du den Wert von
Code:
Position = CheckBox1.Top
auswertest. Bei mir ist es so, dass bei exakter Positionierung die Ergebnisse um jeweils 15 differieren.

Allerdings frage ich mich, wie sinnvoll solch eine Ressourcen fressende Option ist (wegen der Zahl der Zeilen). Mit Access wäre das sooo leicht!
 
Hallo Günther,

kenne mich leider mit Access nicht aus, somit würde das für mich noch Komplizierter werden als mit Excel. Sry für die Jpeg, habe im Anhang die Excel Datei hinzugefügt, vlt. Klappt das so besser…

viele Grüße
 

Anhänge

  • CheckBox.zip
    71,4 KB · Aufrufe: 612
In Sachen CheckBoxen …

Eigentlich willst du für jede einzelne CheckBox eine einzelne Prozedur. Aber das willst du gewiss nicht wirklich :freaky:

OK, ich habe das jetzt so hin gebastelt. dass alle erforderlichen CheckBoxen angeklickt werden können und dann wird das Makro TransferData aufgerufen. Existierende Werte werden beibehalten, bislang nicht eingetragene Werte (weil neu gemarkert) werden in der 2. Tabelle angefügt.

Die Spalte G ist eine Hilfsspalte, sie kann aber versteckt (ausgeblendet) werden. Bei Bedarf einen Button aud ein Blatt und das Makro daran binden.

[EDIT]
Access wäre wirklich nicht schwerer, wenn das Teil einmal steht.
 

Anhänge

  • CheckBox_GMG-CC.zip
    75,8 KB · Aufrufe: 1.070
Zuletzt bearbeitet: (Ergänzung)
Hallo Günther,

genau wie ich es mir vorgestellt habe! Ein RIESEN DANKESCHÖN für meine Problemlösung an dieser Stelle… sehr stark von dir :)

viele Grüße
 
Hallo Zusammen,

Ich habe mich ein wenig durch das Forum gelesen und hoffe, hier ebenfalls Hilfe zum gleichen Thema zu erhalten.

Ich muss vorweg schicken - ich bin absoluter FrontEnd user. VBA ist mir bislang leider immer ein Buch mit 7 Siegeln geblieben.
Dennoch komme ich manchmal nicht umhin und konnte kleinere Aufgaben auch durch Recherche im Netz lösen - diese hier aber nicht.

Aufgabenstellung:
Ich habe eine Arbeitsmappe mit mehreren Tabellenblättern.
Manche davon sind ausgeblendet.
Ich möchte nun die Sichtbaren Blätter in ein neues Blatt überführen.
Gern durch Betätigen eines Buttons.

Ich habe mich versucht heranzutasten und aus verschiedenen Befehlen etwas zu basteln.
Leider klappt es nicht - nur EIN Tabellenblatt wird kopiert:

Hier mein Code:

Sub Kopieren_Neues_TB()
Dim wsTabelle As Worksheet
Dim loLetzteActive As Long
Dim loLetzte As Long
Dim inLetzte As Integer
loLetzteActive = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
For Each wsTabelle In Worksheets
With wsTabelle
Select Case .Name
Case "CON", "EDU", "OUT"
loLetzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
inLetzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Column
.Range(.Cells(1, 1), .Cells(loLetzte, inLetzte)).Copy ActiveSheet.Cells(loLetzteActive, 1)
loLetzteActive = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
End Select
End With
Next wsTabelle
End Sub

Beispieldatei anbei.

Zunächst schonmal vielen vielen Dank für Eure Hilfe!
Ich raufe mir schon den ganzen Morgen die Haare -
CEE
 

Anhänge

  • CB_test.zip
    6,5 KB · Aufrufe: 447
Wie rufst du denn den Makro auf?
In deiner Beispieldatei werden bei mir alle 3 Tabellen aus den Tabellenblättern kopiert.
Dort sind auch irgendwie nur diese 3 Tabellenblätter vorhanden, ausgeblendete Tabellenblätter sehe ich in der Beispieldatei keine.
 
Du hast Recht, Simpsonfan,

So ist das, wenn man ein einfaches Sheet aufbaut und es nicht nochmal testet.

Hier (in der Bsp. Datei) funktioniert das Makro bei mir auch.
Bis auf den Umstand, dass ich vergessen hatte, ein ausgeblendetes Blatt einzubauen :freak:

Wahrscheinlich liegt es dann wirklich an der Originaldatei.
Die ist auch ziemlich wüst, wobei ich dachte, der Aufbau sei in dem Fall (stumpfes Auslesen) egal...

in jedem Fall vielen Dank für Deine Zeit und Mühe...
vielleicht wirds ja doch noch was mit mir & VBA.

LG,
CEE
 
Mit F8 gehst su im VBA-Editor in den Einzelschritt-Debugging-Modus. Probier doch den mal, dann siehst du auch, ob z.B. in der Schleife alle Blätter behandelt werden. Eigentlich sollte ja ein ausgeblendetes mit anderem Namen nicht stören.
 
Hallo Excel bzw. VBA Profis!!!!

Also ich hab folgendes Problem:

- Ich habe mehrere Excel-Dateien im Monat, diese enthalten mehrere Tabellenblätter die unterschiedliche nach Namen benannt sind z.b. Müller, Weber usw.

- Diese Dateien haben eine einheitliche Informationsstruktur d.h. das die Daten sind im Bereich A12:F24 und A25:F45 und D15:H45 auszulesen. Diese Bereiche hab ich einfach mal als Hausnummer genannt.

- Die Dateien sind nicht systematisch benannt sondern haben je nach Bearbeiter unterschiedliche Dateinamen. Diese Dateien sind alle in einem Ordner.

- Ich muss jeden Monat jede Datei einzeln öffnen und die dann in einer Datei zusammenfassen.

- Ich möchte gerne das die Informationen der Dateien in einer einzelnen Datei zusammengefasst werden bzw. erscheinen.

Falls es möglich ist mit VBA es zu programmieren dann wäre ich sehr DANKBAR WENN mir einer hilft. Das ich ein Anfänger bzw. keine Ahnung vom VBA habe will ich euch schon mal vorher Bescheid sagen.


VG

BEG
 
Zuletzt bearbeitet:
Moin,

erlaube mir ein offenes Wort, insbesondere da du offensichtlich nicht dafür verantwortlich bist:

Solche Dateistrukturen sind einfach nur krank!
 
Hallo Excel bzw. VBA Profis!!!!

Also ich hab folgendes Problem:

- Ich habe mehrere Excel-Dateien im Monat, diese enthalten mehrere Tabellenblätter die unterschiedliche nach Namen benannt sind z.b. Müller, Weber usw.

- Diese Dateien haben eine einheitliche Informationsstruktur d.h. das die Daten sind im Bereich A12:F24 und A25:F45 und D15:H45 auszulesen. Diese Bereiche hab ich einfach mal als Hausnummer genannt.

- Die Dateien sind nicht systematisch benannt sondern haben je nach Bearbeiter unterschiedliche Dateinamen. Diese Dateien sind alle in einem Ordner.

- Ich muss jeden Monat jede Datei einzeln öffnen und die dann in einer Datei zusammenfassen.

- Ich möchte gerne das die Informationen der Dateien in einer einzelnen Datei zusammengefasst werden bzw. erscheinen.

Falls es möglich ist mit VBA es zu programmieren dann wäre ich sehr DANKBAR WENN mir einer hilft. Das ich ein Anfänger bzw. keine Ahnung vom VBA habe will ich euch schon mal vorher Bescheid sagen.


VG

BEG
Ergänzung ()

Hallo Günther,

jetzt hab ich es mal anders formuliert, da ich die information bekommen habe das ich in Zukunft in einer einheitlichen Form die Dateien bekommen werde.
 
Zurück
Oben