Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1336to1340
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

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

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

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

Anzeige
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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige