Wie zu erkennen, Werte, die nicht passen Sie in Excel Zellen mit VBA?
Wir sind die Erzeugung von langen Excel-sheets mit diversen tools, die müssen überprüft werden und als input weiter unten in den workflow.
Das problem, dass einige Zellen sind zu klein für die Texte, die Sie enthalten.
Also, Menschen und Programme, die Lesen die Arbeitsblätter werden nicht die gleichen Daten.
Dies ist normalerweise der Fall für zusammengeführte Zellen mit auto-Texte verpackt, wenn Excel nicht passen Sie die Zeilenhöhe korrekt. Aber es gibt auch andere Fälle: zum Beispiel, wenn einige Spalten die Breite explizit festgelegt, das ist nicht genug für long-Werte.
|Group|Def1 |Subgroup|Definition| Id |Data |Comment |
|-------------------------------------------------------|
| G1 | | G1-1 |Important |G1-1-1|... | |
| |Long | |about G1-1|G1-1-2|.....|........ |
| |text |-------------------------------------------|
| |about| G1-2 |Another |G1-2-1|... | |
| |group| |important |G1-2-2|... |long comme|
| |G1. | |text about|G1-2-3| | |
|-------------------------------------------------------|
Hier sind einige Zellen in der "Definition" und "Kommentar" sind nicht vollständig sichtbar.
Gibt es irgendeine Methode zu finden, wie Zellen programmgesteuert?
- Ich erinnere mich vage @SiddharthRout (es war vielleicht jemand anderes) posting eine Antwort auf eine sehr ähnliche Frage vor kurzem. Hoffentlich wird diese person post Ihre Lösung hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erkennen diese Zellen (ich Rede nicht davon, das problem zu lösen, können Sie die Text-Methode des Range-Objekts.
Beispielsweise
Range("A1").Value
könnte 123456789, aber wenn es formatiert als Zahl und die Spalte ist nicht breit genug,Range("A1").Text
wird "###" (oder wie viele # - Zeichen passen in die Zelle).Hier ist ein trick, den ich verwendet habe, vor:
Natürlich gilt dies für eine ganze Spalte zu einer Zeit. Weiterhin können Sie diese durch kopieren von Zellen eine nach der anderen, um eine dummy-Spalte und tun die
AutoFit
testen.Aber wahrscheinlich mehr nützlich für Sie ist eine frühere Antwort von mir auf diese Frage: Aufteilen von text auf mehrere Zeilen nach Spalte Breite. Es beschreibt eine Methode, um zu bestimmen, die Breite des Textes in einer bestimmten Zelle (und vergleichen Sie es mit der Zelle, wird die tatsächliche Breite zu ermitteln, ob der text passt oder nicht).
BEARBEITEN Reaktion auf Ihren Kommentar: Wenn einige Ihrer Zellen sind groß genug, um die Karte 2 oder mehr Zeilen text, dann können Sie einen ähnlichen Ansatz wie in meinem Vorherige Antwort, zuerst mit
.EntireRow.AutoFit
zu bestimmen, die Höhe der schriftart und.RowHeight
um zu bestimmen, wie viele Zeilen passen in die Zelle, dann, herauszufinden, ob der text passt, die Anzahl der Zeilen in einer Zelle, die Breite, mit der Methode der vorherigen Frage.Zusammenführung aufheben und alle Zellen in der Arbeitsmappe, und verwenden Sie
"Thisworkbook".sheets("Name").rows(index).entirerow.autofit
Und das gleiche gilt für Spalten.
Was halten Sie den zusammengeführten Zellen sowieso außer aus ästhetischen Gründen?
Nur der Wert des "base-Zelle" wird berücksichtigt (oben Links).
Stieß ich auf das gleiche problem heute. Ich versuche diesen trick Ausweichen. Vielleicht könnte es nützlich sein für Sie. Es kodiert für den Umgang mit einer Spaltenbreite verschmelzenden Bereichen:
Leider, wenn es mehrere Spalten mit zusammengeführten Zellen wie diese, vielleicht Ihre gegenseitigen Höhe benötigt werden, miteinander kollidieren und sich extra code nötig für die Wiederherstellung der Harmonie. Sieht aus wie ein Interessantes Stück code.
Möchten, Sie finden diese hilfreich.