Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
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

Makro der alrltiven Tabelle übergeben

Makro der alrltiven Tabelle übergeben
05.12.2019 18:33:33
Mexcel
Hallo liebe Excel Gemeinde,
ich habe ein Projekt in dem ich für jede KW eine eigene Tabelle angelegt habe, diese beinhalten kombinationsfeldern um Zellen auszufüllen. Ich habe in den Tabellen jeweils ein malro dass mir nach der Verwendung das kombinationsfeld ausblendest. Funktioniert auch ganz gut. Allerdings ist es jetzt sehr langsam geworden durch die vielen Makros. Ich wollte nun das makro im Modul ablegen und auf die geöffnete Tabelle Anwenden, weiß aber nicht wie ich die Zuordnung richtig hin bekomme.
Ich hoffe ihr könnt mir dabei helfen.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro der alrltiven Tabelle übergeben
05.12.2019 18:48:21
volti
Hallo Mexcel,
die gerade aktive Tabelle sprichst Du mit ActiveSheet. an.
Für mehr Hilfe müsste man dann mal Deinen Code sehen..
viele Grüße
Karl-Heinz
AW: Makro der alrltiven Tabelle übergeben
05.12.2019 19:18:18
Mexcel
Habe leider gerade nur Bilder vom Code.
Sub ActiveSheet_Change(ByVal Target as Range)
If Range("C").Value >0 then
ComboBox1.Visible = false
Else
ComboBox1.Visible = true
End If
End Sub

So schaut ein Teil aus, steht im Modul 2 und funktioniert nicht.
AW: Makro der alrltiven Tabelle übergeben
05.12.2019 19:47:03
volti
Hi,
versuch es mal so:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 With ActiveSheet.Shapes("ComboBox1")
'If Range("C").Value  ist unvollständig, weil ohne Zeilenangabe
  If Target.Value > 0 Then
     .Visible = False
  Else
     .Visible = True
  End If
 End With
End Sub

viele Grüße
Karl-Heinz


Anzeige
AW: Makro der alrltiven Tabelle übergeben
05.12.2019 20:57:58
onur
Du meinst wohl:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dein Code blendet die Combobox schon ein bzw aus, sobald irgend eine Zelle mit einem Wert über 0 angewählt wird.
Ausserdem müsste man wissen, WELCHE Zelle das Ein/Ausblenden auslesen soll.
AW: Makro der alrltiven Tabelle übergeben
05.12.2019 21:08:57
Mexcel
Danke ich werde es morgen mal testen. Ja war ein fluchtigkeitsfehler. Sollte C5 heißen.
AW: Makro der alrltiven Tabelle übergeben
05.12.2019 23:20:14
volti
Hallo Mexcel,
mit Deiner Zusatzinformation (fehlende C5) und onur's berechtigtem Einwand (hatte mich verklickt) denke ich jetzt die Aufgabenstellung richtig verstanden zu haben:
Wenn in C5 eines Blattes ein Wert>0 steht wird die Combobox ausgeblendet und der Unterstellung,
dass es sich bei den Comboboxen um Active-X-Steuerelemente handelt, kann ich Dir folgende Vorschläge machen:
Variante 1 (Makro in Modul2, Trigger in jedem gewünschten Blatt:
In jedes Tabellenmodul einfügen
Private Sub Worksheet_Change(ByVal Target As Range)
  Call Ein_Ausblenden(Target)
End Sub

Ins Modul2 einfügen
Option Explicit
Sub Ein_Ausblenden(Target As Range)
'Ein/Ausblenden, wenn in C5 änderung erfolgt
 If Target.Address = "$C$5" Then
  With ActiveSheet.Shapes("ComboBox1")
    If Target.Value > 0 Then
       .Visible = False
    Else
       .Visible = True
    End If
  End With
 End If
End Sub


Die Ein/Ausblendung passiert nur, wenn in C5 eine Änderung erfolgte und nicht nach Änderungen in anderen Zellen!
Variante 2 (Makrocode und Trigger nur einmal im DieseArbeitsmappe:
In DieseArbeitsmappe einfügen
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 'Ein/Ausblenden, wenn in C5 eines Blattes eine Änderung erfolgt
 On Error GoTo Fehler
 If Target.Address = "$C$5" Then
  With Sh.Shapes("ComboBox1")
    If Target.Value > 0 Then
       .Visible = False
    Else
       .Visible = True
    End If
  End With
 End If
Fehler:
End Sub


PS: Beispiel 2 reagiert bei Änderungen in allen Arbeitsblättern. Die On error Anweisung bewirkt, dass evtl. Blätter ohne Combobox keinen Fehler erzeugen.
viele Grüße
Karl-Heinz
Anzeige
AW: Makro der alrltiven Tabelle übergeben
06.12.2019 11:05:12
volti
Hallo Mexcel,
das konnte ja nicht funktionieren, da keine der Vorraussetzungen zutraf:
- Es ist nicht wie angenommen eine, sondern es sind mehrere Comboboxen (CB) je Blatt vorhanden
- Die CB heißen auch nicht "Combobox1" etc. sondern "Auswahlzeile1" etc.
- Außerdem sind es keine Active-X-Elemente, sondern Formblattsteuerelemente
- In Zelle $C$5 wird nichs eingegeben, sondern da steht eine Formel, diese triggert bei Änderungen nichts
- Nach Änderungen im Blatt wird nur die Zelle $C$5 ausgewertet, diese wirkt dann auf alle Comboboxen gleich, das ist sicher nicht das Ziel
Ich habe Dir in Deine Mappe (Achtung, nur abgespecktes Muster, weil zu groß für Upload) im Modul2 und in DieseArbeitsmappe mal was eingebaut, bitte schau mal, ob das jetzt besser passt.
Die CB werden jedoch erst ausgeblendet, wenn in der betreffenden Zeile irgendwo eine Änderung/Eingabe erfolgt
Soll sofort nach Auswahl aus einer CB die Ausblendung passieren, müsstest Du für jede CB eine Sub haben...
PS: In Tabelle KW01 ist auch noch ein Schreibfehler: Worksheet_Cahnage
BTW: Ich glaube auch, dass die Langsamkeit eher an den vielen Formeln als an den Makros liegt.
https://www.herber.de/bbs/user/133641.xlsm
viele Grüße
Karl-Heinz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige