Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1112to1116
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
Textboxen summieren bzw. Summieren vereinfachen?
Thomas
Hallo Excel-Gemeinde,
ich hänge mit meinen wenigen Kenntnissen fest.
Wie kann ich unten aufgeführte Zeilen vereinfachen da sie in jeder TextBox wiederholt werden müssen.
Das schlimmste aber ist, ich denke mir das dieses in ein Modul geschrieben werden müsste. Nur _
ich raffe das einfach nicht mit den Modulen und der Deklarierung. Könntet ihr mir da ein wenig _
weiterhelfen?

Private Sub TB_Prüf_ist_Change()
If TB_Prüf_ist.Text = "" Then TB_Prüf_ist.Text = 0
If IsNumeric(TB_Meister_ist) And IsNumeric(TB_SM_Ist) And IsNumeric(TB_M00_Ist) _
And IsNumeric(TB_M03_ist) And IsNumeric(TB_M05_ist) And IsNumeric(TB_M06_ist) And _
IsNumeric(TB_M08_ist) And IsNumeric(TB_M09_ist) And IsNumeric(TB_Prüf_ist) And _
IsNumeric(TB_Bere_ist) And IsNumeric(TB_Fert_ist) And IsNumeric(TB_Sons) And _
IsNumeric(TB_Diens) And IsNumeric(TB_TU) And IsNumeric(TB_407) And _
IsNumeric(TB_Krank) And IsNumeric(TB_KU) Then _
Eingaben.IstWV = CDbl(TB_Meister_ist) + CDbl(TB_SM_Ist) + CDbl(TB_M00_Ist) _
+ CDbl(TB_M03_ist) + CDbl(TB_M04_ist) + CDbl(TB_M05_ist) + CDbl(TB_M06_ist) _
+ CDbl(TB_M08_ist) + CDbl(TB_M09_ist) + CDbl(TB_Prüf_ist) + CDbl(TB_Bere_ist) _
+ CDbl(TB_Fert_ist) + CDbl(TB_Sons) + CDbl(TB_Diens) + CDbl(TB_TU) + CDbl(TB_407) _
+ CDbl(TB_Krank) + CDbl(TB_KU)
If IsNumeric(TB_M00_Ist) And IsNumeric(TB_M00_soll) And _
IsNumeric(TB_M03_ist) And IsNumeric(TB_M03_soll) And _
IsNumeric(TB_M04_ist) And IsNumeric(TB_M04_soll) And _
IsNumeric(TB_M05_ist) And IsNumeric(TB_M05_soll) And _
IsNumeric(TB_M06_ist) And IsNumeric(TB_M06_soll) And _
IsNumeric(TB_M08_ist) And IsNumeric(TB_M08_soll) And _
IsNumeric(TB_M09_soll) And IsNumeric(TB_Prüf_soll) And _
IsNumeric(TB_Stör) Then _
Eingaben.TB_Stör.Text = CDbl(TB_M00_soll) - CDbl(TB_M00_Ist) _
+ CDbl(TB_M03_soll) - CDbl(TB_M03_ist) + CDbl(TB_M04_soll) - CDbl(TB_M04_ist) _
+ CDbl(TB_M05_soll) - CDbl(TB_M05_ist) + CDbl(TB_M06_soll) - CDbl(TB_M06_ist) _
+ CDbl(TB_M08_soll) - CDbl(TB_M08_ist) + CDbl(TB_M09_soll) - CDbl(TB_M09_ist) _
+ CDbl(TB_Prüf_soll) - CDbl(TB_Prüf_ist)
If Eingaben.InstIst.Caption = "0" Then Eingaben.InstIst.Caption = ""
End Sub

Manchmal reicht ja ein kleiner Denkanstoss und dann fällt der Groschen. Vielleicht auch bei mir.
Gruss Thomas
AW: Textboxen summieren bzw. Summieren vereinfachen?
31.10.2009 12:11:30
Daniel
Hi
nein, der Code muss nicht in ein Extra-Modul ausgelagert werden.
du kannst auch ein "normales" Makro im gleichen Modul schreiben, wo der Textbox-Code auch steht.
ich würde dann den Code, der bei jeder Textbox laufen muss in ein anderes Makro (im gleichen Modul) schreiben und dann dieses Makro immer nur aufrufen:
Private Sub TB_Prüf_ist_Change()
If TB_Prüf_ist.Text = "" Then TB_Prüf_ist.Text = 0
Call DeinMakro
End Sub
Private Sub DeinMakro()
If IsNumeric(TB_Meister_ist) And IsNumeric(TB_SM_Ist) And IsNumeric(TB_M00_Ist) _
And IsNumeric(TB_M03_ist) And IsNumeric(TB_M05_ist) And IsNumeric(TB_M06_ist) And _
IsNumeric(TB_M08_ist) And IsNumeric(TB_M09_ist) And IsNumeric(TB_Prüf_ist) And _
IsNumeric(TB_Bere_ist) And IsNumeric(TB_Fert_ist) And IsNumeric(TB_Sons) And _
IsNumeric(TB_Diens) And IsNumeric(TB_TU) And IsNumeric(TB_407) And _
IsNumeric(TB_Krank) And IsNumeric(TB_KU) Then _
Eingaben.IstWV = CDbl(TB_Meister_ist) + CDbl(TB_SM_Ist) + CDbl(TB_M00_Ist) _
+ CDbl(TB_M03_ist) + CDbl(TB_M04_ist) + CDbl(TB_M05_ist) + CDbl(TB_M06_ist) _
+ CDbl(TB_M08_ist) + CDbl(TB_M09_ist) + CDbl(TB_Prüf_ist) + CDbl(TB_Bere_ist) _
+ CDbl(TB_Fert_ist) + CDbl(TB_Sons) + CDbl(TB_Diens) + CDbl(TB_TU) + CDbl(TB_407) _
+ CDbl(TB_Krank) + CDbl(TB_KU)
If IsNumeric(TB_M00_Ist) And IsNumeric(TB_M00_soll) And _
IsNumeric(TB_M03_ist) And IsNumeric(TB_M03_soll) And _
IsNumeric(TB_M04_ist) And IsNumeric(TB_M04_soll) And _
IsNumeric(TB_M05_ist) And IsNumeric(TB_M05_soll) And _
IsNumeric(TB_M06_ist) And IsNumeric(TB_M06_soll) And _
IsNumeric(TB_M08_ist) And IsNumeric(TB_M08_soll) And _
IsNumeric(TB_M09_soll) And IsNumeric(TB_Prüf_soll) And _
IsNumeric(TB_Stör) Then _
Eingaben.TB_Stör.Text = CDbl(TB_M00_soll) - CDbl(TB_M00_Ist) _
+ CDbl(TB_M03_soll) - CDbl(TB_M03_ist) + CDbl(TB_M04_soll) - CDbl(TB_M04_ist) _
+ CDbl(TB_M05_soll) - CDbl(TB_M05_ist) + CDbl(TB_M06_soll) - CDbl(TB_M06_ist) _
+ CDbl(TB_M08_soll) - CDbl(TB_M08_ist) + CDbl(TB_M09_soll) - CDbl(TB_M09_ist) _
+ CDbl(TB_Prüf_soll) - CDbl(TB_Prüf_ist)
If Eingaben.InstIst.Caption = "0" Then Eingaben.InstIst.Caption = ""
End sub

Kleiner Tip noch am Rande:
wenn du viele Bedingungen hast, die mit AND verknüpft sind, so ist es besser, nicht alle Bedingungen in einen IF-Block zu quetschen, sonden die Bedingungen zu schachteln:,
dh. anstelle von
IF Bedingung 1 AND Bedingung 2 AND Bedingung 3 THEN mach was

ist es besser zu schreiben
IF Bedingung 1 Then
If Bedingung 2 Then
IF Bedingungn 3 Then
mach was
End if
end if
end if

das liegt daran, daß im ersten Fall immer ALLE Bedingungen geprüft werden, auch wenn z.B. die erste nicht erfüllt ist, dh es werden viel mehr prüfungen durchgeführt, als erforderlich.
im 2 Beispiel würde das Makro sofort aufhören, wenn die erste Bedingung nicht erfüllt ist und Bedingung 2 und 3 gar nicht mehr prüfen. Es ist somit deutlich schneller als die erste Variante (wenn die Bedingungen richtig angeordnet sind.)
Gruß, Daniel
Anzeige
AW: Textboxen summieren bzw. Summieren vereinfachen?
31.10.2009 12:12:02
Oberschlumpf
Hi Thomas
In dieser Datei
https://www.herber.de/bbs/user/65484.xls
befindet sich im allgemeinen Modul
- das Makro sbTxtSumme (welches auch du in deiner Datei ein allgemeines Modul übertragen musst)
- ein Bsp-Code für das Change-Ereignis von TB_Prüf_ist
Letzteres MUSS direkt im Modul des entsprechenden Userforms stehen und darf NICHT im allg. Modul stehen bleiben - du musst es da also löschen, bzw nicht mit in dein allg. Modul übertragen.
Ich habe das deswegen ins allg. Modul geschrieben, weil ich deine Datei nicht habe, und weil ich dein Userform nicht nachbauen wollte....heute ist Samstag! :-)
Daher also alles ungetestet.
Hilfts denn?
Ciao
Thorsten
Anzeige
Hallo Torsten, es geht ...
01.11.2009 11:26:27
Thomas
Es geht sehr gut und hat mir erstmal weitergeholfen.
Danke :-)
Gruss Thomas
AW: Hallo Torsten, es geht ...
01.11.2009 13:05:07
Thomas
Hallo Torsten, eine Frage hab ich da noch.
Im meinem Code stand z.Bsp. " IsNumeric(TB_M00_soll)"
In deinem modifizierten Code steht "IsNumeric(.TB_M00_soll)"
Was bweirkt der Punkt? (ausser das es nicht geht wenn der Punkt fehlt)
Gruss Thomas
AW: Hallo Torsten, es geht ...
01.11.2009 15:15:09
Oberschlumpf
Hi Thomas
Dein Code, z Bsp IsNumeric(TB_M00_soll), steht bei dir direkt im Modul des Userforms.
In diesem Fall reicht es aus, wenn ein Steuerelement ohne seine "Herkunft" (das Userform) angesprochen wird.
Mein Code steht aber im allgemeinen Modul. Und das allg. Modul kennt keine Steuerelemente, wenn nicht auch der Ort angegeben ist, wo es herkommt.
So kann man im allg. Modul z Bsp schreiben:
Userform1.Textbox1.Text = "Hallo"
Userform1.Label1.Label = "Test"
Userform1.Image1.Picture = LoadPicture("C:\bild.jpg")
Man muss also (in diesem Fall) 3x Userform1 schreiben.
Muss man gar nicht, man kann es auch vereinfacht darstellen, nämlich so:
With Userform1
.Textbox1.Text = "Hallo"
.Label1.Label = "Test"
.Image1.Picture = LoadPicture("C:\bild.jpg")
End With
Jetzt wird Userform1 nur 1x geschrieben, und das Ergebnis ist trotzdem das gleiche.
Der Punkt (.) muss in jeder Zeile geschrieben werden, weil jede Zeile für sich eine Fortführung von Userform1 ist.
Wenn der Punkt fehlt, wie du es ja ausprobiert hast, weiß das allgemeine Modul nicht mehr, woher denn die jeweiligen Steuerelemente kommen.
Hilft das zur Erklärung?
Ciao
Thorsten
Anzeige
AW: Hallo Torsten, es geht ...
01.11.2009 16:46:27
Thomas
Hi Torsten,
sehr verständlich beschrieben und hilft mir weiter.
Danke
Gruss Thomas
AW: Textboxen summieren bzw. Summieren vereinfachen?
31.10.2009 12:18:12
Roland
Hallo Thomas,
aus meiner Sicht drei Denkanstösse:
1. Als allererstes würde ich verhindern, dass in den fraglichen Textboxen überhaupt was anderes als Zahlen und max. ein Komma eingegeben werden können. Dazu findest du genug im Archiv. Du bräuchtest dann die IsNumeric-Rüfung nicht mehr.
2. Wieso das Change-Ereignis bemühen; brauchst du die Ergebnisse der Rechenoperationen nach wirklich jeder Zahleneingabe?
3. Lagere die Rechenoperationen doch einfach in Funktionen aus, die du dann aus der Ereignisprozedur aufrufst.
Wenn Du allerdings meinst, dass die Rechenoperationen bei allen Textboxänderungen notwendig sind, ist der Job ein klassischer Kandidat für ein Klassenmodul.
Gruß
Roland Hochhäuser
Anzeige
AW: Textboxen summieren bzw. Summieren vereinfachen?
31.10.2009 12:53:15
Thomas
Ich hab nun mal die Datei hochgeladen,
https://www.herber.de/bbs/user/65486.xls
Ich verwende als Hilfswerk das Buch
VBA - Programmierung
mit Microsoft Office 2003
von Helma Spona
aber wie man sieht nur mit mässigen Erfolg. Gibt es das verständlichere Bücher?
Gruss Thomas
AW: Textboxen summieren bzw. Summieren vereinfachen?
01.11.2009 08:33:25
Roland
Hallo Thomas,
"verständlichere Bücher" ist ein dehnbarer Begriff und hängt z.B. von der Schwierigkeit der Materie und den fachlichen Voraussetzungen des Lesers ab; letztere schätzt du ja für dich selbst als eher gering ein. Für den deutschsprachigen Raum kann man generell sagen, dass die vorhandenen Bücher - wie auch dieses Forum - immer nur Grundlagen vermitteln. Da ist Spoona als einzige Autorin, die in ihren Büchern überhaupt näher auf VBA-Programmierung für den Mac eingeht und Hilfestellung für betriebssystemübergreifende Programmierung gibt, nicht die schlechteste Wahl.
Deine Fragestellungen zielen aber auf das Zusammenwirken und Ineinandergreifen von Routinen ab, die dann natürlich entsprechend zu konzipieren sind. Es gibt keine deutschsprachigen Bücher, die Grundlagen der Softwarearchitektur am Beispiel von VBA oder gar speziell Excel erläutern. Da wirst du dich anders durchbeissen müssen.
Gruß
Roland Hochhäuser
Anzeige
AW: Textboxen summieren bzw. Summieren vereinfachen?
01.11.2009 10:01:37
Thomas
Also, ran ans durchbeissen.
Gruss Thomas

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige