Frage zur ComboBox

Hallo allerseits,

habe hioer folgenden Code:

Sub ComboBoxen()
Dim Spa As Long, N As Integer, CB As OLEObject, wks As Worksheet
Application.ScreenUpdating = False
 Set wks = Worksheets("Tabbi")
 wks.OLEObjects.Delete
 For Spa = 7 To 105 Step 7 'For Spa = 7 To 70 Step 7
 N = N + 1
 Set CB = wks.OLEObjects.Add(ClassType:="Forms.ComboBox.1")
 With CB
 .Left = wks.Cells(8, Spa + 1).Left + 8 '.Left = wks.Cells(8, Spa).Left + 6
 .Top = wks.Cells(8, Spa + 1).Top + 3 '.Top = wks.Cells(8, Spa).Top + 2
 .Height = wks.Cells(9, 7).Top - wks.Cells(8, 7).Top - 4
 .Width = wks.Cells(8, 10).Left - wks.Cells(8, 7).Left - 12
 .Name = "Runde" & N
 .ListFillRange = "SE!H67:H70"
 End With
 Next Spa
Application.ScreenUpdating = True
End Sub

Die auskommentierten Zeilen sind die Originalzeilen und stammen von Reinhard.

Ich wollte die ComboBox um eine Spalte nach rechts verschieben,was mir auch gelungen ist. Nun wird mir aber der Text in der ComboBox viel zu gross angezeigt. Im Original-Code passt der Text.

Ich habe keine Ahnung von VBA und bin ganz stolz, dass ich das und noch einiges andere überhaupt hinbekommen habe.

Was habe ich eventuell vergessen oder gar falsch gemacht?

Gruss Frank

verschieben,was mir auch gelungen ist. Nun wird mir aber der
Text in der ComboBox viel zu gross angezeigt. Im Original-Code
passt der Text.

Hallo Frank,

das kann man so machen:

Sub tt()
Dim CB As OLEObject, wks As Worksheet
Set wks = Worksheets("Tabelle1")
Set CB = wks.OLEObjects.Add(ClassType:="Forms.ComboBox.1")
With CB
 .Height = 30
 .Object.Font.Bold = True
 .Object.Font.Size = 16
 .Object.Value = "YYZ"
End With
End Sub

Gruß
Reinhard

Hallo Reinhard,

mir geht es jetzt in erster Linie um das „Verstehen“. Ich habe die Code-Zeile nur so abgwandelt,dass die ComboBox um eine Spalte nach rechts geschoben wird. Wieso ist der Text in der ComboBox auf einmal so gross?

Irgendwas muss ich dann doch falsch gemacht bzw. was vergessen haben?

Gruss Frank

mir geht es jetzt in erster Linie um das „Verstehen“. Ich habe
die Code-Zeile nur so abgwandelt,dass die ComboBox um eine
Spalte nach rechts geschoben wird. Wieso ist der Text in der
ComboBox auf einmal so gross?

Irgendwas muss ich dann doch falsch gemacht bzw. was vergessen
haben?

Hallo Frank,

da bin ich echt überfragt. Die Textschriftgrößen in Comboboxen sind völlig unabhängig davon wo sie optisch gesehen in welcher Spalte sie stehen.

In meinem Code wird/werden ja mit
wks.OLEObjects.Delete
alle Comboboxen gelöscht, dann in einer Schleife neue angelegt.
Und dabei gibt ja mein Code keinerlei Schriftgrößen für Texte in der Combobox vor.

Deiner auch nicht.

Rein theoretisch müßte in beiden Codes so eine Combobox mit ihren Standardwerten für Höhe, Breite, Schriftgröße, Position usw. eingefügt werden,
also durch
Set CB = wks.OLEObjects.Add(ClassType:=„Forms.ComboBox.1“)

wird eine ComboBox erezeugt und dargestellt, und das geschieht immer ander gleichen Position, in der gleichen Größe, mit der gleichen Schriftgröße.
Wenn man also diesen Set-Befehl mehrmals aufruft sieht man im Blatt nur eine Combobox.
Aber alle anderen sind darunter, merkst man wenn man die oberste, nur an die kommt man manuell drn löscht, dann taucht die vorletzte auf usw.

Ups, hab mich wieder verplaudert :smile:
Zum Thema zurück. Diese Standardeinstellungen/vorgaben wie groß denn eine neu eingefügte CB ist, wo sie erscheint, welche Schriftart, Schriftgröße, da weiß ich grad nicht wie/wo und ob überhaupt man die ändern kann.

Das habe ich ja auch nicht getan im Code, genausoweing wie du mit deinem Code.
Wir haben sie ja beide gleichermaßen einfach mal „erscheinen“ lassen und dann wenn sie da ist mit dieser Codesequenz:

 With CB
 .Left = wks.Cells(8, Spa + 1).Left + 8 '.Left = wks.Cells(8, Spa).Left + 6
 .Top = wks.Cells(8, Spa + 1).Top + 3 '.Top = wks.Cells(8, Spa).Top + 2
 .Height = wks.Cells(9, 7).Top - wks.Cells(8, 7).Top - 4
 .Width = wks.Cells(8, 10).Left - wks.Cells(8, 7).Left - 12
 .Name = "Runde" & N
 .ListFillRange = "SE!H67:H70"
 End With

positioniert, die Größe geändert, benannt, und mit ListFillRange die Auswahlmöglichkeiten zugewiesen.

Was mir grad noch enfällt, ich entwickle meist mit XL 2000.
Hat jetzt mit dem Thema nix zu tun aber könnte ein Hinweis sein.
Wenn ich da eine neue mappe öffne so haben die zellen eine Zellenhöhe von 12,75.
Mache ich das in Excel 2007 so ist die Zellenhöhe 15.

Vielleicht liegt es dadran daß da unsre beiden Standardeinstellungen für CBs unterschiedlich sind?

Wenn es das auch nicht ist, sorry, wo ist denn eigentlich der hiesige Mod wenn man ihn mal braucht? *smile*

Was mir grad einfällt zum oben gesagten zur Version, laß das mal laufen, bei mir, XL 2000, wird 9,75 angezeigt.

Sub tt()
Dim CB, wks
Set wks = Worksheets(„Tabelle1“)
Set CB = wks.OLEObjects.Add(ClassType:=„Forms.ComboBox.1“)
MsgBox CB.Object.Font.Size
End Sub

Gruß
Reinhard

Hallo Reinhard,

habe es mal laufen lassen. Bei mir zeigt er auch 9,75 an.

Es kann ja dann auch nicht eventuell daran liegen,dass ich noch in den Modulen Änderungen vorgenommen habe,wenn gar keine Grösse angegeben ist.

Irgenwie schon merkwürdig. Werd also alles nochmals von vorne machen und schauen,wann sich die Schriftgrösse ändert.

Gruss Frank

Hallo Frank,

habe es mal laufen lassen. Bei mir zeigt er auch 9,75 an.

okay, dann liegt es nicht daran.

Es kann ja dann auch nicht eventuell daran liegen,dass ich
noch in den Modulen Änderungen vorgenommen habe,wenn gar keine
Grösse angegeben ist.

? Wie gesagt nimmt mein Code keinerlei Einfluß auf die Schriftgröße der CB.
Ohne deine Änderungen zu kennen sag ich mal aus dem bauch heraus wenn du da die Schriftgröße nicht veränderst im Code müßte sie 9,75 sein.

Lade mal deine abgeänderte Mappe hoch.
Welche Schriftgröße wird denn nach Codedurchlauf genommen und welche möchtest du?

Du weißt wie du manuell die Schriftgröße in Comboboxen in einer Excel Tabelle abändern kannst? nur mal so.

Gruß
Reinhard

Hallo,

so,habe mal alles zurück gesetzt und dann den Teil so abgeändert:

Set CB = wks.OLEObjects.Add(ClassType:="Forms.ComboBox.1")
 With CB
 .Left = wks.Cells(8, Spa + 1).Left + 6 '.Left = wks.Cells(8, Spa).Left + 6
 .Top = wks.Cells(8, Spa + 1).Top + 2 '.Top = wks.Cells(8, Spa).Top + 2
 .Height = wks.Cells(9, 7).Top - wks.Cells(8, 7).Top - 4
 .Width = wks.Cells(8, 10).Left - wks.Cells(8, 7).Left - 12
 .Name = "Runde" & N
 .ListFillRange = "SE!H67:H70"
 End With

Was besagt eigentlich dieses .Left + 6 bzw. .Top + 2 ?

Gruss Frank

Nachtrag zur ComboBox
Huhu,

nachdem ich nun alles zurückgesetzt habe und alles nochmal Schritt für Schritt abgeändert habe,klappt es so ziemlich. Nun habe ich zwar die normale Schriftgrösse aber das „Fett“ is nun weg.

Ist doch mal ein Fall für unseren Excel Guru…fg

Gruss Frank

Was besagt eigentlich dieses .Left + 6 bzw. .Top + 2 ?

Hallo Frank,

ein normales Koordinatenkreuz kennst du und weißt was x=0 und y=0 bedeutet? Das ist der Nullpunkt.

Der 0,0 Nullpunkt liegt bei Excel oben links.
x-Werte sind dann die Left Werte
y-Werte sind dann die Top Werte

Also liegt der Punkt
Left=100, Top=200
100 Einheiten vom Nullpunkt aus gesehen rechts und 200 Einheiten unterhalb des Nullpunktes.
Ich benutze bewußt das Wort Einheiten. Stelle dir es einfach erstmal als punkte o.ä. vor.

Jetzt will ich da so eine CB positionieren, sodaß sie rechts von Zelle G5 steht. Also über H5 beginnt.
Dann sage ich
CB.left=Range(„H5“).left

Dann steht sie dort.
Nun hast du aber in deinen mappen deien Comboxen bezogen auf das Beispiel nicht genau auf H5 positionierst sondern einige Einheiten nach rechts.

Kein Akt, dann schreib ich das so:
CB.left=Range(„H5“).left +3

Dann entsteht die CB über H5 aber 3 Einheiten nach rechts versetzt.

Klar, wenn nicht frag nach?

Gruß
Reinhard

Hallo Frank,

nachdem ich nun alles zurückgesetzt habe und alles nochmal
Schritt für Schritt abgeändert habe,klappt es so ziemlich. Nun
habe ich zwar die normale Schriftgrösse aber das „Fett“ is nun
weg.

na und, setze es doch mit Font.bold=true neu

Und, ich kann beim besten Willen nicht erahnen was du da an den Codes änderst und dann wenn du das Ergebnis mitteilst und ich den Code nicht kenne dir sagen was da in mir unbekanntem Code ggfs. falsch läuft.

Ist doch mal ein Fall für unseren Excel Guru…fg

Ach der Meister, der ist wie öfters wieder in Urlaub, Bergsteigen; Fischen oder sowas.

Du mußt schon mit mir vorlieb nehmen.

Gruß
Reinhard

Hallo Reinhard,

der Text in der ComboBox ist ganz willkürlich mal normal(wie im Original von dir),mal sehr gross und Fett. Das ist mir aber nun erstmal egal,da ich damit leben kann.

Nun war bzw. bin ich immer noch stolz auf mich,was ich heute so alles gelernt habe und auch selbst geschafft habe(siehe Änderungen im Code). Und alles nur durch ein bisschen Lesen in einem VBA-Buch von Excel2000.

Aber eine Sache ist da noch, die ich nicht finde.

In der Tabbi, Zelle F2 wird das jeweilige Ergebnis des Tisches ausgegeben und in F3 der dazu gehörende Tisch. Das möchte ich auch um eine Spalte nach Rechts verschieben.

Ich habe ja eine Vermutung,wo es geändert werden muss.

Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
Dim Ber, Index As Integer, I, Wert
If Target.Count 1 Then Exit Sub
If Target.Row 166 Then Exit Sub
Ber = Array("F", "M", "T", "AA", "AH", "AO", "AV", "BC", "BJ", "BQ", "BX", "CE", "CL", "CS", "CZ")
Index = -1
For I = LBound(Ber) To UBound(Ber)
 If Target.Column = Range(Ber(I) & 1).Column Then
 Index = I
 Exit For
 End If
Next I
If Index = -1 Then Exit Sub
Wert = Application.Sum(Target.Offset(-(Target.Row + 2) Mod 5, 0).Resize(4, 1))
Range(Ber(Index) & "2").Value = Wert 'Range(Ber(Index) & "2").Value = Wert Diese Zeile muss m.E. abgeändert werden
Range(Ber(Index) & "3").Value = "Tisch " & Cells(Target.Offset(-(Target.Row + 2) Mod 5).Row, 4).Value 'Range(Ber(Index) & "3").Value = "Tisch " & Cells(Target.Offset(-(Target.Row + 2) Mod 5).Row, 4).Value Diese Zeile muss m.E. abgeändert werden
End Sub

Wenn ich richtig aufgepasst habe, hast Du den Bereich mit den Spalten „F“,„M“ usw. deklariert. Es ist also jeweils die 2. und 3.te Zeile des Bereichs.

Soweit habe ich noch nicht gelesen,wie ich das ändere. Ich denke mal nicht,dass es genauso geht mit der +1.

Hab die Mappe mal hochgeladen.Kannst dir die Änderungen mal anschauen,während ich mich mal meinem nächsten Fehler widme und ihm den Garaus mache.

http://www.uploadagent.de/show-176825-1314485802.html

Gruss Frank

Hallo Reinhard,

der Text in der ComboBox ist ganz willkürlich mal normal(wie
im Original von dir),mal sehr gross und Fett. Das ist mir aber
nun erstmal egal,da ich damit leben kann.

Nun war bzw. bin ich immer noch stolz auf mich,was ich heute
so alles gelernt habe und auch selbst geschafft habe(siehe
Änderungen im Code). Und alles nur durch ein bisschen Lesen in
einem VBA-Buch von Excel2000.

Aber eine Sache ist da noch, die ich nicht finde.

In der Tabbi, Zelle F2 wird das jeweilige Ergebnis des Tisches
ausgegeben und in F3 der dazu gehörende Tisch. Das möchte ich
auch um eine Spalte nach Rechts verschieben.

Ich habe ja eine Vermutung,wo es geändert werden muss.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Ber, Index As Integer, I, Wert
If Target.Count 1 Then Exit Sub
If Target.Row 166 Then Exit Sub
Ber = Array(„F“, „M“, „T“, „AA“, „AH“, „AO“, „AV“, „BC“, „BJ“,
„BQ“, „BX“, „CE“, „CL“, „CS“, „CZ“)
Index = -1
For I = LBound(Ber) To UBound(Ber)
If Target.Column = Range(Ber(I) & 1).Column Then
Index = I
Exit For
End If
Next I
If Index = -1 Then Exit Sub
Wert = Application.Sum(Target.Offset(-(Target.Row + 2) Mod 5,
0).Resize(4, 1))
Range(Ber(Index) & „2“).Value = Wert 'Range(Ber(Index) &
„2“).Value = Wert Diese Zeile muss m.E. abgeändert werden
Range(Ber(Index) & „3“).Value = "Tisch " &
Cells(Target.Offset(-(Target.Row + 2) Mod 5).Row, 4).Value
'Range(Ber(Index) & „3“).Value = "Tisch " &
Cells(Target.Offset(-(Target.Row + 2) Mod 5).Row, 4).Value
Diese Zeile muss m.E. abgeändert werden
End Sub

Wenn ich richtig aufgepasst habe, hast Du den Bereich mit den
Spalten „F“,„M“ usw. deklariert. Es ist also jeweils die 2.
und 3.te Zeile des Bereichs.

Soweit habe ich noch nicht gelesen,wie ich das ändere. Ich
denke mal nicht,dass es genauso geht mit der +1.

Hab die Mappe mal hochgeladen.Kannst dir die Änderungen mal
anschauen,während ich mich mal meinem nächsten Fehler widme
und ihm den Garaus mache.

http://www.uploadagent.de/show-176825-1314485802.html

Hallo Frank,

richtig, du hättest das so ändern können:
Range(Ber(Index) & „2“).Value = Wert
in
Range(Ber(Index) & „2“).offset(0,1).Value = Wert

Ich habe aber den Code geändert, siehe nachstehenden Code.
Jetzt passt er sich der Rundenanzahl an indem du die 15 anpasst.

Füge im Modul2 in „Erstellen“ noch das .Clearcontents ein und starte Erstellen einmal. Das entfernt dann die alten Tischeinträge in der falschen Spalte:

...
With Worksheets("Tabbi")
 With .Range("A1:smiley:O9")
**.ClearContents**  
 .HorizontalAlignment = xlCenter
 .VerticalAlignment = xlCenter 
...

Hier die abgeänderte Mappe:

Gruß
Reinhard

Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
Dim Ber As Range, Index As Integer, I, Wert, N As Integer
If Target.Count 1 Then Exit Sub
If Target.Row 166 Then Exit Sub
For N = 1 To 15 'Anzahl der Runden
 If Not Ber Is Nothing Then
 Set Ber = Application.Union(Ber, Columns(6 + (N - 1) \* 7))
 Else
 Set Ber = Columns(6 + (N - 1) \* 7)
 End If
Next N
If Intersect(Target, Ber) Is Nothing Then Exit Sub
Wert = Application.Sum(Target.Offset(-(Target.Row + 2) Mod 5, 0).Resize(4, 1))
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Cells(2, Target.Column + 1).Value = Wert 'Range(Ber(Index) & "2").Value = Wert Diese Zeile muss m.E. abgeändert werden
Cells(3, Target.Column + 1).Value = "Tisch " & Cells(Target.Offset(-(Target.Row + 2) Mod 5).Row, 4).Value 'Range(Ber(Index) & "3").Value = "Tisch " & Cells(Target.Offset(-(Target.Row + 2) Mod 5).Row, 4).Value Diese Zeile muss m.E. abgeändert werden
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub

Hallo Frank,

du brauchst doch während des Spieles an sich nur eine Runde vor dir zu sehen!?

Schau dir mal diesen Ansatz im Blatt Tabbi an.
(Da funktioniert noch wenig, achte nur auf das Rundenwechseln.)

Deine Ex-Tabbi ist jetzt „Alle“.
Dort würden dann süäter all das was du in Tabbi neu eingibst/veränderst mitnotiert Rundenrichtig.

http://www.uploadagent.de/show-176836-1314537409.html

Gruß
Reinhard

Hallo Reinhard,

da hast du Recht, eigentlich brauche ich immer nur die aktuelle Runde zu sehen.Ist ein sehr interessanter Gedanke.

Für mich wäre es interessanter,wenn Dein Code irgendwann einmal erweitert wird(Pchen und Tisch) und ich zu allererst mal diesen doofen Fehler in meinem Turnierbericht bzw. SE finde und eliminiere.

Da lege ich jetzt mein Hauptaugenmerk drauf,soweit ich das selbst irgendwie hinbekomme. Solangsam fängt es nämlich an mich tierisch zu nerven.

Gruss Frank

Hallo Frank,

da hast du Recht, eigentlich brauche ich immer nur die
aktuelle Runde zu sehen.Ist ein sehr interessanter Gedanke.

was heißt hier Gedanke? *staun*
Ich habe eine Mappe hochgeladen wo der Gedanke umgesetzt ist.
Da fehlt noch der Einbau der bislang bekannten Funktiuonen, aber er zeigt den Weg wie man das machen kann.
Dazu wollte ich was von dir hören, ob du das so willst.
Also immer nur eine Runde zu sehen, mit den Pfeiltasten halt andere Runden sehen.

Für mich wäre es interessanter,wenn Dein Code irgendwann
einmal erweitert wird(Pchen und Tisch)

staun2, das hatte ich doch alles schon mal drin im Code, du wolltest doch daß ich das wieder rausnehme!

und ich zu allererst
mal diesen doofen Fehler in meinem Turnierbericht bzw. SE
finde und eliminiere.

Ich persönlich glaube, SE, was wohl Siegererklärung bedeutet kommt als letztes dran.
Erst muß Tabbi sauber laufen.
In deiner Gesamtberechnung rechts von den Runden stehen für mich seltsame Formeln aus denen ich nicht schlau werde wie z.B.:

=WENN(ISTFEHLER(MAX(J13+Q13+X13+AE13+AL13+AS13+AZ13+BG13+BN13+BU13+CB13+CI13+CP13+CW13+DD13));"";WENN(SE!$D$71=0;DH13)*WENN(SE!$E$71=1;1000000-ZEILE(DI13);-1000000-ZEILE(DI13)))

um eine Platzberechnung durchzuführen.
Was soll das mit
MAX(J13+Q13+X13+AE13+AL13+AS13+AZ13+BG13+BN13+BU13+CB13+CI13+CP13+CW13+DD13)

das ist doch das Gleiche wie
Max(4711)
!?

Und zu dem SE-Problem, die 31 stammt daher daß du 124 max. Mitspieler hast, also 62 Pärchen, 31 Tischgruppen.
Aber mir war da die Hin- und Herhüpfung in den Formeln resp. den Blättern zu verwirrend um da genauer zu forschen.

Fazit. Mein Tipp wäre, klar kannste machen was du willst, zuerst mal „tabbi“ perfekt zu gestalten.
Wenn das sitzt dann die Auswertung wie Platzberechnung usw. sauber zu gestalten.
Dann das mit der Siegererklärung.

Verzettel dich nicht. Gehe immer Stück für Stück weiter, beginnend beim kleinsten was zu lösen ist.

Beispiel, bei deiner Siegererklärung investiert du zeit Energie um die perfekt zu gestalten.
Sie bezieht ihre daten aber aus der tabbi bzw. der dortigen Gesamtauswertung.

Was passiert nun wenn die Siegererklärung perfekt läuft aber du weil es notwendig ist in der tabbi bestimmte Dinge, Spalten, sonstwas ändern mußt damit Tabbi funktioniert?
Du ahnst es, danach kannste gleich deine Siererklärung nochmal überarbeiten, also verlorene Zeit Energie die du vorher dafür aufgebracht hast denn du mußt ja das Gleiche nochmals tun.

„Solangsam fängt es nämlich an mich tierisch zu nerven.“

*grins* So Gefühle kenne ich bei Excel.
Egal da mußte durch.
Mach den PC aus, gehe in den park…
Nach 'ner Stunde kommste wieder machst die Kiste an und sagts, so, jetzt zeige ich dir blödes Excel wie das funktioniert :smile:)

Kannst auch mehrmals „Ommmmmmmmmmmmmmmmmmmmm“ sagen

Gruß
Reinhard

Hallo Reinhard,

bitte nicht falsch verstehen,wenn du Zeit und Lust hast,dies zu programmieren,dann nehme ich sie natürlich gerne,muss aber nicht.

Was die Erweiterundg deines Codes betrifft, so habe ich festgestellt,dass es so,wie du es schon programmiert hast,nicht funktioniert(also nicht technisch gemeint,sondern bei mir).

Ich benötige Pchen und Tisch in der gleichen Form wie das jetzt für Solo. Also alle Funktionen mal 3(Quersumme-Solo-Pchen-Tisch,Durch-Solo-Pchen-Tisch und Primzahl-Solo-Pchen-Tisch). Bei der Primzahl bin ich noch am tüfteln,aber alles zu seiner Zeit.

Bezüglich der „seltsamen Formeln“ muss ich dir sagen,dass ich die Tabbi mal so bekommen habe(ohne Tunibericht und SE). Werde selber auch nicht schlau draus und überlege,wie ich das anders machen kann bzw. welche der Spalten ich tatsächlich benötige.

Auch da hast du völlig Recht,wenn das Herzstück nicht richtig läuft ist der Rest u.U für die Katz.

Ne Stunde in den Park gehen,bringt nichts. Ich habe einfach zu wenig Zeit für Excel und vergesse dadurch wieder sehr viel(War mal bedeutend besser in Excel.

Ich habe festgestellt,wenn man Lösungen von verschiedenen Leuten bekommt ist das anscheinend nicht so gut,es sei denn,sie würden sich dabei absprechen(würde z.B. nur hier gehen).

Gruss Frank