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

zufällige Schriftart und Schriftgröße

zufällige Schriftart und Schriftgröße
06.08.2013 16:23:50
Albert
Hallo zusammen,
ich verwende nachfolgenden Code, um für eine Zahlenreihe von 1 bis 100 immer eine andere Schriftart und Schriftgröße zu verwenden.
Sub testntest()
Dim wks As Worksheet
Dim Zeile As Long
Dim rngZelleX As Range
With Sheets("Tabelle1")
For Each rngZeileX In Sheets("Tabelle1").Range("C3:C102").Cells
For Zeile = 3 To 103
With Selection.Font
.Name = Range("I9").Value
.Size = Range("J9").Value
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Next
Next
SendKeys ("{F9}")
End With
End Sub

Die Schriftart ist in Zelle I9 und die Größe in J9.
Irgendwie funktioniert das nicht.
Weiß von euch jemand Hilfe?
Gruß
A.

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

Betreff
Datum
Anwender
Anzeige
AW: zufällige Schriftart und Schriftgröße
06.08.2013 16:54:01
hary
Moin
Schreibfehler in Variable(rngZeileX) und wozu die zweite Schleife? Da fehlt wohl noch ein Codeteil oder?
Sub testntest()
Dim wks As Worksheet
Dim Zeile As Long
Dim rngZelleX As Range
With Sheets("Tabelle1")
For Each rngZelleX In Worksheets("Tabelle1").Range("C3:C102")
For Zeile = 3 To 103
With Selection.Font
.Name = Range("I9").Value
.Size = Range("J9").Value
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Next
Next
SendKeys ("{F9}")
End With
End Sub

Anzeige
AW: zufällige Schriftart und Schriftgröße
06.08.2013 17:14:06
Erich
Hi Albert,
es sei mir einmal erlaubt, deinen Code ein wenig "auseinanderzunehmen". Ich will damit nicht meckern oder so,
ich hoffe, du kannst das positiv annehmen.
Hier noch mal dein Code - etwas kommentiert und lauffähig:

Option Explicit         ' IMMER zu empfehlen
Sub testntest()
Dim wks As Worksheet    ' unbenutzt
Dim Zeile As Long
Dim rngZelleX As Range  ' unbenutzt
Dim rngZeileX As Range  ' fehlte
With Sheets("Tabelle1")
For Each rngZeileX In Sheets("Tabelle1").Range("C3:C102").Cells
'        For Zeile = 3 To 103
'           With Selection.Font              ' Was ist gerade selektiert?
With rngZeileX.Font
.Name = Range("I9").Value
.Size = Range("J9").Value
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
'        Next              ' Warum 2 For-Schleifen?
Next
'     SendKeys ("{F9}")    ' wofür steht das hier?
End With
End Sub
Option Explicit sollte oben in jedem deiner Module stehen. Dann fällt dir ein Variablen-Schreibfehle
wie mit rngZelleX/rngZeileX sofort auf.
Du hast zwei For-Schleifen im Code stehen, aber die Schleifenvariablen rngZeileX bzw. Zeile kommen
in der Schleife gar nicht vor. Das bedeutet, dass 100*100=10000 mal dasselbe ausgeführt wird.
Innerhalb der Schleifen wird "Selection.Font" bearbeitet. Selection ist die gerade aktuelle Markierung.
Das kann irgend ein Bereich sein - mit deinen Schleifen hat das gar nichts zu tun.
Wofür sollte denn das SendKeys am Ende gut sein?
Jetzt mein Vorschlag. Der nutzt, dass man einem ganzen Bereich zusammen eine Schriftgröße usw. geben kann.
(So macht man es ja auch in Excel - man würde nie jede Zele einzeln bearbeiten.)
So geht's auch:

Option Explicit         ' IMMER zu empfehlen
Sub testntest2()
With Sheets("Tabelle1").Range("C3:C102").Font
.Name = Range("I9").Value
.Size = Range("J9").Value
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: @Erich
06.08.2013 17:26:32
hary
Hallo Erich
Schaetze mit SendKeys ("{F9}") berechnet er eine Zufallszahl neu aus der die neue Schriftart(I9) und Groesse(J9) hervorgeht.
Aber nix genaues weiss man nicht.
gruss hary

AW: @Erich
07.08.2013 07:15:30
Albert
Guten Morgen ihr beiden,
Erich hat Recht... das Sendkeys soll die Zufallszahl neu berechnen.
Ich teste gleich eure Codes.
Vielen herzlichen Dank
Gruß
A.

AW: zufällige Schriftart und Schriftgröße
07.08.2013 07:30:07
Albert
Hallo nochmal,
also... ich hab jetzt nachfolgenden Code getestet.

Sub testntest()
Dim wks As Worksheet    ' unbenutzt
Dim Zeile As Long
Dim rngZelleX As Range  ' unbenutzt
Dim rngZeileX As Range  ' fehlte
'  With Sheets("Tabelle1")
For Each rngZeileX In Sheets("Tabelle1").Range("C3:C102").Cells
'           With Selection.Font              ' Was ist gerade selektiert?
With rngZeileX.Font
.Name = Range("I9").Value
.Size = Range("J9").Value
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
SendKeys ("{F9}")    ' wofür steht das hier?
Next rngZeileX
'End With
End Sub
Der Code ändert innerhalb der 100 Zellen immer in die gleiche Schriftart und -größe und nicht so, dass Zeile 1 eine andere Schriftart und -größe hat wie die Zeile 2.
Danke nochmal für eure bisherige Hilfe.
Gruß
A.

Anzeige
welche Formeln?
07.08.2013 09:45:41
Erich
Hi Albert,
in I9 und J9 stehen bei dir wohl Formeln. Schreibst du uns bitte mal, welche?
Das ist vielleicht nicht ganz unwichtig für die Beantwortung seiner Frage. ;-)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW: welche Formeln?
07.08.2013 10:11:15
Albert
Hallo Erich,
da stehen Sverweis-Formeln drin.
Die eine sucht via Zufallszahl die Schriftart aus und die andere Formel die Schriftgröße.
Hilfreich gewesen?
Gruß
A.

kaum hilfreich
07.08.2013 10:38:29
Erich
Hi Albert,
ich hatte dich nach den Formeln gefragt. Willst du die nicht preisgeben?
Der Weg über die Formeln in I9:J9 mit ständiger Neuberechnung ist IMHO zwar machbar, aber wenig geeignet.
Einfacher wäre es, die Zufallszahlen direkt in VBA zu erzeugen und daraus Size und Fontname zu berechnen,
ohne den Umweg über die beiden Zellen.
Dazu wäre natürlich mehr Kenntnis über deine SVERWEIS-Bereiche uw. vonnöten.
Woher z. B. kommt deine Liste mit den Fontnamen?
Oder wilst du unbedingt mit Zufallszahlen in der Tabelle arbeiten?
Noch eins: Der Teil ohne .Size und .Name

With Sheets("Tabelle1").Range("C3:C102").Font
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
ist doch für alle Zellen des Bereichs gleich. Das muss nicht in der Schleife für jede Zelle einzeln getan werden.
Vielleicht kann man diese Festlegungen auch einfach ganz weglassen - weil sich eh nichts ändert.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: kaum hilfreich
07.08.2013 12:21:55
Albert
Hi Erich,
sorry, das war mir so nicht bewusst.
In der Datei sind keine Geheimnisse oder ähnliches. Deshalb häng ich sie einfach mal an.
https://www.herber.de/bbs/user/86747.xlsm
Gruß
A.

AW: Makro
07.08.2013 12:45:22
hary
Moin
Geht so:
Sub testntest()
Dim rngZeileX As Range
Application.ScreenUpdating = False
For Each rngZeileX In Sheets("Tabelle1").Range("C3:C102")
With rngZeileX.Font
.Name = Range("I9").Value
.Size = Range("J9").Value
End With
Calculate
Next
Application.ScreenUpdating = True
End Sub

gruss hary

Anzeige
AW: Makro
07.08.2013 13:01:58
Albert
Mahlzeit Erich,
das klappt ja wunderbar!
Vielen herzlichen Dank
Gruß
A.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige