Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1072to1076
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
Schriftgröße in einer AutoForm anpassen
06.05.2009 18:49:24
Enrico
Hallo zusammen,
ich suche jetzt schon seit einigen Stunden (leider ohne Erfolg...) nach einer Lösung zum folgenden Problem...
Ich habe in einer Tabelle per VBA einige AutoFormen angelegen lassen, welche auch Texte enthalten. Diese Texte sind unterschiedlich lang und benötigten daher verschiedene Schriftgrößen... Im Netzt habe ich bisher nur VBA Code zum anpassen der Autoform an den Text gefunden... ich benötige das aber genau umgekehrt, da die AutoFormen feste Größen haben müssen.
Hat jemand von euch einen Ansatz dazu?
Schonmal vielen Dank!!!
Grüße
Enrico

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schriftgröße in einer AutoForm anpassen
06.05.2009 19:57:45
Gerd
Hi,
um welche Art Autoform gehts?
mfg Gerd
AW: Schriftgröße in einer AutoForm anpassen
06.05.2009 20:15:30
Enrico
Hallo Gerd,
es ist ein Rechteck, was aus der zeichnen-symbolleiste stammt. ich erzeuge es mit dem folgenden code:
Set Rechteck.Element = ActiveSheet.Shapes.AddShape( _
msoShapeRectangle, Rechteck.Links, _
Rechteck.Oben, Rechteck.Breite, Rechteck.Höhe)
Der Text wird mit der folgenden Zeile eingefügt:
Rechteck.Element.Name = ActiveCell.Offset(0, 0)
mfg
Enrico
Keine Lösung mT
06.05.2009 20:39:37
Gerd
Hi,
eine der wenigen Lösungen ist nur schwer zu erklären und um ein Beispiel zu erstellen,
ist mir das zu unfangreich. Frage noch offen.
mfg Gerd
Anzeige
AW: Schriftgröße in einer AutoForm anpassen
06.05.2009 20:54:18
Peter
Hallo Enrico,
das kannst du dir mit dem Makro-Recorder doch aufzeichen und dann anpassen.
Bei mir ist - nicht angepasst - folgendes herausgekommen:
Option Explicit

Sub Makro3()
' Makro3 Makro
' Makro am 06.05.2009 von Peter Feustel aufgezeichnet
Application.CommandBars("Drawing").Visible = True
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 315.6, 172.8, 72#, 72#). _
Select
Selection.Characters.Text = "Dies ist mein Text, der ist verhext."
With Selection.Characters(Start:=1, Length:=13).Font
.Name = "Arial"
.FontStyle = "Fett"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
With Selection.Characters(Start:=14, Length:=23).Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Range("F25").Select
End Sub


Gruß Peter

Anzeige
AW: Schriftgröße in einer AutoForm anpassen
06.05.2009 20:59:16
Josef
Hallo Enrico,
das könnte man so lösen.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub sizeShape(TheShape As Shape, shpWidth As Double, shpHeight As Double)
  Dim intFontSize As Integer
  
  For intFontSize = 7 To 72
    With TheShape
      .TextFrame.Characters.Font.Size = intFontSize
      .TextFrame.AutoSize = True
      
      If .Width > shpWidth Or .Height > shpHeight Then
        .TextFrame.Characters.Font.Size = intFontSize - 1
        .TextFrame.AutoSize = False
        .Width = shpWidth
        .Height = shpHeight
        Exit For
      End If
    End With
  Next
End Sub

'Beispiel
Sub test()
  Dim objShp As Object
  For Each objShp In Sheets("Tabelle1").Shapes
    sizeShape objShp, 80, 60
  Next
End Sub

Gruß Sepp

Anzeige
AW: Schriftgröße in einer AutoForm anpassen
07.05.2009 20:27:37
Enrico
Hallo Sepp,
danke für deine Antwort, dass bringt mich schon ganz nah ans Ziel!!! Schonmal vielen Dank!
Gibt es dabei eine Möglichkeit bereits erstellte Objekte anzusprechen. Der Name der Autoform ist dabei noch als variable deklariert und kann, um bei meinem Beispiel zu bleiben, mit TextboxName angesprochen werden.
Nochmals vielen Dank!
Gruß
Enrico
AW: Schriftgröße in einer AutoForm anpassen
07.05.2009 22:04:07
Josef
Hallo Enrico,
du kannst doch innerhalb deines Codes, nachdem du den Text in das Rechteck geschrieben hast,
einfach meine Sub mit der Objektvariablen des Rechteckes aufrufen.
Gruß Sepp

Anzeige
AW: Schriftgröße in einer AutoForm anpassen
08.05.2009 11:26:12
Enrico
Hallo Sepp,
irgendwie tue ich mich schwer damit... sorry! Habe jetzt folgendes im Code stehen:

Sub test()
Dim TextboxName As Object
sizeShape TextboxName, 80, 60
End Sub


Bei durchlaufen stolpere ich dann an der Stelle...
.TextFrame.Characters.Font.Size = intFontSize
...wo er mir dann einen Fehler mit der folgenden Nachricht auswirft:
"Laufzeitfehler '91':
Objektvariable oder With-Blockvariable nicht festgelegt"
Gruß
Enrico

AW: Schriftgröße in einer AutoForm anpassen
10.05.2009 09:04:11
Josef
Hallo Enrico,
zeig doch mal den gesamten Code, mit dem du die Rechtecke einfügst.
Gruß Sepp

Anzeige
AW: Schriftgröße in einer AutoForm anpassen
11.05.2009 15:23:20
Enrico
Hallo Sepp,
folgend der ganze Code... Nochmals vielen Dank für deine Unterstützung!!!
Option Explicit
Sub LOOPAnlageFixelObjekt()
Sheets("FIXEL").Select
Range("A2").Select
Do
Call AnlageFixelObjekt
ActiveCell.Offset(1, 0).Select
Loop Until IsEmpty(ActiveCell.Offset(0, 0))
End Sub



Public Sub AnlageFixelObjekt()
Dim Rechteck As MeinRechteckTyp
Rechteck.Höhe = ActiveCell.Offset(0, 15).Value
Rechteck.Oben = ActiveCell.Offset(0, 13).Value
Rechteck.Links = ActiveCell.Offset(0, 12).Value
Rechteck.Breite = ActiveCell.Offset(0, 16).Value
Set Rechteck.Element = ActiveSheet.Shapes.AddShape( _
msoShapeRectangle, Rechteck.Links, _
Rechteck.Oben, Rechteck.Breite, Rechteck.Höhe)
Rechteck.Element.Name = ActiveCell.Offset(0, 0)
Set Rechteck.Element = Nothing
Call test
End Sub


Sub test()
Dim textboxname As Object
sizeShape textboxname, 80, 60
End Sub


Sub sizeShape(TheShape As Shape, shpWidth As Double, shpHeight As Double)
Dim intFontSize As Integer
For intFontSize = 7 To 72
With TheShape
.TextFrame.Characters.Font.Size = intFontSize
.TextFrame.AutoSize = True
If .Width > shpWidth Or .Height > shpHeight Then
.TextFrame.Characters.Font.Size = intFontSize - 1
.TextFrame.AutoSize = False
.Width = shpWidth
.Height = shpHeight
Exit For
End If
End With
Next
End Sub


Gruß
Enrico

Anzeige
AW: Schriftgröße in einer AutoForm anpassen
11.05.2009 19:01:21
Josef
Hallo Enrico,
da ich deinen Variablentyp "Rechteck" nicht kenne, hab ich den Code umgebaut und auch gleich
die .Select und .Activate rausgenommen. (hätte ich bei "VBA-gut" nicht erwartet)
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit
Private lngRow As Long

Sub LOOPAnlageFixelObjekt()
  Dim lngLast As Long
  
  With Sheets("FIXEL")
    lngLast = Application.Max(2, .Cells(Rows.Count, 1).End(xlUp).Row)
    lngRow = 2
    Do
      Call AnlageFixelObjekt
      lngRow = lngRow + 1
    Loop Until lngRow > lngLast
  End With
End Sub

Public Sub AnlageFixelObjekt()
  Dim Rechteck As Shape
  Dim shpH As Double, shpO As Double, shpL As Double, shpB As Double
  
  With Sheets("FIXEL")
    shpH = .Cells(lngRow, 16).Value
    shpO = .Cells(lngRow, 14).Value
    shpL = .Cells(lngRow, 13).Value
    shpB = .Cells(lngRow, 17).Value
    
    Set Rechteck = .Shapes.AddShape(msoShapeRectangle, shpL, shpO, shpB, shpH)
    
    Rechteck.TextFrame.Characters.Text = .Cells(lngRow, 1)
    sizeShape Rechteck, shpB, shpH
  End With
  
  Set Rechteck = Nothing
End Sub

Sub sizeShape(TheShape As Shape, shpWidth As Double, shpHeight As Double)
  Dim intFontSize As Integer
  
  For intFontSize = 7 To 72
    With TheShape
      .TextFrame.Characters.Font.Size = intFontSize
      .TextFrame.AutoSize = True
      
      If .Width > shpWidth Or .Height > shpHeight Then
        .TextFrame.Characters.Font.Size = intFontSize - 1
        .TextFrame.AutoSize = False
        .Width = shpWidth
        .Height = shpHeight
        Exit For
      End If
    End With
  Next
End Sub

Gruß Sepp

Anzeige
AW: Schriftgröße in einer AutoForm anpassen
12.05.2009 11:16:24
Enrico
Funktioniert bestens! Nochmals vielen Dank!
Gruß
Enrico

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige