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

Formeln anzeigen, ohne Spaltenbreite zu verändern?

Formeln anzeigen, ohne Spaltenbreite zu verändern?
23.03.2009 15:12:22
Ramon
Hallo alle zusammen,
ich habe mir auf einem Tabellenblatt, dass sehr viele Formeln enthält, 2 Buttons zum ein-
und ausblenden der Formeln "gebastelt". Dahinter stehen folgende simple Makros:

Sub formeln_anzeigen()
ActiveWindow.DisplayFormulas = True
'Cells.EntireColumn.AutoFit = False            --> Mein versuch! funktioniert aber nicht
End Sub



Sub ergebnisse_anzeigen()
ActiveWindow.DisplayFormulas = False
End Sub


Standardmäßíg vergrößert Excel beim Anzeigen der Formeln die Spaltenbreite. Und genau
das möchte ich unbedingt unterbinden! Ist das irgendwie möglich? - Der Versuch mit der
Anweisung "Cells.EntireColumn.AutoFit = False" funktioniert jedenfalls nicht.
Danke, Gruß,
Ramon

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formeln anzeigen, ohne Spaltenbreite zu verändern?
23.03.2009 15:17:31
Oberschlumpf
Hi Ramon
Was hältst du von der Idee, ...
...vor Anzeige der Formeln die Spaltenbreite zu ermitteln
...dann Formeln anzeigen
...und die vor ermittelte Spaltenbreite wieder zuweisen
?
Ciao
Thorsten
AW: Formeln anzeigen, ohne Spaltenbreite zu verändern?
23.03.2009 15:22:27
Ramon
Hi Thorsten,
Wenn es keine andere Möglichkeit gibt, wäre Dein Vorschlag
sicher ein guter Kompromiss. Verrätst Du mir, wie ich das
Code-technisch lösen kann?
Danke, Gruß,
Ramon
AW: Formeln anzeigen, ohne Spaltenbreite zu verändern?
23.03.2009 15:42:04
Jogy
Hi.
Wie kommst Du auf "VBA gut", wenn Du das nicht lösen kannst? Das sollte schon mit "VBA bescheiden" drin sein.
Egal, folgender Code macht genau das:

Sub test()
Dim zeLLe As Range
Dim colWid() As Double
Dim spaLte As Long
With ActiveSheet
ReDim colWid(.UsedRange.Column To .UsedRange.Column + .UsedRange.Columns.Count - 1)
' Spaltenbreiten zwischenspeichern
For spaLte = LBound(colWid) To UBound(colWid)
colWid(spaLte) = .Columns(spaLte).ColumnWidth
Next
ActiveWindow.DisplayFormulas = True
' Spaltenbreiten zurückschreiben
For spaLte = LBound(colWid) To UBound(colWid)
.Columns(spaLte).ColumnWidth = colWid(spaLte)
Next
End With
End Sub


Nur leider hilft der nicht, da Excel nicht die Spaltenbreite ändert, sondern die Spalten breiter darstellt. Ob sich das Deaktivieren läßt, kann ich leider nicht sagen, dazu nutze ich den Modus zu selten.
Eine Möglichkeit wäre, nach dem Einschalten der Formelüberwachung die Spalten schmäler zu machen (z.B. auf 50% der aktuellen Breite, das haut in etwa hin) und das beim Ausschalten wieder rückgängig zu machen.
Gruss, Jogy

Anzeige
AW: Formeln anzeigen, ohne Spaltenbreite zu verändern?
23.03.2009 16:09:42
Ramon
Danke Dir!
Ich denke doch, dass ich "VBA gut" durchaus von mir behaupten kann. Trotzdem
gibt es natürlich immer wieder Dinge, die man noch nie gemacht hat. Und dafür nutze
ich dann lieber dieses Forum hier, bevor ich selber 'ne Stunde rumprobiere, bis ich es
hinkriege.
Gruß,
Ramon
AW: Formeln anzeigen, ohne Spaltenbreite zu verändern?
23.03.2009 16:23:26
Jogy
Hi.
D.h. bevor Du eine Stunde damit verbringst, Dir das ändern von Spaltenbreiten anzuschauen (und länger dauert das nicht), soll Dir jemand anders die Arbeit machen? Da habe ich schon fast Lust, die Lösung nicht zu posten.
Aber was soll's jetzt habe ich es schon gemacht. Das nimmt jetzt nur die belegten Spalten und braucht eine freie Spalte am Ende als Hilfspalte. Kann man noch locker herausoptimieren, aber dazu ist mir jetzt wirklich die Lust vergangen:

Sub test()
Dim colWid() As Double
Dim spaLte As Long
Dim maxCol As Long
Dim tempWidth As Double
Application.ScreenUpdating = False
With ActiveSheet
maxCol = .UsedRange.Column + .UsedRange.Columns.Count - 1
ReDim colWid(.UsedRange.Column To maxCol)
' Spaltenbreiten zwischenspeichern
For spaLte = LBound(colWid) To UBound(colWid)
colWid(spaLte) = .Columns(spaLte).Width
Next
' Für das Ausschalten auf False, sonst bleibt alles gleicg
ActiveWindow.DisplayFormulas = True
' Spaltenbreite der Hilfspalte zwischenspeichern
tempWidth = .Columns(maxCol + 1).ColumnWidth
' Spaltenbreiten zurückschreiben
For spaLte = LBound(colWid) To UBound(colWid)
' Hilfsspalte mit anderer Spaltenbreite nötig
If .Columns(maxCol + 1).ColumnWidth = .Columns(spaLte).ColumnWidth Then
.Columns(maxCol + 1).ColumnWidth = 2 * .Columns(maxCol + 1).ColumnWidth
End If
' Breite korrigieren
.Columns(spaLte).ColumnWidth = _
.Columns(spaLte).ColumnWidth + (colWid(spaLte) - .Columns(spaLte).Width) * _
(Columns(maxCol + 1).ColumnWidth - Columns(spaLte).ColumnWidth) / _
(Columns(maxCol + 1).Width - Columns(spaLte).Width)
Next
' Breite der Hilfsspalte wiederherstellen
.Columns(maxCol + 1).ColumnWidth = tempWidth
End With
Application.ScreenUpdating = True
End Sub


Gruss, Jogy

Anzeige
AW: Formeln anzeigen, ohne Spaltenbreite zu verändern?
23.03.2009 16:54:45
Ramon
Danke Jogy!
Schade, dass das jetzt so negativ rübergekommen ist. Ich möchte keineswegs dass
sich jemand anders eine Stunde FÜR MICH hinsetzt um MEIN Probelm zu lösen. Das ist
auch nicht meine Erwartung an das Forum hier.
Aber oft ist es ja so, dass gerade jemand dieses Problem hatte und einen Kniff dafür
gefunden hat. Und dann ist es doch in der Regel nur Copy-Paste des entsprechenden
Code-Abschnitts.
Trotzdem danke, dass Du dir jetzt soviel Mühe gemacht hast.
Nichts für Ungut,
Gruß,
Ramon
AW: Formeln anzeigen, ohne Spaltenbreite zu verändern?
23.03.2009 17:04:50
Jogy
Hi.
Ist schon ok, in den letzten Tagen waren einige etwas unverständliche Level Angaben dabei, da bin ich wohl auch etwas gereizt. Es macht letztendlich die Hilfe nur umständlich, wenn die überzogen sind, weil man bei einem hohen Level doch mal - wie Oberschlumpf - davon ausgeht, dass der Ansatz reichen würde. Und wenn das dann nicht der Fall ist, dann wundert man sich doch ein wenig - vor allem da der erste Ansatz ja letztendlich nur aus dem Handling von Arrays und dem Lesen/Setzen der Breite besteht.
In dem Fall hätte der jetzt nicht zum Ziel geführt, da die wesentliche Eigenschaft .Width (=Breite in Pixel)und nicht .ColumnWidth ist - und diese sich blöderweise zwar auslesen, aber nicht schreiben läßt.
Grus, Jogy
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige