388 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,
ich habe ein Arbeitsblatt mit vielen Abfragen per Activex-Optionsfeldern, die mit ja/nein oder auch mehreren verschiedenen Optionen ausgewählt werden. Nun sollen diese Abfragen auf ein neues Arbeitsblatt in der gleichen Arbeitsmappe übertragen werden. Wenn also auf Blatt1 nein angekreuzt ist, soll auf Blatt 2 (Kopie von 1) der Punkt automatisch übertragen werden.
Hintergrund ist eine Abfrage von Eigenschaften eines Klienten.
Ich hoffe, es kann jemand helfen.

5 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ich nehme mal an, dass die OptionButtons auf den beiden Tabellenblättern jeweils die selbe Nummer haben. Dann probiere mal das folgende Makro:

Private Sub Worksheet_Activate()
Dim obj As Object

For Each obj In ActiveSheet.OLEObjects
If Left(obj.Name, 12) = "OptionButton" Then
obj.Object.Value = Worksheets("Tabelle1").OLEObjects(obj.Name).Object.Value
End If
Next obj

End Sub

Füge das Makro in das VBA-Projekt der Tabelle ein, in die die Daten übertragen werden sollen.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,
erstmal herzlichen Dank! Das Makro funktioniert genau wie ich es wollte, nur ist es leider so, dass, wenn ich zurück zum 1.Blatt schalte, alle Markierungen weg sind.
Also: auf dem Arbeitsblatt 1 Markierungen setzen, Übertragung zu Arbeitsblatt 2 funktioniert. Zurück zu Arbeitsblatt 1: alle Markierungen weg :(
Vielleicht kannst Du mir nochmal helfen :)
Dann hätte ich noch eine Frage: Klappt dies irgendwie auch mit Kontrollkästchen?

Grüße
Uschi
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

falls du nur Checkboxen und Optionsbuttons in deinem Blatt hast, dann kannst du das so lösen:
Private Sub Worksheet_Activate()
Dim obj As Object

For Each obj In ActiveSheet.OLEObjects
obj.Object.Value = Worksheets("Tabelle1").OLEObjects(obj.Name).Object.Value
Next obj

End Sub

Oder falls du sichergehen willst, dann so:
Private Sub Worksheet_Activate()
Dim obj As Object

For Each obj In ActiveSheet.OLEObjects
If Left(obj.Name, 12) = "OptionButton" Or Left(obj.Name, 8) = "CheckBox" Then
obj.Object.Value = Worksheets("Tabelle1").OLEObjects(obj.Name).Object.Value
End If
Next obj

End Sub

Dass die Markierungen auf dem Arbeitsblatt1 gelöscht werden, kann eigentlich nicht durch das Makro kommen. Bei mir funktioniert der Übertrag und auch im Tabellenblatt 1 sind die Werte noch erhalten. Hast du da vielleicht noch ein andere Makros laufen? Ansonsten lade mal eine Beispieldatei auf einen Hoster deiner Wahl hoch und poste den Link hier, damit man sich mal die Datei anschauen kann.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,
erst einmal herzlichen Dank für die erstklassige Hilfe. Es lag tatsächlich an der Datei. Da diese seit Jahren von verschiedenen Mitarbeitern bearbeitet wurde, haben sich wohl viele Fehler eingeschlichen. Wir hatten uns deshalb entschieden, sie doch komplett neu aufzusetzen. Nun funktionieren die Formeln einwandfrei.
Leider kann ich Deine Antwort noch nicht bewerten, weil es derzeit Probleme mit dem Login neuer Member gibt. Ich werde es aber auf jeden Fall nachholen :)
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Uschi,

danke für die Rückmeldung.

Die Anmeldung neuer Mitglieder funktioniert ja leider seit einiger Zeit nicht mehr :-(.

Gruß

M.O.
...