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

Code vereinfachen

Code vereinfachen
11.11.2008 08:16:00
Christoph
Hallo zusammen.
Wie kann ich folgenden Code vereinfachen?
If .TextBox2.Value .TextBox102.Value Then
.TextBox2.Font.Bold = True
.TextBox102.Font.Bold = True
Else
.TextBox2.Font.Bold = False
.TextBox102.Font.Bold = False
End If
If .TextBox3.Value .TextBox103.Value Then
.TextBox3.Font.Bold = True
.TextBox103.Font.Bold = True
Else
.TextBox103.Font.Bold = False
.TextBox3.Font.Bold = False
End If
Ich möchte 80 Textboxen miteinander vergleichen. Die Textboxen unterscheiden sich jeweils nur um die Bezeichnungszahl 100 (z.B. textbox29 wird mit textbox129 verglichen).
Bei 40 vergleichen ergeben sich rund 40*7 = 280 Codezeilen.
Wie kann ich das vereinfachen?

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code vereinfachen
11.11.2008 08:28:00
Hajo_Zi
Hallo Chrstoph
.TextBox2.Font.Bold = .TextBox2.Value .TextBox102.Value
zweite analog.

AW: Code vereinfachen
11.11.2008 08:34:05
Christoph
Nein, geht so nicht, da im nächsten durchlauf die Textbox fett bleibt. (Hab vergessen zu erwähnen, dass die Userform als Interface für eine Liste dient und die Userform immer mit einer Zeile der Liste gefüllt wird. Mit einem Button wird die nächste Liste in das Userform geladen.
Also ich brauche irgendwas, das mir für jeden aufruf kontrolliert, ob die Textboxinhalte gleich sind und dann Fett markiert (beide Textboxen). Sind die Werte nicht gleich, sollen die Textboxen nicht fett markiert werden.
Anzeige
AW: Code vereinfachen
11.11.2008 08:39:00
Hajo_Zi
Hallo Christoph,
das Stand nicht in Deinem Beitrag. Für Deinen gepodsteten Code ist es die korrekte Verkürzung.
.TextBox2.Value .TextBox102.Value ergibt nur True und False. Lege den Code auf den Button.
Gruß Hajo
AW: Code vereinfachen
11.11.2008 08:46:15
Christoph
Kann man mit der Syntax von Textboxen nicht spielen?
Ich hab schon versucht, auf den Textboxnamen zuzugreifen, leider erfolglos.
So in der Art
Call vergleich(2)

Sub vergleich(num as long)
If .(TextBox & num).Value  .(TextBox & (num + 100)).Value Then
.(TextBox & num).Font.Bold = True
.(TextBox & (num + 100)).Font.Bold = True
Else
.(TextBox & num).Font.Bold = False
.(TextBox & (num + 100)).Font.Bold = False
End If
End Sub


wäre super, wenn das gehen würde.
ODer eine anderer versuch:
Call vergleich(textbox2,textbox102)
aber wie die


Sub ausschaut, hab ich keine Ahnung.
Verglichen wird die TextBox2 - TextBox42 mit der jeweiligen Textbox aus dem Bereich TextBox102 - _
TextBox142.
Wer kann helfen?
Mir geht es darum, einen Code zu finden, der nicht 280 Zeilen lang ist.

Anzeige
me.controls("Textbox" &num) owT
11.11.2008 08:50:28
Rudi
AW: me.controls("Textbox" &num) owT
11.11.2008 08:52:00
Christoph
muhaha, der code überfordert mich jetzt
AW: me.controls("Textbox" &num) owT
11.11.2008 08:54:47
Hajo_Zi
Hallo Christoph,
warum offen, soll einer vorbeikommen, das Stand nicht im Beitrag. Die Bezahlung ist auch noch offen.
Gruß Hajo
AW: me.controls("Textbox" &num) owT
11.11.2008 08:59:00
Christoph
Jaha, bin ja schon leise
*duckmichschon*
Hab einen Fehler drinnen gehabt, deshalb hat er mir immer das dann immer fett markiert gelassen. danke für deine hilfe
AW: Code vereinfachen
11.11.2008 08:51:53
Hajo_Zi
Hallo Christoph,
Warum setzt Du meinen Ansatz nicht um?
Warum sollte ich noch einen neuen bringen, der wird doch bestimmt auch nicht umgesetzt?
controls("Textbox" & num).fond.Bold =.Controls("TextBox" & Num) .controls("TextBox" & num+100)
Gruß Hajo
Anzeige
AW: Code vereinfachen
11.11.2008 09:08:00
Christoph
So hajo, vielen Dank für eine hilfe.
Dein nachfolgender code funktioniert super:
.TextBox2.Font.Bold = .TextBox2.Value <> .TextBox102.Value
.TextBox102.Font.Bold = .TextBox2.Value <> .TextBox102.Value
.TextBox3.Font.Bold = .TextBox3.Value <> .TextBox103.Value
.TextBox103.Font.Bold = .TextBox3.Value <> .TextBox103.Value
~f~
Aber zur Codereduktion habe ich deinen zweiten Ansatz aufgegriffen und folgende Schleife programmiert:
~f~
For i = 2 To 42 Step 1
.Controls("Textbox" & i).fond.Bold = .Controls("TextBox" & i) <> .Controls("TextBox" & i + 100)
.Controls("Textbox" & i + 100).fond.Bold = .Controls("TextBox" & i) <> .Controls("TextBox" & i + 100)
Next i
Wieso geht die Schleife nicht? Er sagt mir immer:
Laufzeitfehler 438 -> Objekt unterstützt diese Eigenschaft oder Methode nicht!
Muss ich einen Verweis miteinbinden?
Anzeige
AW: Code vereinfachen
11.11.2008 09:10:00
Hajo_Zi
Hallo christoph,
ich sehe Deine Datei nicht. Vielleicht gibt es die Textboxen die Du ansprichst nicht?
Gruß Hajo
AW: Code vereinfachen
11.11.2008 09:20:00
Hajo_Zi
Hallo Christoph,
Zur Testung wäre es schon intressant wie man den Code auslöst. Ich arbeite mich nicht in den kompletten Code ein.
Gruß Hajo
Anzeige
AW: Code vereinfachen
11.11.2008 09:24:16
Hajo_Zi
Hallo Christop,
intressant wäre vielleicht so eine ungefähre Richtungsangabe für Textbox102 bis 142
Gruß Hajo
AW: Code vereinfachen
11.11.2008 09:24:37
Christoph
Oh, natürlich, sorry:
also mit dem abgleichbutton löst man den vergleich aus. dazu wird eine andere Datei geöffnet.
im suchfeld kann die gewünschte kks-nr eingegeben werden. Wird diese gefunden, übergibt der der funktion abgleich die gefundene kks-nr.
die funktion abgleich sucht dann in der vorhin geöffneten datei nach der kks. wird diese gefunden, schreib mir diese funktion den rechten teil der userform voll. wird nichts gefunden, bleiben die felder leer.
ich hänge mich gerade im modul kundenadressen -> sub-funktion kunden_lesen ganz unten auf.
in test (ganz ganz unten) steht der ursprüngliche abgleichcode drinnen (300Zeilen).
Brauchst du noch die abgleichtabelle?
Anzeige
AW: Code vereinfachen
11.11.2008 09:33:00
Hajo_Zi
Hallo Christoph,
es kommt der Debbuger aber die Befehle kann man ja überspringen. Aus dEiner Beschreibung sehe ich aber nicht was ih wo eintragen muss und was gedrückt werden muss um zum Code zu kommen.
Die Textboxen habe ich inzwischen gefunden, nicht körperlich aber vom Namen.
Gruß Hajo
AW: Code vereinfachen
11.11.2008 09:42:18
Christoph
Also im Code auf den Button "Abgleich starten" drücken, damit wird die Userform angezeigt.
Als nächsten kann im suchfeld unten link "gma10" eingetragen werden und die suche gestartet werden.
nun springt er in die sub 'kunde_suchen'
in dieser findet er mir die zelle mit den buchstaben gma10.
Als nächstes übergibt er der funktion 'kunde_eintragen' die zelle 'B5'.
Mit dem übergabewert 'b5' trägt er mir dann in die textboxen jeweils die werte der zeile ein, in der die buchstabenkette gma10 gefunden wurde. Der Code ist mit Offset aufgebaut, da mir dadurch immer in TextBox2 der Wert aus Spalte 1 eingetragen wird.
Nach dem Eintragen geht er noch in folgenden code, bei der auch der fehler kommt:
If abgleich_ok = True Then
For i = 2 To 42 Step 1
.Controls("Textbox" & i).fond.Bold = .Controls("TextBox" & i) .Controls("TextBox" & i + 100)
.Controls("Textbox" & i + 100).fond.Bold = .Controls("TextBox" & i) .Controls("TextBox" & i + 100)
Next i
End If
PS:
Hast du die Abgleichtabelle erhalten?
Anzeige
AW: Code vereinfachen
11.11.2008 09:52:00
Hajo_Zi
Hallo Christop,

unten link "gma10" eingetragen werden und die suche gestartet werden

die wurde bei mir nicht gestartet. Ich habe den Schalter geklickt. Ich konnte den Schalter aber nicht weiter verfolgen, da ich in VBA den Schalter nicht finde und darum dort auch keinen Haltepunkt setzen kann um das weiter zu verfolgen. Der Code mit der Schleife wurde jedenfalls nicht ausgeführt.
Mir scheint diese Aufgabe wird zu umfangreich. Das geht um den Umfang eines Forums drüber hinnaus. Ich habe mich bemüht, aber das wird mir zu Zeitaufwendig.
Gruß Hajo

Anzeige
AW: Code vereinfachen
11.11.2008 09:53:00
Christoph
Ok, trotzdem vielen dank für deine mühe.
Kann geschlossen werden.
Greife den Vorschlag von Hajo mit der vereinfachten abfrage auf.
Grüße an alle
AW: Code vereinfachen
11.11.2008 09:42:00
Rudi
Hallo,
in der UF kann ich keine 100er Textboxen finden
Bin raus.
Gruß
Rudi
AW: Code vereinfachen
11.11.2008 09:44:00
Christoph
Ahhh, also nochmals fett sorry:
auf der rechten seite sind zwei frames übereinandergelegt:
einfach "Mee teil2" nach rechts schieben, schon sind die textboxen zu erkennen.
AW: Code vereinfachen
11.11.2008 09:45:00
Hajo_Zi
Hallo Rudi,
die schleife geht von 2 bis 42 als0 102 bis 142 und die sind tatsächlich da, wenn mir die Stelle auch noch unbekannt.
Gruß Hajo
Anzeige
AW: Code vereinfachen
11.11.2008 09:46:11
Christoph
die stelle ist auf der rechten seite der userform unter einem frame versteckt.
sorry, ab das nicht geschnallt.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige