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

Ergebnisformel und Sperrung Intelligente Tabelle

Ergebnisformel und Sperrung Intelligente Tabelle
01.02.2024 13:32:07
FranziskusV
Hallo,

Ich habe ein Intelligente Tabelle mit einigen Daten in einem Projekt das schon recht weit fortgeschritten ist.
Diesbezüglich stelle ich mir jedoch noch 4 Fragen an denen ich mir derzeit noch die Zähne ausbeisse.

Ich werde es leider ohne Hilfe nicht schaffen. Darum stelle ich auch eine Musterdatei ein.

https://www.herber.de/bbs/user/166686.xlsm

Drei meiner Fragen betreffen nur Excel.
Die vierte Frage 4 betrifft VBA.

Frage 1 :
Ich möchte in einer Spalte der intelligenten Tabelle einen Datumswert ausgegeben bekommen für die letzte Zeile bei der in einer anderen Spalte ein Validierung der Eingaben
in der Zeile mit "Ja" erfolgt ist.

Frage 2 :
Ausserdem möchte ich einen korrektes Monats-Enddatum erhalten. Ausgehend von einem Stichdatum. Derzeit spuckt meine Formel das Enddatum des ersten Folgemonats nach dem Stichdatum aus.

Frage 3 :
Ich bekomme einen Zellwert in der Tabelle nicht angezeigt und verstehen nicht warum. In der restlichen Spalte klappt es.

Frage 4 (mit VBA) :
Über das Ereignis "Worksheet_Change" möchte ich in einer Zeile (der Intelligenten Tabelle) alle Zellen sperren wenn der letzten Spalte eine Validierung mit "Ja" erfolgt ist.

Ich freue mich auf alle Tipps und Vorschläge.

LG,
FranziskusV



18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ergebnisformel und Sperrung Intelligente Tabelle
01.02.2024 13:45:17
SF
Hola,
1:
=VERWEIS(2;1/(R9:R13="ja");A9:A13)
2:
weil du in der Formel auf R8 verweist
3.
in der Formel steht zum Einen #BEZUG, zum anderen soll das Monatsende von B32 ausgegeben werden, B32 ist leer.
Um das Monatsende des Datums aus B4 zu erhalten: =MONATSENDE(B4;0)
4.
VBA hab ich keine Ahnung.
Gruß,
steve1da
AW: mit VBA Zeile von Int. Tabelle sperren bei Validierung
01.02.2024 15:20:35
FranziskusV
Fragen 1-3 geklärt dank Steve.

Frage 4 mit VBA-Code bleibt offen.
Wie kann ich eine gesamte Zeile einer Intelligenten Tabelle gekoppelt an das 'Worksheet_Change" -Ereignis
AW: mit VBA Zeile von Int. Tabelle sperren bei Validierung
01.02.2024 20:38:18
Yal
Bonjour Francois*,

probiere
Private Sub Worksheet_Change(ByVal Target As Range)

'wir gehen davon aus, dass auf diesem Blatt (=Worksheet) nur eine Tabelle (=Listobject) sich befindet
With ListObjects(1)
If Not Intersect(Target, .ListColumns(.Columns.Count)) Is Nothing Then
If Target.Value Then 'kurzversion von Target.Value = True
ActiveSheet.Unprotect
Intersect(.DataBodyRange, Target.EntireRow).Locked = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
End If
End If
End With
End Sub

(*: le c-cédille, les allemands connaissent pas)

VG
Yal / Benediktus I
Anzeige
AW: mit VBA Zeile von Int. Tabelle sperren bei Validierung
01.02.2024 21:31:50
FranziskusV
Hallo Benedict,
Danke für deine Antwort. Sie hilft mir schon weiter.

Übrigens, ja,, ich bin Belgier. Es muss ja auch solche geben.

Vielen Dank für deine Antwort. Allerdings gibt es auf dem Tabellenblatt mit dem ich tatsächlich arbeite und nicht im Muster durchaus mehrere Intelligente Tabellen (Listobject). Insgesamt 3. Ich vermute, dass inden Klammern

With ListObjects(1)


der Index der Intelligenten Tabelle steht ? Jedenfalls wäre es sinnvoll diese über den Index anzusprechen.

Kannst du mir das noch sagen ? Notfalls anpassen ?
Dann noch eine Frage zur Sicherheit. Denn ich habe vor das Tabellenblatt zu duplizieren...es dürfen dann keine Bugs kommen. Der Index für Intelligente Tabellen (Listobjekt) wir ja immer für jedes Tabellenblatt (Worksheet) vergeben ?

Gruss,
FranzikusV
Anzeige
AW: mit VBA Zeile von Int. Tabelle sperren bei Validierung
01.02.2024 23:17:27
Oberschlumpf
Hi,

a) zumindest bei mir funktioniert deine Datengültigkeit in Spalte R mit =JaNein nicht (fehlt in der Bsp-Datei vllt ein 2-ZellenBereich mit Name "JaNein", in dem halt die 2 Werte stehen? Ich musste die Gültigkeit ändern in Ja;Nein

b) ich weiß nicht wieso, aber Yal's Code reagiert bei mir in Zeile If Not... mit Fehler. Liegt vllt daran, dass ich noch MSO 2016 nutze und nicht 365 (das glaub ich als Fehlerquelle aber eigtl nicht, nur was anderes fällt mir nicht ein)

Nach Änderung des Codes zu...


Private Sub Worksheet_Change(ByVal Target As Range)

With ListObjects("TbMonatlicherStand")
If Target.Column = .ListColumns.Count Then
If Target.Value = "Ja" Then 'kurzversion von Target.Value = True
ActiveSheet.Unprotect
Intersect(.DataBodyRange, Target.EntireRow).Locked = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
End If
End If
End With

End Sub

...funktionierts aber auch bei mir

c) Wie du vllt schon bemerkt hast, nutze ich nicht den Index von ListObjects, sondern direkt den Namen der intelligenten Tabelle
So sollte auch eine Kopie des gesamten Blattes keine Probleme bereiten, da ja das ganze Blatt kopiert/eingefügt wird, wobei aber alle verwendeten Namen innerhalb des Blattes keine Änderunhg erhalten - getestet hab ich das allerdings nicht; so nur meine "theoretische" Überlegung.

Ach so:
Eine Datenzeile einmal durch Einsatz von JA geschützt, bleibt bei dem jetzigen Code auch dann geschützt, wenn du den Wert wieder auf NEIN änderst - das wieder Freigeben der Datenzeile müsstest du im Code noch anpassen, bzw hinzufügen.

Hilfts?

Ciao
Thorsten
Anzeige
AW: es funktioniert. Danke !
02.02.2024 12:27:36
FranziskusV
Hallo Thorsten und Benedict,
Vielen Dank für eure Hilfe. Es klappt.
Ich habe den Code noch ein bisschen angepasst um auch eine farbliche Hervorhebung der gesperrten Zellen zu haben und das Ganze mit "Nein" auch wieder rückgängig machen zu können.
Ich bin auch wieder zurück zur Ansprache des Listoject mit dem Index. Denn der Name der Listobjecte ist in der Arbeitsmappe angelegt.
Ob das Probleme macht muss ich noch testen.
Dass die "Auswahlfelder" und bedingten Formate nicht funktionierten in der Musterdatei ist normal, Thorsten.
Falls ich noch weitere "Bauchschmerzen" mit dem Projekt haben sollte werde ich mich nochmals melden.
Gruss,
FranziskusV
Anzeige
AW: mit VBA Zeile von Int. Tabelle sperren bei Validierung
01.02.2024 21:49:53
FranziskusV
Ich muss doch auch irgendwo festlegen welchen Bereich bzw in welcher Spalte ich den Wert "Ja" haben will der dann zur Sperrung der Zeile führt. Das sehe ich im Code noch nicht.
AW: mit VBA Zeile von Int. Tabelle sperren bei Validierung
01.02.2024 23:14:50
Yal
In der Reihenfolge:

Ja, ListObjects(1) greift auf der ersten Tabelle der Auflistung. Man kann alternativ mit dem Namen der Tabelle arbeiten:
ListObjects("tblMaster1")

wichtig ist, dass die Kopie einen Namen bekommen, der sich nachvollziehen lässt: ListObjects("tblKopie_Jan") usw.

im Code bin ich davon ausgegangen, dass die Spalte mit "Ja"/"Nein" die letzte Spalte der Tabelle ist und diese anhand der Anzahl an Spalten adressiert habe:
.ListColumns(.Columns.Count)
.Columns.Count liefert die Anzahl an Spalten, ein ListObject indexiert sein Spalten ab 1 (nicht ab null).

Man kann sich den Index der Spalten auch lesen:
Sub Test()

Dim LR As ListRow
Dim SpNr As Long
Dim Z 'Z comme Zorglub, nein, Z wie Zelle (Hommage à Franquin!)

With ActiveSheet.ListObjects(1)
SpNr = .ListColumns("FromID").Index
For Each LR In .ListRows
Debug.Print "in Spalte 1: " & LR.Range(1).Value & vbTab & "In Spalte Ergebnis: " & LR.Range(SpNr)
Next
'oder wenn nur eine Spalte
For Each Z In .ListColumns(SpNr).DataBodyRange
Debug.Print Z.Value
Next
End With
End Sub


Die Prüfung des Ja habe ich unterschlagen:
If Target.Value Then 'kurzversion von Target.Value = True

eigentlich sollte es
If LCase(Target.Value) = "ja" Then 


VG
Yal
Anzeige
AW: Klappt, aber Problem wenn Code 3 Listobject's betifft
02.02.2024 13:43:57
FranziskusV
Hallo Thorsten,
Ich habe meine Reaktion oben an die falsche Stelle im Thread gesetzt.
Dein Code funktionniert. Danke ! Ich habe eine farbliche Hervorhebung und auch das Entsperren und Entfernen der Hervorhebung noch hinzu gesetzt. Ausserdem ein bisschen mehr Sicherheit gegenüber Endlosschleifen. Auch das hat sehr gut geklappt.

So sieht der Code dann aus.

Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox "Der Code startet"

' Überprüfe, ob Ereignisse aktiviert sind
If Not Application.EnableEvents Then Exit Sub

' Deaktiviere Ereignisse, um Endlosschleifen zu verhindern
Application.EnableEvents = False

With ListObjects(1) ' Anpassung auf Index 1
If Target.Column = .ListColumns.Count Then
ActiveSheet.Unprotect ' Blattschutz aufheben

' Überprüfe, ob in der letzten Spalte "Ja" oder "Nein" steht
If UCase(Target.Value) = "JA" Then
Intersect(.DataBodyRange, Target.EntireRow).Locked = True
Intersect(.DataBodyRange, Target.EntireRow).Interior.Color = RGB(211, 236, 185)
ElseIf UCase(Target.Value) = "NEIN" Then
Intersect(.DataBodyRange, Target.EntireRow).Locked = False
Intersect(.DataBodyRange, Target.EntireRow).Interior.ColorIndex = xlNone ' Zurücksetzen der Hervorhebung
End If

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
End If
End With
End Sub


Das funktioniert also.


Aber wie häufig im Leben gibt es noch ein kleines Aber. Denn eigentlich habe ich auf dem Tabellenblatt 3 verschiedene Listobject's mit Index 1 bis 3. Jedes dieser Listobject's hat eine letzte Spalte wo man validieren können soll. In in diesen intelligenten Tabellen soll bei "Ja" in der letzten Spalte auch die ganze Zeile farblich hervorgehoben und gesperrt werden (bzw bei "Nein" umgekehrt) . Ich habe versucht den Code diesbezüglich umzustricken. Aber das klappt leider nicht.

Mein Versuch sieht so aus :

Private Sub Worksheet_Change(ByVal Target As Range)

' Überprüfe, ob Ereignisse aktiviert sind
If Not Application.EnableEvents Then Exit Sub

' Deaktiviere Ereignisse, um Endlosschleifen zu verhindern
Application.EnableEvents = False

' Durchlaufe alle ListObjects auf dem aktuellen Tabellenblatt
Dim tbl As ListObject
For Each tbl In Me.ListObjects
If Target.Column = tbl.ListColumns.Count Then
Me.Unprotect ' Blattschutz aufheben

' Überprüfe, ob in der letzten Spalte "Ja" oder "Nein" steht
If UCase(Target.Value) = "JA" Then
Intersect(tbl.DataBodyRange, Target.EntireRow).Locked = True
Intersect(tbl.DataBodyRange, Target.EntireRow).Interior.Color = RGB(211, 236, 185)
ElseIf UCase(Target.Value) = "NEIN" Then
Intersect(tbl.DataBodyRange, Target.EntireRow).Locked = False
Intersect(tbl.DataBodyRange, Target.EntireRow).Interior.ColorIndex = xlNone ' Zurücksetzen der Hervorhebung
End If

Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
End If
Next tbl

' Aktiviere Ereignisse wieder
Application.EnableEvents = True
End Sub


Hierbei wird das Listobjekt mit Index 1 korrekt angesprochen und da werden die erwünschten Veränderungen ausgeführt, sowohl mit "Ja" wie mit "Nein".

Bei den beiden anderen Listobjekten mit Index 2 bzw 3 jedoch passiert nichts wenn ich dort versuche mit "Ja" eine Zeile zu validieren (oder eben die Validierung aufzuheben). Mir ist eigentlich klar, dass mein Code nicht funktionieren kann....nur weiss ich nicht wie ich es besser machen könnte. Weitere Hilfe wäre daher schön.

Grundsätzlich könnten auch noch später weitere Listobjecte auf dem Tabellenblatt hinzukommen. Bei diesen sollte dann jedoch nicht jede Zeile validiert werden. Das Ganze soll sich also begrenzen auf Case 1-3 wenn der Index der Listobects entsprechend ist.

Aber das zu machen übersteigt meine Kenntnisse.

Vielleicht findet sich ja noch einmal ein Helfer.

LG,
FranziskusV
Anzeige
AW: Klappt, aber Problem wenn Code 3 Listobject's betifft
02.02.2024 16:27:39
FranziskusV
Hallo Thorsten,
Ich habe meine Reaktion oben an die falsche Stelle im Thread gesetzt.
Dein Code funktionniert. Danke ! Ich habe eine farbliche Hervorhebung und auch das Entsperren und Entfernen der Hervorhebung noch hinzu gesetzt. Ausserdem ein bisschen mehr Sicherheit gegenüber Endlosschleifen. Auch das hat sehr gut geklappt.

So sieht der Code dann aus.

Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox "Der Code startet"

' Überprüfe, ob Ereignisse aktiviert sind
If Not Application.EnableEvents Then Exit Sub

' Deaktiviere Ereignisse, um Endlosschleifen zu verhindern
Application.EnableEvents = False

With ListObjects(1) ' Anpassung auf Index 1
If Target.Column = .ListColumns.Count Then
ActiveSheet.Unprotect ' Blattschutz aufheben

' Überprüfe, ob in der letzten Spalte "Ja" oder "Nein" steht
If UCase(Target.Value) = "JA" Then
Intersect(.DataBodyRange, Target.EntireRow).Locked = True
Intersect(.DataBodyRange, Target.EntireRow).Interior.Color = RGB(211, 236, 185)
ElseIf UCase(Target.Value) = "NEIN" Then
Intersect(.DataBodyRange, Target.EntireRow).Locked = False
Intersect(.DataBodyRange, Target.EntireRow).Interior.ColorIndex = xlNone ' Zurücksetzen der Hervorhebung
End If

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
End If
End With
End Sub


Das funktioniert also.


Aber wie häufig im Leben gibt es noch ein kleines Aber. Denn eigentlich habe ich auf dem Tabellenblatt 3 verschiedene Listobject's mit Index 1 bis 3. Jedes dieser Listobject's hat eine letzte Spalte wo man validieren können soll. In in diesen intelligenten Tabellen soll bei "Ja" in der letzten Spalte auch die ganze Zeile farblich hervorgehoben und gesperrt werden (bzw bei "Nein" umgekehrt) . Ich habe versucht den Code diesbezüglich umzustricken. Aber das klappt leider nicht.

Mein Versuch sieht so aus :

Private Sub Worksheet_Change(ByVal Target As Range)

' Überprüfe, ob Ereignisse aktiviert sind
If Not Application.EnableEvents Then Exit Sub

' Deaktiviere Ereignisse, um Endlosschleifen zu verhindern
Application.EnableEvents = False

' Durchlaufe alle ListObjects auf dem aktuellen Tabellenblatt
Dim tbl As ListObject
For Each tbl In Me.ListObjects
If Target.Column = tbl.ListColumns.Count Then
Me.Unprotect ' Blattschutz aufheben

' Überprüfe, ob in der letzten Spalte "Ja" oder "Nein" steht
If UCase(Target.Value) = "JA" Then
Intersect(tbl.DataBodyRange, Target.EntireRow).Locked = True
Intersect(tbl.DataBodyRange, Target.EntireRow).Interior.Color = RGB(211, 236, 185)
ElseIf UCase(Target.Value) = "NEIN" Then
Intersect(tbl.DataBodyRange, Target.EntireRow).Locked = False
Intersect(tbl.DataBodyRange, Target.EntireRow).Interior.ColorIndex = xlNone ' Zurücksetzen der Hervorhebung
End If

Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
End If
Next tbl

' Aktiviere Ereignisse wieder
Application.EnableEvents = True
End Sub


Hierbei wird das Listobjekt mit Index 1 korrekt angesprochen und da werden die erwünschten Veränderungen ausgeführt, sowohl mit "Ja" wie mit "Nein".

Bei den beiden anderen Listobjekten mit Index 2 bzw 3 jedoch passiert nichts wenn ich dort versuche mit "Ja" eine Zeile zu validieren (oder eben die Validierung aufzuheben). Mir ist eigentlich klar, dass mein Code nicht funktionieren kann....nur weiss ich nicht wie ich es besser machen könnte. Weitere Hilfe wäre daher schön.

Grundsätzlich könnten auch noch später weitere Listobjecte auf dem Tabellenblatt hinzukommen. Bei diesen sollte dann jedoch nicht jede Zeile validiert werden. Das Ganze soll sich also begrenzen auf Case 1-3 wenn der Index der Listobects entsprechend ist.

Aber das zu machen übersteigt meine Kenntnisse.

Vielleicht findet sich ja noch einmal ein Helfer.

LG,
FranziskusV
Anzeige
AW: Klappt, aber Problem wenn Code 3 Listobject's betifft
02.02.2024 16:58:33
Oberschlumpf
Hi,

a) wieso wiederholst du in einem neuen Beitrag, was du vorher schon mal geschrieben hattest?
b) lies dir noch mal meine Antwort von 15:50 Uhr durch und erklär mir bitte, wieso du bei meiner Bitte...

"zeig bitte eine neue Bsp-Datei mit genügend ListObjects und genügend Bsp-Daten"

...leider noch keine neue Bsp-Datei gezeigt hast?

Ciao
Thorsten
AW: Klappt, aber Problem wenn Code 3 Listobject's betifft
02.02.2024 18:40:30
FranziskusV
Da ist was schiefgelaufen. Ich habe einen Absatz höher eine Datei gesendet.
Irgendwie ist beim "Zurückklicken" die gleiche Nachricht da gewesen und ich dachte sie sein nicht raus.
AW: Klappt, aber Problem wenn Code 3 Listobject's betifft
02.02.2024 15:50:12
Oberschlumpf
Hi,

das, was du uns bisher gezeigt hast, passt, je mehr du schreibst, um so - weniger - zu deinen Problemen.

Sorry, aber bitte wie sollen wir dir bei "Überwachung" von mehreren ListObjects helfen können, wenn du uns eine Bsp-Datei mit nur 1 ListObject zeigst?!
Erstell also bitte eine - passende - Bsp-Datei mit Bsp-DAten und allem anderen, was erforderlich ist, damit deine Problem-Beshcreibungen auch wieder zur Bsp-Datei passen.

Ciao
Thorsten
Anzeige
AW: Klappt, aber Problem wenn Code 3 Listobject's betifft
02.02.2024 17:35:29
FranziskusV
Hallo Thorsten,

Ich habe mal eine abgespeckte Musterdatei erstellt.

https://www.herber.de/bbs/user/166733.xlsm

Ich habe dort 3 ListObjecte darauf gepackt.
Das Komische ist, dass der Code manchmal läuft (wenn ich die Datei nach einer Veränderung neu starte). Und manchmal läuft er gar nicht erst an, obwohl das Change-Ereignis stattfindet.

Es scheint aber ein Problem in meinem Projekt zu sein, denn in der Musterdatei hier lâuft es ziemlich gut.

Kann man etwas machen um den Code "stabiler" zu bekommen ?

Gruss,
François
Anzeige
AW: Klappt, aber Problem wenn Code 3 Listobject's betifft
02.02.2024 17:52:32
Oberschlumpf
Hi,

bitte Frage in der Datei beantworten, weil...ich versteh gerad gar nix
https://www.herber.de/bbs/user/166739.xlsm

Ciao
Thorsten
AW: Klappt, aber Problem wenn Code 3 Listobject's betifft
02.02.2024 20:11:42
FranziskusV
Es gibt nicht einen Benutzer sondern mehrere Benutzer.

Die eine "normale" Gruppe sind Benutzer die nur Eingaben machen und validieren. Quasi die Endnutzer. Aber es gibt ein paar Benutzer mit Kompetenz, die dürfen in den Eingaben unter gewissen Vorausetzungen auch noch was ändern. Das Projekt dokumentiert den Erntefortschritt von Holzlosen. Dabei mûssen immer wieder mittels neuer Tabelleblätter neue Lose angelegt werden. Das machen andere Personen als diejenigen die nachher den Erntefortschritt dokumentieren und begleiten.

Ich habe eine weitere Version der Musterdatei erstellt, mit mehreren Tabellenblättern und auch einigen anderen Aspekten die in meinem Projekt eine Rolle spielen.
Dazu zählt die Verwendung von Gruppenfeldern um Bereiche ein- und ausblenden zu können. Und es gibt Möglichkeit für den User über Schaltflächen Blattspalten einzufügen in der letzten Zeile der Tabelle. So, dass diese sich erweitert. Das ist jetzt in dem Muster nicht enthalten.

Was schade ist, dass ich meine Projektdatei nicht einmal mit jemandem besprechen kann. Dann wäre vieles sofort klar.

Das Thema mehrerer Tabellenblätter scheint zu klappen...allerdings gibt es immer noch Bugs mit und rund um den Blattschutz.

Darf ich hier überhaupt mehrere Fragen gleichzeitig stellen, da ist sicher nicht im Sinne eines Forums ?

Ich habe nämlich auch noch eine Schaltfläche die Zeilen einfügt. Ganze Tabellenzeilen immer auf Höhe der Listobjecte die dann automatisch erweitert werden. Das funktionniert gut. Allerdings müsste ich in der letzten Zelle der letzten Spalte also unten rechts im Listobject den Zellwert nach dem Einfügen auf "Nein" setzen. Damit die Eingabe einer neuen Datenserie noch nicht validiert ist. Das soll der Benutzer machen beim Ausfüllen. Ausserdem brauche ich dort ein "Nein" damit die bedingten Formatierungen in den Zellen der Eingabebereiche den Benutzer korrekt durch das "Ausfüllen" leiten. Denn es blicken je nach Konstellation der Eingabe immer anderere Eingabenzellen auf, während andere so formatiert sind, dass sie nicht wiederum als Eingabezellen dargestellt sind. Kann man verstehen was ich meine ?

All das kann ich nicht in eine Musterdatei packen.

Ich habe hier jetzt ein mehrblättriges Muster. Im Muster des mittleren Listobjects reissen bei Einfügen einer neuen Zeile die Bezüge ab. In meinem Projekt nicht. Man kann also manuell Zeilen einfügen um zu simulieren was normalerweise mein Button macht.

https://www.herber.de/bbs/user/166744.xlsm

Ich weiss das klingt vielleicht alles ein bisschen konfus. Aber das Forum hat mir schon sehr viel geholfen und ich würde mich sehr über weitere Unterstützung freuen.

Und das ist der Code hinter der Schaltfläche wo eine Zeile eingefügt wird. Hier möchte ich noch anhängen dass in der frisch eingefügten Zeile die Validierungszelle (letzte Zeile, letzte Spalte des Listobjects) auf den Wert "Nein" gestellt wird.

Private Sub CommandButton1_Click()          '=>Übernahmen


'Fügt eine Blattzeile ein so dass die intelligente Tabelle Uebernahmen um eine Zeile nach unten erweitert wird.
Dim ws As Worksheet
Dim meineTabelle As ListObject
Dim letzteZeile As Long
Dim blattZeilennummer As Long

Me.Unprotect 'Blattschutz aufheben

Set ws = Me
Set meineTabelle = ws.ListObjects("TbUebernahmen") '!!! Namen der intelligenten Tabelle anpassen

' Ermittle die letzte Zeile in der Tabelle
letzteZeile = meineTabelle.ListRows.Count

' Überprüfe, ob die Tabelle Zeilen hat
If letzteZeile > 0 Then
' Ermittle die Blattzeilennummer der letzten Zeile
blattZeilennummer = meineTabelle.ListRows(letzteZeile).Range.row

' Springe eine Zeile tiefer und füge eine neue Zeile ein
ws.Rows(blattZeilennummer + 1).Insert Shift:=xlDown

' Jetzt kannst du mit der neu eingefügten Zeile arbeiten
MsgBox "Eine Zeile für eine weitere Übernahme wurde eingefügt"
Else
MsgBox "Die Tabelle hat keine Zeilen."
End If




LG,
FranziskusV



AW: Klappt, aber Problem wenn Code 3 Listobject's betifft
03.02.2024 08:13:34
Oberschlumpf
Hi,

boah, ich weiß nich, wo ich anfangen soll...

Ich versuch es mal so: Ich zitiere einige deiner Texte und schreibe dann das dazu, wie ich dich verstanden habe.

"Ich weiss das klingt vielleicht alles ein bisschen konfus."
Recht hast du! So viele Unklarheiten!

"All das kann ich nicht in eine Musterdatei packen. "
Dann hilft doch gar keine von deinen Musterdateien!
Bitte wie sollen wir dir helfen, wenn wir gar nicht die Möglichkeit von dir bekommen, all das zu berücksichtigen, was du erreichen willst, wenn wir doch gar nicht wissen, was alles berücksichtigt werden muss?????

Es gibt nicht einen Benutzer sondern mehrere Benutzer.
Genau DAS hatte ich mir schon gedacht.
Aber WIE willst du das / WIE sollen wir das lösen?

Denn dein bisheriger Code blockt ja die ganze Datenzeile einer intelligenten Tabelle - inklusive der Spalte - in der ein "Ja" ausgewählt wurde.
Und DAS hat dann zur Folge, dass "einfach so" NICHT wieder ein "Nein" ausgewählt werden kann, weil ja der Blattschutz aktiv ist.

Ich würde das Lösen, in dem ich in einem extra Tabellenblatt (gern ausgeblendet) ALLE Usernamen (der Name, mit dem man sich am Computer anmeldet) schreibe.
Diese Usernamen teile ich in 2 Gruppen auf.
Gruppe1 = die User, die alles dürfen (du nennst sie "die Benutzer mit Kompetenz")
Gruppe2 = alle anderen, du nennst sie "die Enduser"

So, und nun MUSS direkt nach jedes mal Öffnen der Datei geprüft werden, welcher username hat sich angemeldet.

--------------------------

So, und hier mein Code für das Change-Ereignis in Tabelle "2 Fragen"
https://www.herber.de/bbs/user/166746.xlsm

Und ich habe wieder den Schwerpunkt auf den Namen der intellig. Tabellen gesetzt - und nicht - auf den Index.
Beachte bitte unbedingt die Kommentare im Code - die erklären, was wann wie wo warum passiert.

a) es gibt bestimmt noch sehr viel zu berichten, aber ich weiß gerad nicht weiter, habe den Überblick verloren
b) ich würd dir empfehlen (wenn denn mein neuer Code nun so einigermaßen das tut, was du möchtest) einen neuen Beitrag zu erstellen, da es hier so langsam recht unübersichtlich wird

Ha! Etwas fällt mir doch wieder ein, was ich noch schreiben wollte.
Ja, doch, du kannst schon 2 oder 3 Fragen gleichzeitig in nur einem Beitrag stellen. Das würde ich aber nur tun, wenn es "einfachere" Fragen sind.
Speziell in deinem Fall würd ich empfehlen...
...zeig eine - passende! - Bsp-Datei und stell erst mal nur 1 Frage
...wenn Frage1 beantwortet ist, erstell einen neuen Beitrag, wieder mit Bsp-Datei und stell die zweite Frage
...all das wiederholen, bis alle Fragen beantwortet sind

Ciao
Thorsten
AW: Ergebnisformel und Sperrung Intelligente Tabelle
01.02.2024 14:55:36
FranziskusV
Vielen Dank Steve !!
Manchmal sieht man für lauter Bäumen den Wald nicht mehr.
Fragen 1 bis 3 sind geklärt.

Bleibt noch die Sache mit VBA.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige