Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Textfeld formatieren

Textfeld formatieren
29.05.2008 08:48:00
Gregor
Hallo
Ich habe auf einem Tabellenblatt viele Textfelder (Text Box), die mit Namen beschriftet sind. In einem zweiten Tabellenblatt habe ich in Spalte A die Namen dieser Textfelder aufgeführt. Nun will ich diese anhand der Kriterien in Spalte B formatieren (zB. wenn Eintrag ja dann fett, wenn nein dann normal, usw).
Das heisst, ich eruiere mit der For to Schleife den ersten Namen in Spalte A (zB. Muster) sowie das Krieterim in Spalte B (zB. ja).
Wie finde ich im Tabellenblatt das Textfeld "Muster" und wie kann ich dieses Fett formatieren?
Danke und Gruss
Gregor

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfeld formatieren
29.05.2008 09:05:03
Beverly
Hi Gregor,
versuche es so:
Worksheets("Tabelle1").Shapes("Muster")


AW: Textfeld formatieren
29.05.2008 09:19:00
Gregor
Hallo Karin
Das funktioniert leider nicht. Ich habe in der gleichen Tabelle noch runde (AutoShapeType = msoShapeOval) und dreieckige (msoShapeIsoscelesTriangle) Shapes die gleich benannt sind wie die Text Box. Ich möchte die Text Box fromatieren.
Für weitere Unterstützung bin ich dankbar.
Gregor

AW: Textfeld formatieren
29.05.2008 09:35:00
Beverly
Hi Gregor,

Sub shapes_markieren()
Dim shShape As Shape
For Each shShape In Worksheets("Tabelle1").Shapes
If shShape.Name = "Muster" And shShape.Type = msoTextBox Then
shShape.Select  ' hier deinen Code zum Formatieren
End If
Next shShape
End Sub




Anzeige
Ohne Select... mit Shapes!
29.05.2008 09:55:00
Renee
Hi Karin,
Es geht auch ohne .Select !

Sub Fettiger()
Dim shC As Shape
Dim lRow As Long
For Each shC In Tabelle1.Shapes
If shC.Type = msoTextBox Then
For lRow = 2 To Tabelle2.Range("A" & Tabelle2.Rows.Count).End(xlUp).Row
If shC.Name = Tabelle2.Cells(lRow, 1) Then _
shC.OLEFormat.Object.Font.Bold = (Tabelle2.Cells(lRow, 2) = "ja")
Next lRow
End If
Next
End Sub


GreetZ Renée

AW: Ohne Select... mit Shapes!
29.05.2008 10:18:00
Beverly
Hi Renée,
ich weiß, dass es ohne Select geht, da ich selbst ein Verfechter bin, auf Select und Activate nach Möglichkeit zu verzichten (kannst du auch in verschiedenen Beiträgen nachlesen). Mein Code war nur ein Beispiel dafür, wie man die Shapes von einander unterscheiden kann, denn der Code zum Formatieren existiert ja offensichtlich schon (habe ich aus dem 1. Beitrag so entnommen). Deshalb steht hinter shShape.Select auch der Hinweis, dass dort der eigentliche Code zum Formatieren hin gehört.


Anzeige
AW: Textfeld formatieren
29.05.2008 09:13:21
Renee
Hi Gregor,
Mall so als Ansatz (Spalte A in Tabelle2 enthält die Namen der TextBoxen!):

Sub Fettig()
Dim objC As Object
Dim lRow As Long
For Each objC In ActiveSheet.OLEObjects
For lRow = 2 To Tabelle2.Range("A" & Tabelle2.Rows.Count).End(xlUp).Row
If objC.Name = Tabelle2.Cells(lRow, 1) Then _
objC.Object.Font.Bold = (Tabelle2.Cells(lRow, 2) = "ja")
Next lRow
Next
End Sub


GreetZ Renée

AW: Textfeld formatieren
29.05.2008 09:32:00
Gregor
Hallo Renee
Beim Befehl "For Each objC In ActiveSheet.OLEObjects" springt das Makros direkt auf End Sub. Das aktive Blatt ist das Blatt mit den vielen Text Box.
Woran liegt das?
Danke Gregor

Anzeige
AW: Textfeld formatieren
29.05.2008 09:43:00
Renee
Hi Gregor,
Ich habe angenommen, es handelt sich um Textboxen aus der Steuerelements-Toolbox!
Anscheinend aber um Shapes oder Formularsteuerelemente ?
Ein kleine Beispielmappe würde solche Missverständnisse (die immer und immer wieder vorkommen) von Anfang an verhinder!
GreetZ Renée

Danke
29.05.2008 12:18:00
Gregor
Karin, Renee
Vielen Dank, konnte mein Problem mit euren Inputs und mit probieren wie folgt lösen:

Sub Formatierung_Textfeldname()
Dim sh As Object
For Each sh In ActiveSheet.TextBoxes
Name = sh.Text
Set SuBe = Worksheets(1).Range("A:A").Find(Name, LookAt:=xlWhole)
If Not SuBe Is Nothing Then
If Worksheets(1).Cells(SuBe.Row, 2) = "ja" Then
sh.Font.Bold = True
Else
sh.Font.Bold = False
End If
End If
Next
End Sub


Gregor

Anzeige
AW: Bitte, aber...
29.05.2008 12:32:00
Renee
ich möchte doch noch auf dieses hinweisen, Gregor.
Vielleicht funktioniert ja der Code, aber das ist IMHO in diesem Fall, reiner Zufall.
Verwende niemals reservierte VBA Worte (z.B. Name) als Variablennamen, dass kann u.U. zu ausserordentlich schwer auffindbaren Fehlern führen. Verwende immer die Option Explicit Anweisung als erste Zeile in einem Codemodul.
Darum, wäre besser:

Sub Formatierung_Textfeldname()
Dim sh As Object
Dim SuBe
For Each sh In ActiveSheet.TextBoxes
Set SuBe = Worksheets(1).Range("A:A").Find(sh.Text, LookAt:=xlWhole)
If Not SuBe Is Nothing Then sh.Font.Bold = (Worksheets(1).Cells(SuBe.Row, 2) = "ja")
Next
End Sub


Zudem ist mir nicht klar, was der Inhalt einer Textbox (sh.Text) mit deren Namen zu tun haben soll ?
GreetZ Renée

Anzeige
AW: Bitte, aber...
30.05.2008 07:59:13
Gregor
Hallo Renée
Vielen Dank noch für deinen Hinweis und deinen Tipp, welchen ich natürlich zukünftig beachten werde.
Der Ihnalt der Textbox (sh.Text) ist immer eine Ortsbezeichnung, die ich je nach Angaben in Spalte 3 Fett markieren will.
Gregor

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige