MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 15.03.2019, 08:04   #1
BlakeRock
Neuer Benutzer
Neuer Benutzer
Standard VBA - Checkbox zum Erstellen & Löschen von Spalten in Word-Tabelle

Guten Morgen,

das ist das erste Mal, dass ich mich mit einem Problem außerhalb der eigenen Suchergebnisse bewege.
Leider komme ich momentan nicht voran und vermute, dass der Teufel im Detail steckt.

Folgende Aktion soll möglich sein:
Ich habe eine Tabelle (in diesem Fall Tabelle Nr 3), in der die erste Spalte immer gleich bleibt. Beim aktivieren/deaktivieren verschiedener Checkboxen soll dann entweder die eine jeweilige neue Spalte hinzugefügt werden.

Bsp: Es gibt 5 Checkboxen (Auto, Boot, Moped, LKW, Fahrrad)
Wenn alle Checkboxen aktiviert sind, sollen alle Spalten angezeigt werden.
Sobald eine Checkbox abgewählt wird, soll genau diese Spalte auch wieder komplett verschwinden.

Derzeitige Lösung sieht vor beim Aktivieren, einfach eine entsprechende Spalte hinzuzufügen, mit dem Text in der ersten Zeile.
Ich habe auch eine For-Schleife geschrieben, in der die erste Zeile auf den Inhalt der Checkbox geprüft wird, um diese positiven Ergebnis zu löschen.
Und da ist der Haken. Aus ominösen Gründen habe ich da scheinbar Grütze rein programmiert, weshalb das Löschen einer speziellen Spalte der Tabelle nicht funktioniert.

Anbei auch gleich der Quelltext einer Checkbox mit meinem letzten Stand.
Anmerkung: ich habe auch bereits versucht die Zelle zu selektieren und diese mit dem zu enthaltenden Wert zu vergleichen.
Das hat leider auch nur bedingt zu Erfolg geführt.

Ich bedanke mich bereits vorab für die Unterstützung und Hilfe!!

PS: Wenn man beim Hinzufügen auch noch die Chronologische Reihenfolge beachten könnte, wäre das absolut genial.

Code:

Private Sub AUTOcheck_Click()
Call AUTO
End Sub

Private Sub AUTO()
On Error GoTo fehler
    If AUTOcheck.Value = True Then
        With ActiveDocument.Tables(3)
            .Columns.Add.Select
            Selection.TypeText Text:="Auto"
        End With
    Else
        Dim Spaltenzahl As Long
        Dim Spalte As Long
        Dim i As Long
        Spaltenzahl = ActiveDocument.Tables(3).Columns.Count
        For i = 1 To Spaltenzahl
            Spalte = i
            If ActiveDocument.Tables(3).Cell(1, Spalte).Range.Find.Text = "Auto" Then
                ActiveDocument.Tables(3).Columns(Spalte).Delete
            End If
        Next i
    End If
Exit Sub
fehler:
MsgBox Err.Number & " - " & Err.Description
End Sub
BlakeRock ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 09:20   #2
BlakeRock
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ok, eine Rauchen, Kopf frei bekommen und schon bekommt man die Lösung doch selbst hin.

Quelltext sieht nun so aus:
Code:

Private Sub AUTOcheck_Click()
Call AUTO
End Sub

Private Sub AUTO()
On Error GoTo fehler
    If AUTOcheck.Value = True Then
        With ActiveDocument.Tables(3)
            .Columns.Add.Select
            Selection.TypeText Text:="Auto"
        End With
    Else
        Dim i As Long
        For i = 1 To ActiveDocument.Tables(3).Columns.Count
            If InStr(ActiveDocument.Tables(3).Cell(1, i), "Auto") Then
                ActiveDocument.Tables(3).Columns(i).Delete
                On Error Resume Next
            End If
        Next i
    End If
Exit Sub
fehler:
MsgBox Err.Number & " - " & Err.Description
End Sub
Wenn wir nun vielleicht doch noch jemand helfen könnte, wie ich bestimmen kann, wo die neue Spalten einfügen kann, wäre ich sehr dankbar.
Wie bereits erwähnt, ist die Reihenfolge der 5 Checkboxen vorgegeben und an die jeweilige chronologische Folge sollte die Spalte eingefügt werden, egal, ob Einträge vorher/nachher schon vorhanden (aktiviert über Checkbox) sind.

Danke!
BlakeRock ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 10:43   #3
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo BlakeRock,

"Wie bereits erwähnt, ist die Reihenfolge der 5 Checkboxen vorgegeben und an die jeweilige chronologische Folge sollte die Spalte eingefügt werden, egal, ob Einträge vorher/nachher schon vorhanden (aktiviert über Checkbox) sind."

Das versteh ich noch weniger als deine Beschreibung im ersten Beitrag. Was hat "chronologisch" (also zeitlich) mit der Reihenfolge der Checkboxen (also örtlich) zu tun? Kannst du mal ein Musterdokument hochladen, in dem du zeigst, wann wo welche Spalte einzufügen ist?

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.03.2019, 12:57   #4
BlakeRock
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard,

danke für deine Antwort.
Ich versuche es noch einmal anders zu erklären:

Ich habe 5 Checkboxen & eine Tabelle, in der die erste Spalte immer fest mit Inhalten und 3 Zeilen ist und bleibt (Tabelle Nr 3 im Dokument).
Die Checkboxen sind bspw. mit:
1: Auto
2: Moped
3: Boot
4: LKW
5: Fahrrad
betitelt.

Beim Auswählen einer Checkbox soll entsprechend eine neue Spalte mit "Auto", "Moped" ... usw hinzugefügt werden.
Beim Abwählen der Checkbox dann genau diese Spalte wiederum entfernt.
Das klappt ja nun mit dem zuletzt geposteten Quellcode.

Derzeit ist es aber so, dass beim Auswählen der Checkbox die Spalte immer ans Ende der Tabelle kommt.
Ich hätte es aber gern so, dass wenn bspw. bereits die Checkboxen 1,3,4,5 ausgewählt sind, beim Drücken der Checkbox 2, die Spalte auch zwischen 1 und 3 angelegt wird.

Konkret: Wenn vorher die Spalten "Auto", "Boot", "LKW", "Fahrrad" vorhanden waren, soll beim Drücken der Checkbox 2 die Spalte mit "Moped" zwischen den Spalten "Auto" und "Boot" angelegt werden.
Die einzige Idee dazu wäre auch wieder eine relativ komplizierte Schleife zu schreibe, in der für jede Checkbox selbst geprüft wird, ob die davor oder danach liegende Spalte vorhanden ist.
Problematisch wird es allerdings, wenn ich bspw. nur die Spalten 1: "Auto" und 5: "Fahrrad" habe und die Spalte 3: "Boot" hinzugefügt haben möchte.
Daran hängt es derzeit.

Ich hoffe ich konnte es etwas eindeutiger beschreiben.
Danke dennoch schon einmal für die Unterstützung!
BlakeRock ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.03.2019, 15:58   #5
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo BlakeRock,

"Problematisch wird es allerdings, wenn ich bspw. nur die Spalten 1: 'Auto' und 5: 'Fahrrad' habe und die Spalte 3: 'Boot' hinzugefügt haben möchte. Daran hängt es derzeit".
Bei mir auch, und zwar, weil du in einer zweispaltigen Tabelle keine Spalte 5 haben und keine Spalte 3 zwischenschieben kannst.

Eine Lösungsmöglichkeit wäre, wenn man jedesmal nach Auswahl der Checkboxen erst mal alle Tabellenspalten außer der fixen Spalte 1 entfernt und dann neu anhängt.
Ob das sinnig ist, hängt auch davon ab, welcher Tabelleninhalt wo restauriert werden müsste.

Damit du weißt, was ich meine, hab ich ein einfaches Beispiel angehängt. Allerdings mit Inhaltssteuerelementen, weil mir das leichter fällt. Active-X-Checkboxen müssten aber auch hinzukriegen sein. Das Makro startet, wenn du, nach Auswahl der Checkboxen, in der Schnellzugriffsleiste auf das Gittersymbol klickst.
Angehängte Dateien
Dateityp: dotm TabelleNeuAufbauen.dotm (38,3 KB, 1x aufgerufen)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.