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

Identische-Tabellen-identische Sub's funktionieren nicht...

Forumthread: Identische-Tabellen-identische Sub's funktionieren nicht...

Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 17:42:10
Martin
Hallo zusammen,

vor einiger Zeit hatte ihr mir geholfen eine Funktion für die Auswahl von bestimmten Zeilen bereits in Excel zu treffen und dann erst an Seriendruck in Word zu übergeben. Dazu wurde eine Spalte "S.-Druck" in meine Tabelle eingefügt über die ich mit der li. Maustaste eine Auswahl (X) treffen kann, und mit der re. Maustaste diese wieder abwählen kann. Das funktioniert auch tadellos in diesem einem Arbeitsblatt meiner Mappe. Nun habe ich aber fünf (verschiedene Jahre) Arbeitsblätter in meiner Mappe mit identischen Tabellen. Ich habe der Einfachheit halber einfach die beiden Sub in jedes Arbeitsblatt kopiert, aber es funktioniert leider nur in diesem einem Arbeitsblatt das ich zuerst angelegt hatte, nicht in den anderen mit den identischen Tabellen, die ich danach angelegt habe. Die Erklärung zu diesem Code habe ich zwar im Internet gefunden, doch verstehe ich trotzdem nicht warum es nicht in jedem Arbeitsblatt funktioniert. Es wird doch damit in jeder Tabelle die erste Spalte angesprochen.

Eine Lösung hierzu würde mir sehr helfen und ich bedanke mich vorab für jeden Vorschlag.

Viele Grüße
Martin





Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range(Me.ListObjects(1).ListColumns(1).DataBodyRange.Address)) Is Nothing Then
If Target.Column = 1 And Target.Row > 1 And Target.CountLarge = 1 Then Target.Value = "X"
End If
End Sub
----
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(Me.ListObjects(1).ListColumns(1).DataBodyRange.Address)) Is Nothing Then
If Target.Column = 1 And Target.Row > 1 And Target.CountLarge = 1 Then Target.Value = vbNullString: Cancel = True
End If
End Sub
Anzeige
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 18:09:19
Uduuh
Hallo,
funktioniert in meinem Nachbau.

Gruß aus'm Pott
Udo
Nachtrag
07.10.2025 18:19:53
Uduuh
Hallo,
prinzipiell reicht
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Me.ListObjects(1).ListColumns(1).DataBodyRange) Is Nothing Then
If Target.CountLarge = 1 Then Target.Value = "X"
End If
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Me.ListObjects(1).ListColumns(1).DataBodyRange) Is Nothing Then
If Target.CountLarge = 1 Then Target.Value = vbNullString: Cancel = True
End If
End Sub

Die Prüfung der Zeile und der Spalte ist überflüssig, da schon vorher erfolgt.

Gruß aus'm Pott
Udo
Anzeige
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 18:24:32
daniel
Hi
schwer zu sagen.
prinzipiell sollte es funktionieren, wenn die Blätter tatsächlich identisch sind.
vermutlich sind sie es nicht (daher wäre es gut, wenn du mal die Datei hochladen würdest)

Hast du in allen Blättern eine "intelligente Tabelle" angelegt?
Hast du auf allen Blättern genau eine "intelligente Tabelle" oder vielleicht mehrere
beginnt diese "intelligente Tabelle" auf allen Blättern in der Zelle A1?

letzteres ist erforderlich, weil du in der Prüfung, ob die Aktion durchgeführt werden soll, einmal auf die relative Position in der "intelligenten Tabelle" prüfst, aber dann noch ein zweites mal auf die absolute Position im Tabellenblatt, nämlich Spalte A.
Wenn deine "intelligente Tabelle" auf den anderen Blättern in Spalte B beginnt, dann schließen sich beide Prüfungen gegenseitig aus.

also entweder prüfst du nur auf die "intelligente Tabelle", die dann irgendwo auf dem Blatt platziert sein darf:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.CountLarge = 1 then
If Not Intersect(Target, Range(Me.ListObjects(1).ListColumns(1).DataBodyRange.Address)) Is Nothing Then
Target.Value = "X"
End If
End If
End Sub


oder du prüfst immer in der Spalte A, egal ob es auf dem Blatt eine "intelligente Tabelle" gibt oder nicht
dann kannst du noch hinzunehmen, dass unterhalb der Daten nicht mehr markiert werden darf.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Column = 1 And Target.Row > 1 And Target.CountLarge = 1 And Target.Row = Cells.SpecialCells(xlcelltypelastcell).Row Then Target.Value = "X"
End Sub


für das zweite Makro dann analog.

Gruß Daniel

Anzeige
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 18:34:21
Ulf
Hi,
wenn du mehrere Tabellen in einem Blatt hast...
Im Anhang ein Vorschlag für die Workbook-Abteilung, wo du die Namen der anzusprechenden Tabellen ungeachtet des Blattes eintragen kannst/musst.
Unter DieseArbeitsmappe speichern.
https://www.herber.de/bbs/user/179126.xlsm
Option Explicit


Public varTabellen

Public Sub initTabellen()
varTabellen = Array("Tabelle1", "Tabelle12", "Tabelle13", "Tabelle14", "Tabelle15", "Tabelle16")
End Sub

Private Sub Workbook_Open()
initTabellen
End Sub

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim lngZ As Long
Dim lObj As ListObject
initTabellen
For lngZ = 0 To UBound(varTabellen)
For Each lObj In Sh.ListObjects
If lObj.Name = varTabellen(lngZ) Then
If Not Intersect(Target, Range(lObj.ListColumns(1).DataBodyRange.Address)) Is Nothing Then
If Target.Column = 1 And Target.Row > 1 And Target.CountLarge = 1 Then
Target.Value = vbNullString
Cancel = True
Exit Sub
End If
End If
End If
Next lObj
Next
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim lngZ As Long
Dim lObj As ListObject
initTabellen
For lngZ = 0 To UBound(varTabellen)
For Each lObj In Sh.ListObjects
If lObj.Name = varTabellen(lngZ) Then
If Not Intersect(Target, Range(lObj.ListColumns(1).DataBodyRange.Address)) Is Nothing Then
If Target.Column = 1 And Target.Row > 1 And Target.CountLarge = 1 Then
Target.Value = "X"
Exit Sub
End If
End If
End If
Next lObj
Next
End Sub

hth
Ulf
Anzeige
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 18:35:58
Martin
Danke an alle,

ich erstelle eine Kopie meine Excel Mappe und muss vorab aber einige Daten entnehmen...
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 18:53:31
Martin
Hallo zusammen,

ich habe meine abgespeckte Datei für euch hochgeladen...

https://www.herber.de/bbs/user/179127.xlsm
Anzeige
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 19:14:13
daniel
Der Code steht nur im Tabellenblatt 2025, in den anderen Blättern nicht
also kann die Aktion auch nur dort durchgeführt werden

Außerdem hat auch nur das Tabellenblatt 2025 und das Blatt Ergebnis eine intelligente Tabelle, die anderen Blätter nicht.
Nachdem ich dir diese Problematik bereits geschildert hatte, hättest du bereits darauf eingehen können, anstatt nur stumpf die Datei hochzuladen.
Wenn du Hilfe willst, solltest du diese auch annehmen und dies zeigen, in dem du auf sie reagierst.

aber egal.

wenn du mehrere Blätter hast und es mal eine Intelligente Tabelle geben kann und mal nicht, dann probier mal diese beiden Makros.
sie müssen ins Modul "DieseArbeitsmappe" und sind damit Eventmakros, die für jedes Tabellenblatt der Datei wirksam sind, so dass man sie für mehrere Blätter nicht wiederholen muss, sondern nur einmalig schreibt.

die Prüfung ob, das Makro ausgeführt werden soll oder nicht, findet jetzt dadurch statt, dass geprüft wird, ob in einer Zelle oberhalb der angeklickten Zelle in der selben Spalte der Text "S.-Druck" steht. Damit ist es egal, ob du eine intelligente Tabelle hast oder nicht, und es spielt auch keine Rolle, wo sich diese Spalte befindet. Sie könnte theoretisch in jedem Blatt in einer anderen Spalte liegen:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

If Target.Row > 1 Then _
If Target.CountLarge = 1 Then _
If WorksheetFunction.CountIf(Range(Target.Offset(1 - Target.Row, 0), Target.Offset(-1, 0)), "S.-Druck") Then _
Target.ClearContents: Cancel = True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Row > 1 Then _
If Target.CountLarge = 1 Then _
If WorksheetFunction.CountIf(Range(Target.Offset(1 - Target.Row, 0), Target.Offset(-1, 0)), "S.-Druck") Then _
Target.Value = "X"
End Sub


wie gesagt, diese beiden Makros ins Modul "DieseArbeitsmappe" einfügen. In den anderen Tabellenblättern benötigst du dann das SelectionChange und das BeforeRightClick-Event nicht mehr.

Gruß Daniel
Anzeige
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 19:21:55
Martin
Hallo Daniel,

ich habe die Codes in den anderen Arbeitsblättern extra heraus genommen.

Denn jedes mal wenn ich ein Arbeitsblatt angeklickt habe, wurde ein Fehler gemeldet und Excel hatte sich komplett aufgehängt. Das wollte ich vermeiden bevor ich sie hochlade.

Sorry das ich das vorhin nicht erwähnt habe, das war keine Absicht... meine Kopie zu erstellen hatte sich mit deiner/eurer Antwort überschnitten

Generell versuche ich jede Antwort umzusetzen und euch dann Bescheid über Erfolg oder Misserfolg zu geben. Auch bedanke ich mich gerne für jede Hilfe.

Anzeige
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 19:27:04
Martin
Auch an die anderen,

erst mal danke für eure Mühe und Hilfe und sorry das ich nicht gleich auf alle Antworten eingegangen bin so lange ich mit der Kopie beschäftigt war.

Kommt nicht mehr vor.

Viele Grüße

Martin
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 19:28:54
daniel
"Denn jedes mal wenn ich ein Arbeitsblatt angeklickt habe, wurde ein Fehler gemeldet und Excel hatte sich komplett aufgehängt. Das wollte ich vermeiden bevor ich sie hochlade."
ja das hätte dir zu denken geben sollen und du hättest dich mal fragen sollen, was dafür die Ursache sein könnte und worin sich denn das Blatt, in dem der Code funktioniert von den Blättern unterscheidet, in denen er nicht funktioniert.
die Antwort wäre gewesen, dass diese Blätter keine "intelligenten Tabellen" bzw in VBA "ListObjects" genannt enthalten, du diese aber im Makro versuchst zu referenzieren. Auch das hatte ich erwähnt.
Gruß Daniel
Anzeige
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
07.10.2025 19:36:19
Martin
Das hatte ich ja auch versucht herauszufinden. Doch das es an der intelligenten Tabelle liegt habe ich nicht beachtet und ist mir ehrlich gesagt (auch von deiner erstmaligen Hilfe) nicht mehr eingefallen. Deswegen habe ich deine Antwort nicht gleich umgesetzt und getestet, sondern die Datei versucht schnell hoch zuladen.

Passiert mir nicht nochmal, danke.

Gruß

Martin
Anzeige
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
08.10.2025 14:17:39
JoWE
Hallo Martin,
klappt denn jetzt alles wie von Dir gewünscht?
Gruß Jochen
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
08.10.2025 17:58:20
Martin
Hallo Jochen,
hallo Daniel,

nur kurz zur Info... angefangen habe ich schon, doch leider werde ich erst morgen dazu kommen alles umzusetzen und gebe dann Bescheid.

Gruß

Martin
AW: Identische-Tabellen-identische Sub's funktionieren nicht...
10.10.2025 13:20:43
Martin
Hallo Jochen,
hallo Daniel,

ich habe nun alle Tabellen meiner Arbeitsmappe in intelligente Tabellen umgewandelt und trotzdem die beiden Makros in das Modul Diese Arbeitsmappe" eingefügt und die anderen gelöscht. Und es funktioniert alles wie gewünscht.

Nochmals danke für euere Unterstützung.

Gruß

Martin
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige