Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Text, -farbe, Bereich + Makro für Zelle/Menü/Knopf aus anderer Datei

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Text, -farbe, Bereich + Makro für Zelle/Menü/Knopf aus anderer Datei (581 / mal gelesen)
ArCADe-Spieler
Mitglied
Metallbautechniker


Sehen Sie sich das Profil von ArCADe-Spieler an!   Senden Sie eine Private Message an ArCADe-Spieler  Schreiben Sie einen Gästebucheintrag für ArCADe-Spieler

Beiträge: 301
Registriert: 05.12.2012

Win 10 64bit
Office 365 aber Excel 2013

erstellt am: 24. Okt. 2023 14:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Bild.jpg

 
Hallo Gemeinde,

inzwischen habe ich mir für die Textfarbe in einer Zelle sowie den Eingabebereich für ein Kombinationsfeld (Formularsteuerelement) bereits Lösungen für den Bezug auf Daten in einer anderen Mappe erarbeitet.

Bleiben also "nur noch" die Schaltflächen.

Da jedoch meine umständliche Heranführung an das Ganze meine Posts in diesem Thread bereits ziemlich anstrengend zu lesen machen, habe ich für die noch offenen Punkte um die Schaltflächen einen neuen Thread eröffnet.

Für Interessierte ab hier noch der alte Text:

püh, den Betreff so einzudampfen, dass in noch halbwegs verständlichem Deutsch alles drinsteht, war schon ein bisschen tricky.

Gleich vorab: das hier beschriebene Konstrukt aus Arbeits- und Daten-Tabelle funktioniert seit Jahren zuverlässig, aktuell geht es "nur" um eine Art Feinschliff, um demnächst anstehende (und zukünftige) umfangreichere Wartungsarbeiten wegen der Umstellung unseres Produktportfolios etwas geschmeidiger durchführen zu können. Ach so: auch wenn das angesichts der Grundsätzlichkeit einiger meiner Fragen in diesem Post vielleicht ein wenig zweifelhaft erscheint - all das VBA-Code-Geschnetzelte, das bisher bereits wirklich gut funktioniert, ist über die Jahre mit heftiger Hilfe durch die hiesige Gemeinde von mir selbst erstellt worden

In der Arbeitstabelle.xlsm werden mittels Makros aus der IMMER zuerst geöffneten Datentabelle.xlsx auftragsbezogen Stammdaten, Abbildungen und Tabellen mit einer voreinstellbaren Zeilenanzahl für Profile, Bauteile, FLUTZ-Halbzeuge usw. zu einer Tabelle zusammengesetzt, über die dann ebenfalls auftragsbezogene Gesamtauswertungen laufen - und wie gesagt: funktioniert alles.

In der Arbeitstabelle gibt es für die verschiedenen Produktbereiche in einer 4*6-Matrix angeordnet insgesamt 24 Dreierblöcke aus (Kopf)Zelle, PullDown-Menü und Makro-Start-CommandButton (siehe Bild ... bitte entschuldigt mein mit-Maus-in-Paint-Gekrakel), deren Text-Inhalt und Textfarbe für die Zelle, Auswahlbereich für das Menü sowie Beschriftung, Textfarbe und angesteuertes Makro für den CommandButton bisher komplett händisch eingetragen und bei Bedarf auch geändert wurden - so z.B. auch die Anpassung der Datenblock-Nummer in den betroffenen Makros.

Der erste Dreierblock in der Arbeitstabelle.xlsm greift auf den ersten Datenblock auf dem Tab "Listen" in der Datentabelle.xlsx zu, der zweite auf den zweiten usw. usf. - das soll auch genauso bleiben, selbst wenn ich innerhalb der Datentabelle die Reihenfolge/den Inhalt/die Größe eines Datenblocks (siehe Bild) geändert hätte.

Die (Kopf)Zelle dient nur der Benennung des jeweiligen Dreierblocks. Die Textfarbe dient als "Kodierung" des jeweiligen Lieferanten/Herstellers, ist jedoch relativ unwichtig ... aber wenn sie am Ende auch passen würde, wär's nice.

Das PullDownMenü dient zur Auswahl eines bestimmten Artikels aus der jeweiligen Produktgruppe (im Beispiel: Bauteile) und legt die gewählte Zeile aus dem Eingabebereich in der obersten rechten Zelle des jeweiligen Daten-Blocks auf dem Tab "Listen" in Datentabelle.xlsx ab (im Beispiel: 1).

Der CommandButton ruft ein Zugriffs-Makro auf, das wiederum ein Makro zum jeweiligen Produkt-Typ aufruft und dabei die Daten-Block-Nummer übergibt (im Beispiel: 8 ... bisher dort händisch in die Klammer geschrieben, weil ich die Methode bzw. die notwendige Syntax zur Übergabe einer solchen Zahl (auch nach eventueller Änderung) nicht kenne)

Die Zugriffs-Makros haben bisher diese Struktur:

Code:
' Bereich Bauteile

Sub Sub08_gewähltes_Bauteil_einfügen_Klicken()
   
    Call Sub91_Stückgut_einfügen(8) 'Bauteile sind Stückgut und auf "Listen" der 8. Block
   
End Sub


Hierzu gleich zwei Änderungswünsche:

- ich würde den Sub/Makro-Namen gern von "Sub08_gewähltes_Bauteil_einfügen_Klicken()" auf "Sub08_gewähltes_Bauteil_einfügen()" oder "gewähltes_Bauteil_einfügen()" ändern, bin aber unsicher, ob z.B. das "_Klicken" zwingend notwendiger Bestandteil des Makro-Namens für CommandButton-Klicks ist und inwieweit die bisherige Durchnummerierung der Subs nach einem eventuellen Vertauschen von Datenblöcken überhaupt noch sinnvoll wäre

- wie bekomme ich die händisch eingetragene Daten-Block-Nummer (8) mit Bezug auf eine eventuell geänderte Anordnung der Datenblöcke auf Listen in der Datentabelle.xlsx umgesetzt ... den Kommentar würde ich entsprechend "entschärfen"

Mit der übergebenen Datenblock-Nummer wird dann in dem jeweiligen Produkt-Typ-Makro (im Beispiel: Sub91_Stückgut_einfügen(xWert As Integer) ) der Kopfbereich des jeweiligen Datenblocks (im Beispiel: 8) sowie die Anzahl der gewünschten Tabellenzeilen aus einer Zelle in der Arbeitstabelle.xlsm in Variablen befüllt und dann die Daten und Abbildungen von den entsprechenden Produkt-Typ-Tab in Datentabelle.xlsx (im Beispiel: Bauteile) nach Arbeitstabelle.xlsm kopiert und die jeweilige Tabelle mit der gewünschten Zeilenanzahl und Kopf- und Summenzeilen erzeugt.

Da sich allerdings der Inhalt/die Reihenfolge der Daten-Blöcke (wieder: siehe Bild) in der Datentabelle.xlsx in absehbarer Zeit erheblich ändern soll/wird, ist mein Ziel, diese bisher händisch eingtragenen Werte beim Start der Arbeitstabelle.xlsm aus der Datentabelle.xlsx zu beziehen, sodass sich die 24 Dreierblöcke auch bei zwischendrin erfolgten Änderungen in der Datentabelle automatisch daran anpassen. Dies soll zukünftig auch erleichtern, mit älteren Versionen (NACH dieser Umstellung) der Datentabelle erstellte auftragsbezogene Listen bearbeiten zu können ... aktuell muss dazu immer die zur Version der damals verwendeten Arbeitstabelle passende Datentabelle "rekonstruiert" werden.


Die einzige (einfachste) Sache, die ich hinbekommen habe, ist der Textinhalt der (Kopf)Zelle:
z.B. "= [Datentabelle.xlsx]Listen!$A$1" direkt in der (Kopf)Zelle, wobei Listen der Daten-Verwaltungs-Tab ist, auf dem alle 24 Datenblöcke stehen


Bei einigen der anderen Sachen habe ich zumindest schon Ansätze gefunden, dass es irgendwie geht/gehen müsste, kriege es aber mangels Grundlagenwissen zu VBA-Programmierung und Befehls-Syntax bisher nicht wirklich umgesetzt (ich habe mir deshalb jetzt Michael Koflers "Excel programmieren 2016" bestellt, aber selbst wenn das dann da ist, muss ich erst einmal anfangen(!) zu lernen )


Bei den Auswahlbereichen der PullDown-Menüs schwebt mir eigentlich als Eintrag im Feld "Eingabebereich" unter "Steuerelement formatiern" so etwas vor:

[Datentabelle.xlsx]Listen!$A$5:INDIREKT("$" & A & "$" & [Datentabelle.xlsx]Listen!$B$2 + 4)

funktioniert aber nicht mit der Fehlermeldung "Bezug ist ungültig", während

[Datentabelle.xlsx]Listen!$A$5:$A$45

(bei z.B. 41 Zeilen im Eingabebereich) ohne Beanstandung funktioniert.


z.B. zu den CommandButtons:

zu Text/Beschriftung: CommandButtonXYZ.Caption = Range("...")

oder

zur Textfarbe: Worksheets("ABC").OLEObjects("CommandButtonXYZ").Object.ForeColor = ???

Was ich inzwischen begriffen (zu) habe(n glaube): die Makros für diese Aktionen sollten am besten in dem Makro-Code-Fenster zu dem Tabellenblatt (ABC) der Arbeitstabelle.xlsm stehen, auf dem sich die 24 Dreierblöcke befinden.
Aber wie ich für die CommandButtons die jeweilige laufende(?) Nummer "YXZ" (einfach) herausbekomme ist mir nicht klar, genau wie die exakt zu verwendende, korrekte Syntax.

Für einen der Buttons habe ich mal versucht, mittels des Makro-Rekorders ein paar Sachen herauszufinden ... der Button wurde dort als CommandButton1235 geführt ... und auch wenn ich im Lauf der Jahre sicherlich mehrfach solche Buttons ausprobiert und wieder gelöscht habe (teilweise nach Umbeschriftung auch aus Versehen), bin ich noch nicht annähernd bei über Tausend dieser Knöpfe.

Und als ich im Code-Fenster für den Tab mit den Dreierblöcken erst einmal nur "CommandButton1235.Caption = Range("J8")" geschrieben hatte, bekam ich bei der ersten Änderung auf diesem Tab eine "Microsoft Visual Basic" übertitelte Fehlernachricht "Laufzeitfehler '424'; Objekt erforderlich ... beim Klick auf Debuggen zeigt er mir die obige Zeile in Gelb.

Den ersten Fehler dabei habe ich jetzt verstanden: ich hatte die Zeile "aus Versehen" in das dort bereits existierende Makro "Sub Worksheet_Change(ByVal Target As Excel.Range)" hineingeschrieben, das bei einer Änderung in einer bestimmten Zelle etliche Druckeinstellungen vornimmt ... eigentlich will ich jedoch die Aktionen für die 24 Dreierblöcke (ein Makro? 24 Makros? 24 * X Makros?) nur beim Öffnen dieser Exceldatei ausführen lassen, damit sie an den aktuellen Stand der Datentabelle.xlsx angepasst wird. Danach können diese Aktionen "ruhen". Aber wie/wo ich das Ganze dann hinschreiben muss: Hüüülfäää

Gleiches gilt für die Syntax für Range("...") mit Bezug auf eine andere Exceldatei ... da habe ich in Zellen in einer Exceltabelle verschiedenes ausprobiert, aber dort funktionierende Syntax scheint nicht zwingend auch für Makros korrekt zu sein.

Wer also zu einem der offenen Punkte Hilfe anbieten kann, herzlich willkommen:

- Textfarbe in (Kopf)Zelle ... Format der Farb-Hinterlegung auf Listen in Datentabelle.xlsx bisher nur als RGB-Beispiel

- Eingabe- bzw. Auswahlbereich für das PullDown-Menü

- Nummer des CommandButtons
- Beschriftung des CommandButtons
- Textfarbe der Beschriftung (soll dieselbe Farbe wie die des Texts in der (Kopf)Zelle sein)
- mit Klick auf den CommandButton angesteuertes Makro
- Übergabe der aktuellen Daten-Block-Nummer an das Produkt-Typ-Makro (siehe Bild)

So, mangels Wissen habe ich wahrscheinlich immernoch etliche Sachen vergessen, aber das ist halt das, was mir bis jetzt so ein/aufgefallen ist und ich habe momentan das Gefühl, würde ich noch mehr schreiben, stünde es bereits irgendwo weiter oben im Text .

Grüße
Gernot

[EDIT] kleinere (Rechtschreib-)Korrekturen, Umformulierungen und zusätzliche Erläuterungen und PS.: wer andere Literatur-Empfehlungen hat: nur her damit

[Diese Nachricht wurde von ArCADe-Spieler am 25. Okt. 2023 editiert.]

[Diese Nachricht wurde von ArCADe-Spieler am 26. Okt. 2023 editiert.]

[Diese Nachricht wurde von ArCADe-Spieler am 17. Nov. 2023 editiert.]

[Edit] für die Suchfunktion auf "Eingabebereich für ein Kombinationsfeld (Formularsteuerelement)" geändert

[Diese Nachricht wurde von ArCADe-Spieler am 25. Nov. 2023 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2716
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 25. Okt. 2023 13:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ArCADe-Spieler 10 Unities + Antwort hilfreich

Hallo Gernot,
Puh - eine Menge Text, der nicht so ganz einfach nachvollziehbar ist. Das muß ich mir in einer ruhigen Minute noch mal durchlesen, bisher verstehe ich eigentlich nur Bahnhof ...

Zum Grundlegenden:
Du hast zwei Excel Arbeitsmappen
Arbeitsmappe "Datentabelle.xlsx" hat:
  - Tabellenblatt "Listen" hat 24 "Datenblöcke", die jeweils folgenden Aufbau haben:
    4 Kopfzeilen mit unterschiedlichen Bedeutungen,
    Wertezeilen entsprechend Wert in Zeile 2 des Kopfblockes
    => oder vielleicht doch nur eine Liste, die je nach Pulldownauswahl gesteuert wird?
  - Sind die Wertezeilen dann alle untereinander und werden gefiltert oder gibt es auch 24 Wertebereiche / Tabellenblätter

Makrodatei Arbeitstabelle.xlsm:
  24 Dreierblöcke für 24 verschiedene Auswertungen?
  Haben diese nur Bezug zum Tabellenblatt "Listen" oder auch zu anderen Tabellenblättern?

Die Fragen dienen eigentlich nur zu meinem eigenen Verständnis und haben noch nichts mit deinen Problemen zu tun.
Im Prinzip wäre hier eigentlich eine Datenbank sinnvoller aber gut, man kann Excel auch dafür verwenden 

Deine Makros scheinen ja alle ziemlich gleich aufgebaut zu sein, vielleicht könnte man das ja zu einem zusammenfassen, das würde die Pflege auch erheblich vereinfachen. Aber gut, dazu bräuchte man natürlich die xslm und eine BeispielTabelle.

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ArCADe-Spieler
Mitglied
Metallbautechniker


Sehen Sie sich das Profil von ArCADe-Spieler an!   Senden Sie eine Private Message an ArCADe-Spieler  Schreiben Sie einen Gästebucheintrag für ArCADe-Spieler

Beiträge: 301
Registriert: 05.12.2012

Win 10 64bit
Office 365 aber Excel 2013

erstellt am: 25. Okt. 2023 14:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Klaus,

weil's sonst zuviel hin und her wäre, habe ich einfach mal in Deinem zitierten Text rumgeändert - teils auch, um Deine und meine Begrifflichkeiten abzugleichen:

Zitat:
Original erstellt von KlaK:
Du hast zwei Excel Arbeitsmappen (= Exceldateien: Datentabelle.xlsx und Arbeitstabelle.xlsm)
Arbeitsmappe "Datentabelle.xlsx" hat:
  - 1. Tabellenblatt #1 (= Tab) Erläuterung nur für Erklärbärtexte für die Benutzung
  - 2. Tabellenblatt #2 "Listen" hat 24 "Datenblöcke", die jeweils folgenden Aufbau haben:
    4 Kopfzeilen mit unterschiedlichen Bedeutungen ... siehe Bild im Start-Post ... bisher werden nur der Text für die (Kopf)Zelle der Dreierblöcke, der Datensatz-Tab-Name, die Datenblock-Nummer und die im PullDown-Menü gewählte Zeile wirklich genutzt/ausgewertet ... die anderen 4 Einträge sind nur meine "Vorbereitungen" für die Makro-gestützte "Befüllung" der Dreierblöcke beim Öffnen der "Arbeitstabelle.xlsm"
    Anzahl Wertezeilen entsprechend Wert in der rechten Spalte in Zeile 2 des Kopfblockes
  - 23 der 24 Wertebereiche entsprechen den 23 Tabellenblättern #3-#25 (z.B. eigene Profile A, eigene Profile B, ..., eigene Rahmen, eigene Komplettelemente, eigene Bauteile, FLUTZ-Profile A, ..., Zukauf-Profile, ...) und der 24. Wertebereich "kümmert" sich um den Sonder-Bereich für in den anderen Tabs bisher nicht erfasste Fremd-Profile, -Bauteile, -Kantteile
  - die 23 nicht-Sonder-Wertebereiche werden per "=Bauteile!H12"-Einträgen mit den Daten direkt von den entsprechenden Tabs befüllt, auch die jeweils pro Artikel benutzten Zeilen bzw. die "Einsprungzeile" kommen so direkt von den Tabs
  - auf den einzelnen Tabs sind die Artikel mit ausführlicher Benennung, Artikelnummer, einer Abbildung usw. abgelegt

  "historisch gewachsen" gibt es z.B. bei den Daten für Profile und denen für Bauteile bis jetzt Unterschiede in der Art der Ablage der Zugriffs-Daten (immer gleich groß angelegte Datensätze <-> Datensätze, deren Einsprungzeile vor allem durch die teilweise recht großen Abbildungen bestimmt wird) ... interessanter Weise habe ich bereits gedanklich daran herumgedoktort, diese Unterschiede auch im Sinne einer Reduzierung der notwendigen unterschiedlichen Makros zu beseitigen ... war aber auch auf Grund der Menge der betroffenen Datensätze noch nicht über reine Gedankenspiele hinausgegangen

Makrodatei Arbeitstabelle.xlsm:
  24 Dreierblöcke für 24 verschiedene ... ich nenne sie jetzt einfach mal ... Produktgruppen -> entsprechen den 24 Datenblöcken auf Listen, die sich ja wiederum auf die 23 "Produktgruppen-Tabs" beziehen
  Alle Bezüge in den Dreierblöcken gehen ausschließlich auf das Tabellenblatt "Listen", die letztendlich zur auftragsbezogenen Sammeltabelle zusammengebauten Datensätze jedoch werden von den Makros direkt von den "Produktgruppen-Tabs" kopiert ... okay, alle außer dem Sonder-Zeug ... aber das ist eben wirklich Sonder

Die Fragen dienen eigentlich nur zu meinem eigenen Verständnis und haben noch nichts mit deinen Problemen zu tun. ... Sehe ich nicht so, da manchmal schon allein die immer genauere Beschreibung des "problembehafteten" Ist-Zustandes zu Lösungsansätzen führen kann.

Im Prinzip wäre hier eigentlich eine Datenbank sinnvoller aber gut, man kann Excel auch dafür verwenden ... mag sein, aber unser IT-ler mag "mit Bildchen verseuchte" Datenbanken sowas von überhaupt nicht ... und tatsächlich gab es in grauer Vorzeit eine von den einzelnen Technikern über die Jahre zusammengestrickte Excel-Liste dieser Datensätze, aus denen die jeweilige auftragsbezogene Liste dann händisch zusammengeklöppelt wurde ... mit jeweils genau 5 Zeilen pro Datensatz-Teiltabelle ... und wenn man für den aktuellen Auftrag z.B. 6 Zeilen benötigte, wurde die 5 Zeilen-Teiltabelle halt händisch zweimal in die Gesamtliste kopiert ... und auch die Gesamtauswertungen erfolgten - wenn überhaupt - nur händisch ... das Ganze hat mich irgendwann so genervt, dass ich angefangen habe, Makros zu schreiben, die z.B. automatisch passende und formelmäßig funktionierende Tabellen mit z.B. 11 Zeilen erzeugen und zusätzlich noch die saubere Aufteilung auf die Druckseiten überwachen.

Deine Makros scheinen ja alle ziemlich gleich aufgebaut zu sein, vielleicht könnte man das ja zu einem zusammenfassen, das würde die Pflege auch erheblich vereinfachen. ... siehe oben: ich denke darüber nach

Aber gut, dazu bräuchte man natürlich die xslm und eine BeispielTabelle. ... leider keine Chance, nicht mal unbedingt wegen der löschbaren Betriebsinterna in den Datensätzen, sondern eher, weil mir schlicht vor dem Aufwand graust, die Makros Fremden-tauglich zu machen


So, Deine Fragen haben mich nun zumindest bewogen, doch noch einmal intensiver über die Zugriffsdaten-Ablage und damit die Reduzierung der Makro-Anzahl nachzudenken.

Grüße
Gernot

[EDIT] Rechtschreibfehler korrigiert und - aus meiner Sicht - doch noch notwendige Ergänzungen eingefügt

[Diese Nachricht wurde von ArCADe-Spieler am 25. Okt. 2023 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ArCADe-Spieler
Mitglied
Metallbautechniker


Sehen Sie sich das Profil von ArCADe-Spieler an!   Senden Sie eine Private Message an ArCADe-Spieler  Schreiben Sie einen Gästebucheintrag für ArCADe-Spieler

Beiträge: 301
Registriert: 05.12.2012

Win 10 64bit
Office 365 aber Excel 2013

erstellt am: 25. Okt. 2023 15:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ach so: gaaaanz ursprünglich waren auch alle Daten und der Tab "Listen" Bestandteile meiner Arbeitstabelle.xlsm.

Damit jedoch die auftragsbezogen abzuspeichernde (und eigentlich nie-nie wieder zu ändernde) Datei nicht unnötig groß wäre, habe ich irgendwann die Daten und dann auch die Listen "ausgelagert".

Und jetzt kommt halt eine größere Änderung im Datensatz-Bestand und demzufolge auch die Möglichkeit/Notwendigkeit für umfangreichere Änderungen im Gesamtkonstrukt auf mich zu

Grüße
Gernot

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ArCADe-Spieler
Mitglied
Metallbautechniker


Sehen Sie sich das Profil von ArCADe-Spieler an!   Senden Sie eine Private Message an ArCADe-Spieler  Schreiben Sie einen Gästebucheintrag für ArCADe-Spieler

Beiträge: 301
Registriert: 05.12.2012

Win 10 64bit
Office 365 aber Excel 2013

erstellt am: 26. Okt. 2023 08:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

... ein weiterer Grund für die momentan vier unterschiedlichen mit Übergabe der Blocknummer aufgerufenen Makros ist, dass die Kopfbereiche der Teil-Tabellen mit den jeweiligen Stammdaten für Profile, Rahmen, Bauelemente und Stückgut sich voneinander unterscheiden ... aber auch das ließe sich eventuell mittels Hinterlegung des Produkt-Typs auf dem jeweiligen Produkt-Typ-Tab und durch IF-Unterscheidungen gesteuerter Auswahl des jeweils zutreffenden Tabellenkopfes irgendwie in ein Makro zwingen ... siehe weiter oben: ich denke darüber nach

Grüße
Gernot

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ArCADe-Spieler
Mitglied
Metallbautechniker


Sehen Sie sich das Profil von ArCADe-Spieler an!   Senden Sie eine Private Message an ArCADe-Spieler  Schreiben Sie einen Gästebucheintrag für ArCADe-Spieler

Beiträge: 301
Registriert: 05.12.2012

Win 10 64bit
Office 365 aber Excel 2013

erstellt am: 10. Nov. 2023 13:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Gemeinde,

für die Übernahme des geänderten/angepassten Eingabebereichs des Kombinationsfeldes (Formularsteuerelement, NICHT ActiveX) jedes Dreierblocks habe ich hier eine praktikable Lösung gefunden:

In der Arbeitstabelle.xslm muss über den Namensmanager für jedes der insgesamt 24 Kombinationsfelder eine zugeordnete Formel abgelegt werden:

z.B. unter dem Namen Eingabebereich01 im Feld "Bezieht sich auf":

Code:
=INDIREKT("[Datentabelle.xlsx]Listen!$A$5:$A$"&[Datentabelle.xlsx]Listen!$B$2+4)

Die so erzeugten Namen werden für das jeweils zugehörige Kombinationsfeld per Rechtsklick-Kontextmenü unter "Steuerelement formatieren..."->"Steuerung"->"Eingabebereich" ohne führendes Gleichheitszeichen und ohne Anführungszeichen eingetragen.

Et voilà: egal wie sich der Datenbestand in der Datentabelle.xlsx auf dem Tab "Listen" zwischenzeitlich geändert hat, es wird immer der aktuell gültige Eingabebereich verwendet.

Bleiben also noch folgende offene Punkte aus der Liste im Start-Post:

- Textfarbe in (Kopf)Zelle ... Format der Farb-Hinterlegung auf Listen in Datentabelle.xlsx bisher nur als RGB-Beispiel

- Nummer des CommandButtons
- Beschriftung des CommandButtons
- Textfarbe der Beschriftung (soll dieselbe Farbe wie die des Texts in der (Kopf)Zelle sein)
- mit Klick auf den CommandButton angesteuertes Makro
- Übergabe der aktuellen Daten-Block-Nummer an das Produkt-Typ-Makro (siehe Bild im Start-Post)

Wirklich wichtig wären mir daraus die Beschriftung der CommandButtons und das angesteuerte Makro mit Bezug auf die Daten in den 4 Kopfzeilen des jeweils zugeordneten Datenblocks auf "Listen" in Datentabelle.xlsx ... wobei sich das Makro bei entsprechender Umstrickung/Vereinigung der bisher 4 verschiedenen Typ-Makros auch schon erledigt haben sollte ... ist allerdings noch ein Wenig Zukunftsmusik, weil ich gerade erst angefangen habe das erwähnte Buch zu lesen.

Grüße für ein schönes Wochenende
Gernot

ein erst nachträglich entdeckter, wichtiger Hinweis dazu in diesem Post

[Diese Nachricht wurde von ArCADe-Spieler am 25. Nov. 2023 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ArCADe-Spieler
Mitglied
Metallbautechniker


Sehen Sie sich das Profil von ArCADe-Spieler an!   Senden Sie eine Private Message an ArCADe-Spieler  Schreiben Sie einen Gästebucheintrag für ArCADe-Spieler

Beiträge: 301
Registriert: 05.12.2012

Win 10 64bit
Office 365 aber Excel 2013

erstellt am: 15. Nov. 2023 13:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Gemeinde,

wie mir gerade bewusst wurde, fehlt für die Makro-auslösenden Schaltflächen der Dreierblöcke (in den bisherigen Posts nur "CommandButton" genannt) noch die wohl nicht unwesentliche Info, dass es sich bis jetzt um sogenannte Schaltflächen (Formularsteuerelement) handelt, und nicht um Befehlsschaltflächen (ActiveX-Steuerelement). Und diese Schaltflächen sind direkt auf dem Tabellenblatt der Liste und nicht in einem UserForm eingefügt.

Auch wenn mir diese ActiveX-Steuerelemente - nach der bisherigen Lektüre im oben erwähnten Buch - programmiertechnisch erheblich zugänglicher erscheinen(! ... z.B. die Verwendung des Eigenschaften-Fensters), sprechen aus meiner Sicht bisher zwei gewichtige Gründe gegen ihre Verwendung:

- Wie aus dem Bild im Start-Post vielleicht zu erahnen ist, sind diese Schaltflächen nur geringfügig höher als die durchgehend 17 Pixel hohen Zellen. Versuche ich nun eine gleich hohe ActiveX-Befehlsschaltfläche zu erstellen, sehe ich von deren Beschriftungstext gerade mal die oberste Pixelreihe. Und selbst wenn ich die Schriftgröße deutlich reduziere, bessert sich das nicht.

- Eines der Makros in der Arbeitstabelle.xlsm dient der Löschung der gesamten, bis dahin erzeugten Liste und der Rücksetzung aller Eingabewerte und Menüs auf den Startzustand der Datei. Da diese Liste auch Abbildungen enthält, lösche ich diese mittels:

Code:
    Dim Ziel& 'Variablen als Long-Ganzzahlen -2.147.483.648 bis 2.147.483.647 definieren
        Ziel = ActiveSheet.Cells(4, 10) 'gespeicherte oder eingetragene aktuelle Einfüge-Zeile

    ActiveSheet.Range(ActiveSheet.Cells(19, 1), ActiveSheet.Cells(Ziel + 10, 8)).Delete Shift:=xlUp 'alle Zeilen der Tabelle löschen
    Sheets("Arbeitsliste").Pictures.Delete 'all die oben zusammengerutschten Bildchen löschen


Interessanter Weise wurden mir dabei zwei zum rum-Testen eingefügte ActiveX-Befehlsschaltflächen in Spalte M ebenfalls gelöscht ... als ob sie für Excel auch unter die Kategorie "Pictures" fallen würden.

All die insgesamt 29 Formularsteuerelement-Schaltfächen auf diesem Tabellenblatt (24 in den Dreierblöcken plus 5 für Hilfsfunktionen) blieben dagegen unbeeinflusst.

Grüße
Gernot

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ArCADe-Spieler
Mitglied
Metallbautechniker


Sehen Sie sich das Profil von ArCADe-Spieler an!   Senden Sie eine Private Message an ArCADe-Spieler  Schreiben Sie einen Gästebucheintrag für ArCADe-Spieler

Beiträge: 301
Registriert: 05.12.2012

Win 10 64bit
Office 365 aber Excel 2013

erstellt am: 15. Nov. 2023 15:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Gemeinde,

mittels 24 solcher Einträge:

Code:
Worksheets("Arbeitsliste").Range("M2").Font.Color = Workbooks("Datentabelle.xlsx").Worksheets("Listen").Range("B3")

im VBA-Code-Fenster "DieseArbeitsmappe" von "Arbeitstabelle.xlsm" im Makro "Sub Workbook_Open()" färbe ich nun - nach der Prüfung und Auswertung, ob die "Datentabelle.xlsx" bereits geöffnet ist - die Texte in den (Kopf)Zellen der Dreierblöcke gemäß der Vorgabewerte in der Datentabelle.xlsx ein.

Da ich die korrekte Syntax für die RGB-Werte (oder die verwertbare Ablage dieser Werte in einer Zelle) nicht hinbekommen habe, bin ich letztendlich auf die Ganzzahlwerte aus den aufgezeichneten Text-Umfärbe-Makros umgeschwenkt:

-65536 statt RGB(0, 0, 255) für Blau
-16777024 statt RGB(192, 0, 0) für Braun
-11489280 statt RGB(0, 176, 80) für Grün sowie
-16776961 statt RGB(255, 0, 0) für Rot.

Verbleiben also auf der ToDo-Liste:

- Nummer der Formularsteuerelement-Schaltfläche (des CommandButtons)
- Beschriftung des CommandButtons
- Textfarbe der Beschriftung des CommandButtons (soll dieselbe Farbe wie die des Texts in der (Kopf)Zelle sein)
- mit Klick auf den CommandButton angesteuertes Makro
- Übergabe der aktuellen Daten-Block-Nummer an das Produkt-Typ-Makro (siehe Bild im Start-Post)

Und immer noch gilt: Wirklich wichtig wären mir daraus die Beschriftung der CommandButtons und das angesteuerte Makro mit Bezug auf die Daten in den 4 Kopfzeilen des jeweils zugeordneten Datenblocks auf "Listen" in Datentabelle.xlsx ... wobei sich das Makro bei entsprechender Umstrickung/Vereinigung der bisher 4 verschiedenen Typ-Makros auch schon erledigt haben sollte ... ist allerdings noch ein Wenig Zukunftsmusik, weil ich gerade erst angefangen habe das erwähnte Buch zu lesen.

Grüße
Gernot

[Diese Nachricht wurde von ArCADe-Spieler am 15. Nov. 2023 editiert.]


und mit den restlichen Punkten zu den Schaltflächen (siehe obige ToDo-Liste) geht es in diesem Thread weiter

[Diese Nachricht wurde von ArCADe-Spieler am 20. Nov. 2023 editiert.]


Änderung der Farbzuweisung hier

[Diese Nachricht wurde von ArCADe-Spieler am 28. Nov. 2023 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ArCADe-Spieler
Mitglied
Metallbautechniker


Sehen Sie sich das Profil von ArCADe-Spieler an!   Senden Sie eine Private Message an ArCADe-Spieler  Schreiben Sie einen Gästebucheintrag für ArCADe-Spieler

Beiträge: 301
Registriert: 05.12.2012

Win 10 64bit
Office 365 aber Excel 2013

erstellt am: 25. Nov. 2023 09:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Gemeinde,

im Nachgang ein - meines Erachtens - wichtiger Hinweis zum Eingabebereich für ein Kombinationsfeld (Formularsteuerelement):

Wenn man nach der Erstellung der Einträge im Namensmanager im Feld "Bezieht sich auf":

Code:
=INDIREKT("[Datentabelle.xlsx]Listen!$A$5:$A$"&[Datentabelle.xlsx]Listen!$B$2+4)

an dem verwendeten Datei-Bezug noch etwas ändert, muss man danach diese Einträge darauf prüfen, ob die automatische Korrekturfunktion von Excel hier wirklich fehlerfrei gearbeitet hat.

In meinem Fall habe ich in die damalige "Datentabelle.xlsx" ein Makro geschrieben, das die korrekte Öffnungsreihenfolge ("Arbeitstabelle.xlsm" erst als Zweites zu öffnen) sicherstellen soll, und musste demzufolge den Dateinamen bzw. die Dateinamenserweiterung/Dateiendung auf "Datentabelle.xlsm" ändern.

Danach hatte die automatische Korrektur die Einträge nur unvollständig, gemäß diesem Muster angepasst:

Code:
=INDIREKT("[Datentabelle.xlsx]Listen!$A$5:$A$"&[Datentabelle.xlsm]Listen!$B$2+4)

was ich dann händisch hierzu ändern musste:

Code:
=INDIREKT("[Datentabelle.xlsm]Listen!$A$5:$A$"&[Datentabelle.xlsm]Listen!$B$2+4)

weil die automatisch geänderten Formeln (natürlich) nicht funktioniert haben, allerdings auch keine Fehlermeldung erzeugten.

Grüße für ein trübes und kaltes Wochenende
Gernot

[Diese Nachricht wurde von ArCADe-Spieler am 25. Nov. 2023 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ArCADe-Spieler
Mitglied
Metallbautechniker


Sehen Sie sich das Profil von ArCADe-Spieler an!   Senden Sie eine Private Message an ArCADe-Spieler  Schreiben Sie einen Gästebucheintrag für ArCADe-Spieler

Beiträge: 301
Registriert: 05.12.2012

Win 10 64bit
Office 365 aber Excel 2013

erstellt am: 28. Nov. 2023 11:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Gemeinde,

da die ursprünglich per aufgezeichnetem Makro verwendeten Text-Farben aus den (Kopf)Zellen auf dem grauen Hintergrund der ebenfalls entsprechend anzupassenden Schaltflächen (Formularsteuerelement) irgendwie "komisch" aussahen, habe ich die Farbbezüge auf ColorIndex umgestellt:

Code:
Worksheets("Arbeitsliste").Range("M2").Font.ColorIndex = Workbooks("Datentabelle.xlsm").Worksheets("Listen").Range("B3")

und wiederum für die verwendeten Farben:

ColorIndex = 5   für blau
ColorIndex = 53 für braun
ColorIndex = 50 für grün
ColorIndex = 3   für rot

auf dem Tab "Listen" hinterlegt.

Die ColorIndex-Eigenschaft funktioniert sowohl für Texte in Zellen als auch für Beschriftungen auf Schaltflächen und ergibt bei beiden "ansehnliche" Ergebnisse.

Grüße
Gernot

[Diese Nachricht wurde von ArCADe-Spieler am 28. Nov. 2023 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz