Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Benutzung von Kontrollkästchen

Benutzung von Kontrollkästchen
25.11.2013 14:40:29
Kontrollkästchen
Hallo,
ich bin gerade dabei mir VBA mit Excel näher zu bringen und mich in Welt des Programmierens zu versuchen. Ich habe viele Seiten nach Informationen durchsucht und das Forum nach Lösungsansätzen durchsucht. Leider hat jeder seinen eigenen Stil und auch seine eigene Auffassung von einem Problem. Mit dem Versuch aus den verschiedenen Lsg. etwas zu entnehmen und daraus etwas zusammen zubasteln war nicht von Erfolg gekrönt.So kam der Entschluss, endlich mit den Grundlagen für VBA anzufangen und eigene Projekte von der Pike auf zu basteln. Zu meinem Problem:
Ich habe 235 verschiedene Zeilen, welchen einen String beinhalten. Angefangen bei A101,A102..A999.Diese sind auf dem letzten Tabellenblatt vermerkt. Hier habe ich hinter den Zellen (A101,A413 etc) ein Kontrollkästchen platziert. Sobald ich das Häkchen setze, soll der String auf dem ersten Tabellenblatt1 in der Spalte A Zeile 2 eingefügt werden. Wird das nächste Häkchen gesetzt, soll das Makro selbstständig den Wert von TB3 unter dem ersten Wert von TB1 eintragen. A101, darunter z.B. A413, je nachdem was ausgewählt wurde. Vorher muss immer die Zelle untersucht werden ob Sie leer ist.
IsEmpty hat laut Excel-Hilfe immer den Wert True oder False. Leider habe ich noch keine passende Abbruchbedingung realisieren können.
Folgenden Code habe ich soweit alleine erstellt.

Sub Aggregate3()
ThisWorkbook.Worksheets("Tabelle1").Activate Dim i As Integer Zeile5: For i = 2 To 9 '7 Zellen zum testen des Codes statt der 235 If IsEmpty(Cells(i, 1)) Then 'erst soll die untersucht werden ob Zelle leer ist Worksheets("Tabelle3").Range("A2").Copy Destination:=ThisWorkbook.Worksheets("Tabelle1"). _ Cells(i, 1) If i > 0 Then i = i + 1'wenn Zelle nicht leer, dann eine Zelle weiter End If If i > 0 Then Exit For 'wenn Wert kopiert wurde For beenden MsgBox "klappt" Next i End Sub Ihr werdet vielleicht sagen, das es viel zu Umständlich ist für alle 235 Zeilen ein Kästchen _ anzulegen und diese mit einem eigenem Makro zu belegen. Für Hinweise und Tipps über einen _ leichteren Weg bin ich natürlich offen! Viele Grüße Jens

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Benutzung von Kontrollkästchen
25.11.2013 15:35:29
Kontrollkästchen
Hallo Jens,
Statt Kontrollkästchen würde ich einen Button in der Menüleiste erstellen, oder über Tastenkombination belegen.
Da Makro das aufgerufen wird, kopiert dann die ausgewählte Zelle.
Sub KopierMal
LetzteZeile = sheets("Tabelle1").range("A" & sheets("Tabelle1").rows.count).end(xlup).row
selection.copy sheets("Tabelle1").range("A" & LetzteZeile
End Sub
Gruß,
Günther

Anzeige
AW: Benutzung von Kontrollkästchen
26.11.2013 16:14:12
Kontrollkästchen
Hallo Günther,
danke für deine Antwort. Es ist zwar mit deinem Ansatz auch eine Idee, aber ich möchte es gerne so haben, dass derjenige nicht die Zelle erst markieren muss. Vielleicht wäre eine UserForm mit Listenfeld auch eine Option.
Gruß
Jens

AW: Benutzung von Kontrollkästchen
27.11.2013 20:42:13
Kontrollkästchen
Wie wäre es mit folgendem?
Code in Tabelle3 kopieren (nicht in ein Modul)
Das ganze gibts auch mit Rechtsklick bzw. doppelklick
Man muss noch die Range anpassen wo das Makro getriggert wird
Mann kann die Zelle, ie man anklickt auch noc andersfarbig markieren, damit man weiß was man bereits hat bzw. damit auch abfragen ob diese schon kopiert wurde und ein erneutes kopieren verhindern.
Am besten ist es wenn mal ein Beispiel postest. ^^
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' wenn mehr als eine Zelle markiert wird nichts tun
If Target.Count > 1 Then Exit Sub
'Code im entsprechenden Tabellenblatt einfügen wo die Daten liegen
'mit Intersect + Range("A1:A235") kann man den Bereich begrenzen wo das Makro startet
If Not Application.Intersect(Target, Range("A1:A235")) Is Nothing Then
'events ausschalten damit es nicht in einer Endlosschleife endet
Application.EnableEvents = False
'mit Blatt 1 (damit der Folgecode nicht zu lang wird)
With ThisWorkbook.Worksheets("Tabelle1")
If .Range("A2") = "" Then
.Range("A2") = Target 'Wenn A2 leer ist
Else
If .Range("A3") = "" Then
.Range("A3") = Target 'wenn A3 leer ist
Else
' ansonsten von A2 runter bis zur letzten befüllten Zelle + 1 Zeile
.Cells(.Range("A2").End(xlDown).Row + 1, 1) = Target
End If
End If
End With
'Events wieder einschalten
'bricht der Code früher ab das einschalten in einem separaten sub manuell ausführen
Application.EnableEvents = True
End If
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige