Collapse column

Autor Thema: Bitte um Unterstützung Textfelder summieren und nach Übertragen UF aktualisieren  (Gelesen 767 mal)

Offline hazukos

  • Newbie
  • *
  • Beiträge: 6
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2013
Hallo VBA Profis,

habe eine UserForm mit 9 Textfeldern, 1 Combobox für Tabellen wechseln, 2 Spinbuttons,   
1 Übertragen Button, 1 Cancel Button und 1 Beenden Button.
Es funktioniert fast alles bis auf zwei Funktionen die ich leider nicht hin bekomme und da ich auch neu in dem VBA Gebiet bin!

1. Funktion Sum: TextBox7 = Textbox9 + Textbox4  'In Textbox7 soll mir der eingegebene Wert in Textbox4 sofort mitberechnet werden ohne etwas zu drücken.

2. nach dem Übertragen von 9 Textfeldern (inkl. berechnete Werte), soll mir Textbox9 und Textbox6 sofort automatisch aktualisiert werden, dh, die neue Werte anzeigen lassen wie 1. ausser dem wenn ich über Combobox die Tabellen wechsle, soll die aktualisierte Funktion eben so funktionieren.

Private Sub Übertragen_Click()
Dim i As Long
     
       With ActiveSheet
       .Rows(5).Insert
       For i = 1 To 8
           If i = 5 Then
               .Cells(5, i) = CDate(Me.Controls("TextBox" & CStr(i)))
           Else
               .Cells(5, i) = Me.Controls("TextBox" & CStr(i))
            TextBox7.Text = CInt(TextBox9.Text) + CInt(TextBox4.Text)
           End If
       Next i
       End With
   End Sub

Private Sub Cancel_Click()
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""

End Sub

Private Sub UserForm_Initialize()
 
  Me.TextBox9.Text = Cells(5, 7)
   
        Me.TextBox6.Text = TextBox9 + 1
   
    Me.TextBox5 = Date

With UserForm1
.Height = 450
.Width = 350
End With

Dim BLATBLAT As Integer
For BLATBLAT = 1 To Worksheets.Count
    Me.ComboBox.AddItem Worksheets(BLATBLAT).Name
Next BLATBLAT

End Sub

Hoffe Ihr könnt mir weiter helfen.
Danke im Voraus!




Offline hazukos

  • Newbie
  • *
  • Beiträge: 6
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2013
Wie ich sehe, bin ich falsch hier?!  :-\

Online gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.155
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Wenn du innerhalb 24 Stunden eine Lösung erwartest, dann wende dich doch an einen externen Dienstleister, der macht das gewiss rasch und je nach Umfang der Aufgabe auch kostengünstig.  >:(
In allen (freien) Foren sind die Helfer auf freiwilliger Basis in ihrer Freizeit tätig und haben auch noch andere Interessen…
Gruß
Günther

Offline hazukos

  • Newbie
  • *
  • Beiträge: 6
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2013
Wie man sieht, werde ich auch nach 162 Stunden nicht geholfen!

Gruß

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 947
  • Microsoft MVP
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Hallo,

Zitat
Wie man sieht, werde ich auch nach 162 Stunden nicht geholfen!

Das kann auch daran liegen, dass z.B. keiner Lust hat oder es zu aufwändig wäre, das jetzt nachzubauen.
Eine Garantie, dass Dir dann geholfen kann ich Dir leider nicht geben, aber den Tipp eine Beispieldatei
zur Verfügung zu stellen.

Gruß
Microsoft Most Valuable Professional (MVP) 2011 - 2018/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline hazukos

  • Newbie
  • *
  • Beiträge: 6
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2013
Hi,

die Beispielsdatei sollte genügend Informationen enthalten.
Für die Profis sind vll. nur zwei Zeilen!?
Ich hoffe, ich werde jetzt geholfen  ;D
Danke im Voraus!

Gruß

Offline lupo1

  • Full Member
  • ***
  • Beiträge: 176
    • Profil anzeigen
  • Office-KnowHow: Anfänger
  • VBA-KnowHow- : Ohne
  • Version [Office] : Office 2010
Cool, wie selbstverständlich Hilfe erwartet wird, fast wie ein Muss. Aber gefälligst ein bisschen pronto.
MfG Lupo1 (und natürlich gern auch Hallo!)

Offline hazukos

  • Newbie
  • *
  • Beiträge: 6
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2013
Hallo,

Bitte nochmal um Hilfe und hoffe, ich werde nicht schon wieder falsch verstanden!
Danke!

Gruß

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 947
  • Microsoft MVP
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Hallo,

habe es mir mal angeschaut. Um die zwei Textboxen zu addieren, kannst Du die entsprechenden Change-Ereignisse verwenden.
IsNumeric stellt (recht zuverlässig, aber nicht ganz) eine einfache Validierung der Textinhalte dar. In ähnlicher Form kannst
Du es auch z.B. bei der Initialisierung machen.

Code: Visual Basic
  1. Private Sub TextBox4_Change()
  2.  
  3.   If IsNumeric(TextBox4.Text) And IsNumeric(TextBox9.Text) Then
  4.  
  5.     TextBox7.Text = CStr(CDbl(TextBox4.Text) + CDbl(TextBox9.Text))
  6.  
  7.   Else
  8.    
  9.     TextBox7.Text = ""
  10.    
  11.   End If
  12.  
  13. End Sub
  14.  
  15. Private Sub TextBox9_Change()
  16.  
  17.   If IsNumeric(TextBox4.Text) And IsNumeric(TextBox9.Text) Then
  18.  
  19.     TextBox7.Text = CStr(CDbl(TextBox4.Text) + CDbl(TextBox9.Text))
  20.  
  21.   Else
  22.    
  23.     TextBox7.Text = ""
  24.    
  25.   End If
  26.  
  27. End Sub

Du schreibst, Du bist Anfänger, was am Code auch zu sehen ist. Ich würde Dir empfehlen, Dir z.B. ein Buch zu kaufen, wo Du
strukturiert eine Anleitung zu VBA erhälst. Dies beinhaltet dann auch Formulare und deren Steuerelemente sowie Grundlagen
zum Excel-Objektmodell.

Generell ist es unüblich, wenn auch zulässig, Variablen in Großbuchstaben zu deklarieren. Du vermischst zudem Datentypen.
Z.B. wenn Du einen Integer deklarierst, warum wandelst Du diesen in ein Double um? CInt statt CDbl wäre zu verwenden.
Generell kannst Du aber mit Long arbeiten; Integer bringt keine Vorteile.

Man kann Steuerelementen auch einen aussagekräftigen Namen geben. TextBox1 ... N ist verwirrend. Gerade am Anfang solltest
Du das machen. Nachteil von den Namen ist, dass Du dann nicht mehr über "TextBox" & CStr(i) iterieren kannst. Aber so viele
sind es hier nicht. Das Tippen von ein paar mehr Zeilen macht den Braten nicht fett. Dafür wird es übersichtlicher.

Du beziehst Dich oft auf die aktive Zelle ... ActiveCell ... Das ist jetzt nicht falsch in dem Sinne von Falsch, aber auch nicht not-
wendig, denn Du kannst jede Zelle auch per ThisWorkbook.Worksheets("Tabellenname").Cells(y,x).Value ansprechen. Das bringt
mehr Flexibilität.

Gruß




« Letzte Änderung: Mai 02, 2018, 08:55:53 Vormittag von maninweb »
Microsoft Most Valuable Professional (MVP) 2011 - 2018/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte

Offline hazukos

  • Newbie
  • *
  • Beiträge: 6
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2013
Hallo maninweb,

vielen Dank für deine Unterstützung und die Zeit die Du für mich genommen hast, die Addition der Textboxen sieht super aus!

Habe aber noch eine Bitte  :-[
Wäre sehr dankbar wenn Du mir auch das Übertragen der laufende Nummern auf falsche Tabellenblätter bei Tabellenwechsel über Combobox und nach dem Übertragen der Werte (über OK Button) verhindern könntest.
Z.B wenn man die Werte von TB6, TB7, TB9 in der Maske nach jedem Wechsel der Tabellen und nach jedem OK Klick aktualisiert werden!

Du hast was von Buch geschrieben, kannst Du mir bitte ein gutes Buch nennen und wo es zu kaufen gibt?

Danke nochmal

Gruß

Offline maninweb

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 947
  • Microsoft MVP
    • Profil anzeigen
    • Excel Formula Translator
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2016
Hallo,

wie bereits geschrieben, Du beziehst Dich sehr häufig auf ActiveCell und ActiveSheet, war die aktuell aktive Zelle und das aktive
Blatt sind. Wenn Du unabhängig von dem was gerade in Excel sichtbar ist, Zellen ansprechen möchtest, verwende eine vollständige
Referenzierung. Dann ist egal, welche Tabelle in Excel gerade aktiv ist. Beispiele:

Code: Visual Basic
  1. ThisWorkbook.Worksheets("Tabelle1").Cells(1,2).Value = "Hallo" ' Zelle B1
  2. ThisWorkbook.Worksheets("Tabelle1").Range("B1").Value = "Hallo" ' ebenfalls Zelle B1

Was Bücher betrifft, generell sehe ich das eher so, dass man z.B. in eine Buchhandlung geht und sich welche vorab anschaut,
z.B. ob einem der Schreibstil gefällt. Es gibt sicherlich eine ganze Reihe an guten Büchern; meins findest Du, wenn Du nach
Amazon "Excel 2013 Programmierung - Das Handbuch" googlest; falls noch verfügbar.

Gruß
Microsoft Most Valuable Professional (MVP) 2011 - 2018/2019
https://de.excel-translator.de :: Online Excel-Formel-Übersetzer :: Alle Übersetzungen der Excel Funktionen & Fehlerwerte