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

automatische Spaltenbreite bei Inhalt per Formel

automatische Spaltenbreite bei Inhalt per Formel
13.03.2015 14:49:04
manega
Hallo Leute,
ich habe mal wieder ein kleines Problem und hoffe ihr könnt mir dabei helfen!
In meiner Excel Tabelle (Excel 2010) werden in einigen Spalten Texte per Formel aus anderen Spalten übernommen.
Bsp. =INDEX(Material!$A:$A;SPALTE(N8))
Jetzt hätte ich gerne, dass sich die Spaltenbreite nach einer Änderung automatisch anpasst. Bei allen anderen Spalten, in denen ich den Text manuell eingebe funktioniert das mit folgendem Makro:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Columns("C:D").EntireColumn.AutoFit
End Sub

Gibt es dafür eine Lösung?

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: automatische Spaltenbreite bei Inhalt per Formel
13.03.2015 15:03:43
Oberschlumpf
Hi #Name?!
im einfachsten Fall mach aus
"C:D"
z Bsp
"A:Z"
Oder halt
"erste:letzte"
wobei erste = deine erste, genutzte Spalte ist und letzte = deine letzte, benutzte Spalte.
Hilfts?
Ciao
Thorsten

AW: automatische Spaltenbreite bei Inhalt per Formel
13.03.2015 15:42:29
manega
Erst mal vielen Dank für die Antwort.
Leider hilft sie mir nicht weiter. Mir ist schon klar, dass ich mit den in Klammern stehenden Variablen den Bereich auswählen kann.
Das Problem besteht darin, dass dieses Makro keine Wirkung auf die Spalten hat, in denen die Formel
steht.
Ich versuche es mal noch einfacher:
Text direkt in die Zelle eingegeben = Makro funktioniert
Text per Index-Funktion in die Zelle eintragen lassen = Makro funktioniert nicht!
Nebenbei bemertkt, manuell lässt sich die Spaltenbreite natürlich anpassen.
manega

Anzeige
AW: automatische Spaltenbreite bei Inhalt per Formel
13.03.2015 15:42:54
manega
Erst mal vielen Dank für die Antwort.
Leider hilft sie mir nicht weiter. Mir ist schon klar, dass ich mit den in Klammern stehenden Variablen den Bereich auswählen kann.
Das Problem besteht darin, dass dieses Makro keine Wirkung auf die Spalten hat, in denen die Formel
steht.
Ich versuche es mal noch einfacher:
Text direkt in die Zelle eingegeben = Makro funktioniert
Text per Index-Funktion in die Zelle eintragen lassen = Makro funktioniert nicht!
Nebenbei bemertkt, manuell lässt sich die Spaltenbreite natürlich anpassen.
manega

Calculate....
13.03.2015 15:53:36
Helmut
Hallo,
teste das
Gruß
Private Sub Worksheet_Calculate()
Columns.AutoFit
End Sub

Anzeige
AW: automatische Spaltenbreite bei Inhalt per Formel
13.03.2015 16:29:54
manega
Okay, das hilft schon weiter. Danke!
Im Prinzip funktioniert es, nur dauert es nach der Eingabe etwas, bis ich weiter machen kann.
Das wird sicherlich an der Größe der Tabelle liegen (immerhin 800 Spalten).
Ich verstehe nur nicht, wenn ich dieses Makro nur auf ein Tabellenblatt anwende, dauert es ca. 1 Sekunde bis ich weitere Einträge machen kann. Wende ich es auf 2 Tabellen an, dauert es schon fast 1 Minute!
Oder habe ich den Code an falscher Stelle eingefügt?
Bei mir steht er direkt im Tabellenblatt.

AW: automatische Spaltenbreite bei Inhalt per Formel
13.03.2015 16:45:58
Helmut
Diesen Code hast Du aber schon gelöscht?
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Columns("C:D").EntireColumn.AutoFit
End Sub
Ansonsten, ohne die Datei und Formeln zu kennen ?
Ich lass mal den Beitrag offen.
Gruß

Anzeige
AW: automatische Spaltenbreite bei Inhalt per Formel
14.03.2015 09:09:08
manega
Ja, diesen Code habe ich vorher entfernt.
Hier noch mal mehr Details zur Datei:
Es ist eine recht umfangreiche Datei zur Berechnung von Material Ein und -Ausgängen.
In einem Tabellenblatt (Material) werden in den Spalten A-D das Material und Artikelnummern eingetragen.
Das geschieht in den Zeilen 10 bis 800.
Dann gibt es ein zweites Tabellenblatt, in dem die Menge der einzelnen Materialien zu einzelnen Baugruppen zugeordnet wird. Die Baugruppen stehen in der Spalte C.
In den Spalten E4 bis ADO4 stehen folgende Formeln:
=INDEX(Material!$A:$A;SPALTE(J8)) bis =INDEX(Material!$A:$A;SPALTE(ADT8))
Mit diesen Formeln erreiche ich, dass die Materialen aus dem ersten Tabellenblatt aus Spalte A in diesem Blatt in Zeile 4 dargestellt werden
Es gibt noch 2 weitere Tabellenblätter für Berechnungs- und Informationszwecke in denen der Aufbau ähnlich ist und auch diese Formeln verwendet werden.
Das Problem ist nun, dass die Spaltenbreite nach Möglichkeit in allen Blättern automatisch angepasst werden soll.
Mit Deinem Code
Private Sub Worksheet_Calculate()
Columns.AutoFit
End Sub
funktioniert es im Prinzip auch wunderbar, aber nur solange ich ihn nur in einem Blatt verwende.
Bei Anwendung in mehreren Blättern dauert die Berechnung sehr lange!

Anzeige
AW: automatische Spaltenbreite bei Inhalt per Formel
14.03.2015 14:16:18
Oberschlumpf
Hi #Name?!!
Der Grund ist, dass das Calculate-Ereignis bei jeder Formelberechnung ausgelöst wird.
Bedeutet, verwendest du in der Datei 10 Formeln, wird der Code im Calculate-Ereignis maximal 10x durchgeführt, wenn denn alle 10 Formeln unabhängig voneinander sind.
Verwendest du in der Datei 100 Formeln, wird der Code im Calculate-Ereignis maximal 100x durchgeführt, wenn denn alle 100 Formeln unabhängig voneinander sind.
"Hochgeschaukelt" wird das Ganze zusätzlich, wenn z Bsp 100 Formeln abhängig aufeinander reagieren.
Das ist dann wie Ping-Pong.
Du musst also dafür sorgen, dass der Code im Calculate-Ereignis nur dann ausgeführt wird, wenn er ausgeführt werden soll.
Damit meine ich, der Code müsste sich mit Hilfe globaler Variablen "merken", welches sind die Werte, auf dessen Änderung der Code im Calculate-Ereignis reagieren soll.
Ich kenn leider keine Lösung, bin aber fast sicher, du findest bei Google etwas Passendes.
Ciao
Thorsten

Anzeige
AW: automatische Spaltenbreite bei Inhalt per Formel
15.03.2015 10:02:24
manega
Hallo Thorsten,
das klingt irgendwie einleuchtend. Daher habe ich gleich mal versuchsweise so ziemlich alle
für diesen Test überflüssigen Formeln entfernt.
Das Resultat bleibt leider das Selbe. Trage ich den Code nur in einem Taellenblatt (egal welches) ein, geht es ziemlich zügig. Trage ich den Code in mehrere Tabellen ein, dauert es ewig.
Ich habe mal nach Deinem Vorschlag mit den Variablen gegoogelt, habe aber leider nichts dazu gefunden.
Gruß
Matthias
Trotzdem vielen Dank!
Matthias

AW: automatische Spaltenbreite bei Inhalt per Formel
15.03.2015 10:23:22
Oberschlumpf
Hi Matthias
Und wieso zeigst du uns deine Bsp-Datei inkl. Code + allem, was erdorderlich ist, dein Problem zu verstehen, nicht mal...per Upload?
Denn, ohne, dass wir deine Datei kennen, wird es ein Rätselraten bleiben...denk ich.
Vielleicht findet sich ja jemand, der ne Lösung kennt, nachdem er mal deine Bsp-Datei sehen konnte.
Ciao
Thorsten

Anzeige
AW: automatische Spaltenbreite bei Inhalt per Formel
16.03.2015 17:27:55
manega
Hallo Thorsten,
ich habe mal meine Datei soweit abgespeckt, dass ich sie hier hochladen kann.
In dieser stark reduzierten Variante laufen alle Codes natürlich reibungslos.
Aber vielleicht hat trotzdem jemand eine Erklärung für die lange Reaktionszeit!?
Hier noch kurze Infos zur Datei:
Im Blatt "Material" werden in den Spalten A und B die Materialien eingetragen.
Diese werden in den anderen 3 Blättern per Formel
=INDEX( Material!$A:$A;SPALTE(J8))
in den Zeilen 4 und 5 wiedergegeben.
Im Blatt "Baugruppen" wird nur die Anzahl der benötigten Materialien für die einzelnen Baugruppen eingetragen.
Die Blätter "Liste" und "Info" sind im Grunde identisch. Die eine ist nur für Informationszwecke vorgesehen, in der Anderen findet die eigentliche Berechnung statt. Das Blatt "Info" ist in der Beispieldatei nicht enthalten!
Ziel ist: Wenn ich im Blatt "Material" in den Spalten A und B Einträge mache, soll die Spaltenbreite in den anderen Blättern an entsprechender Stelle angepasst werden.
Das Problem: Alle getesteten Codes funktioniern im Blatt "Baugruppen" reibungslos. In den anderen beiden Blättern dauert es ca. 1-2 Minuten bis der Code durchgelaufen ist.
Die gleiche Zeit wird übrigens auch benötigt, wenn ich alle Spalten manuell auswähle und die Spaltenbreite anpasse.
Wie gesagt, in dieser abgespeckten Fassung läuft alles super.
Gruß
Matthias
https://www.herber.de/bbs/user/96405.zip

Anzeige
AW: automatische Spaltenbreite bei Inhalt per Formel
16.03.2015 18:31:38
Oberschlumpf
Hi Matthias,
ich bat dich...Zitat von mir:
"Und wieso zeigst du uns deine Bsp-Datei inkl. Code + allem, was erdorderlich ist, dein Problem zu verstehen..."
In deiner Datei ist kein einziger VBA-Code vorhanden.
Wenn du anderer Meinung bist, dann lad deine Datei mal selbst runter + öffne die Datei + den VBE.
Außerdem enthalten viele Formeln in deiner Datei das Wort "Bezug", was wohl darauf hindeutet, dass genau die Tabellenblätter fehlen, die in den Formeln benötigt werden.
Laut deiner Level-Angabe hast du von VBA noch nicht sooo viel Ahnung, was auch gar nicht schlimm ist.
Jeder, auch ich, fängt klein an.
Aber bei DER Bsp-Datei von dir, weiß ich überhaupt nicht, wo ich anfangen soll, anzupassen.
Ich verstehe ja nicht mal die Formeln, da sie - nicht - vollständig sind.
Sorry, wer anders bitte....
Ciao
Thorsten

Anzeige
AW: automatische Spaltenbreite bei Inhalt per Formel
16.03.2015 20:56:45
manega
Hallo Thorsten,
das habe ich schon befürchtet. Sorry!
Ich würde ja gerne die komplette Datei zu Verfügung stellen, habe aber keine Ahnung wie ich sie in der Größe (ca. 6,2 MB) hochladen kann!
Hast Du eine Idee?
Gruß
Matthias

AW: automatische Spaltenbreite bei Inhalt per Formel
16.03.2015 22:14:13
Oberschlumpf
Hi Matthias,
versuch mal die Datei mit 7Zip im 7z-Format zu zippen. Benenn sie von ?.7z um in ?.zip, wenn der Download von 7z-Dateien hier nicht möglich ist. Wenn du so vorgehst, musst du natürlich in deinem nächsten Beitrag darauf hinweisen, dass die Datei nach dem Herunterladen in ?.7z umbenannt werden muss.
Wenn auch eine im 7z-Format verpackte Datei nicht unter 300kb Größe kommt, dann...
...erstell eine Bsp-Datei mit Bsp-Daten, funktionierenden Formeln, dem schon vorhandenen VBA-Code.
Hauptsache, die Datei funktioniert wenigstens mit den Formeln.
Dass in der Bsp-Datei natürlich keine mehrminütige Wartezeit zu erwarten ist, ist klar.
Und vergiss nicht, zu erwähnen, wann genau welche Spalten per VBA-Code die optimale Spaltenbreite erhalten sollen.
Also, nach Eingabe, sonstige Art der Änderung in welchen Zellen soll der VBA-Code starten?
Ciao
Thorsten

Anzeige
AW: automatische Spaltenbreite bei Inhalt per Formel
17.03.2015 17:32:31
manega
Hallo Thorsten,
Hier der Link zu meiner Datei in vollem Umfang:
https://www.dropbox.com/s/8wrfdo3oy0s0fvm/Beispieldatei.xlsm?dl=0
Und hier noch einmal wie bereits vorher schon einmal geschrieben kurze Infos zur Datei:
Im Blatt "Material" werden in den Spalten A und B die Materialien eingetragen.
Diese werden in den Blättern "Liste" und "Info" ab Spalte BT und im Blatt "Schränke" ab Spalte E per Formel
=INDEX( Material!$A:$A;SPALTE(J8))
in den Zeilen 4 und 5 wiedergegeben.
Im Blatt "Schränke" wird nur die Anzahl der benötigten Materialien für die einzelnen Baugruppen eingetragen.
Die Blätter "Liste" und "Info" sind im Grunde identisch. Die eine ist nur für Informationszwecke vorgesehen, in der Anderen findet die eigentliche Berechnung statt.
Ziel ist: Wenn ich im Blatt "Material" in den Spalten A und B Einträge mache, soll die Spaltenbreite in den anderen Blättern an entsprechender Stelle angepasst werden.
Das Problem: Alle getesteten Codes funktioniern im Blatt "Schränke" reibungslos. In den anderen beiden Blättern dauert es ca. 1-2 Minuten bis der Code durchgelaufen ist.
Die gleiche Zeit wird übrigens auch benötigt, wenn ich alle Spalten manuell auswähle und die Spaltenbreite anpasse.
Der Unterschied zwischen den Blättern besteht darin, dass im Blatt "Schränke" in den Spalten nur Zahlen stehen. In den anderen beiden Blättern stehen dort Formeln.
Diese habe ich mal gelöscht. Danach ging die Anpassung der Spaltenbreite wie gewohnt schnell!
Vielleicht findest Du oder jemand anderes eine Lösung dafür!
Gruß
Matthias

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige