Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Zahlen einer Tabelle in Userform einlesen

Betrifft: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 20.08.2008 07:07:03

Guten Morgen!

Ich habe in einem Arbeitsblatt mehrere Tabellen.

In einer UserForm habe habe ich 460 TextBoxen, wobei die Zählung immer pro Reihe senkrecht erfolgt.
Spalte 1 = TextBox1-23, Spalte2 = TextBox24- TextBox46 usw.

Ich möchte nun z.B. die erste Tabelle in die Textboxen einlesen lassen. Wenn also in der UserForm in der ComboBox1 Wien aktiviert wird, sollen die 460 Zellen der erstren Tabelle in die 460 Textboxen eingelesen werden.

Das gleiche sollte dann mit der zweiten Tabelle beim Aufruf Niederösterreich passieren usw.

Wie würde hier bitte eine bessere Lösung als meine aussehen?

TextBox1.Text = wks.Range("B3")
TextBox2.Text = wks.Range("B4")

Anbei eine Musterdatei:

https://www.herber.de/bbs/user/54735.xls

Danke

Josef

  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 20.08.2008 07:11:06

Hallo!
hier nochmal die hochgeladene Datei, da die erste anscheinend nicht funktioniert.

https://www.herber.de/bbs/user/54737.xls



Danke


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Heiko S.
Geschrieben am: 20.08.2008 07:51:47

Moin Josef,

vom Prinzip her z.B. in einer Schleife:

For lngi = 1 To 23
Me.Controls("TextBox" & lngi) = wks.Cells(lngi + 2, 2)
Next lngi


Und dann mußt du halt je nach Spalte und Textboxnummeer mit for lngi = 1 to 23 speilen also z.B. for lngi = 24 to 47 .

Und bei den Cells dann mit lngi + 2 für die Zeile und ,2 für die Spalte.

Gruß Heiko

PS: Rückmeldung wäre nett !


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 20.08.2008 08:17:33

Hallo Heiko!

Danke für Deine Antwort.

Die erste Spalte schaffte ich. Bei der zweiten kam nur wirres Zeug rein.

Wo habe ich da bitte jetzt den Fehler gemacht?

For x = 1 To 23
Me.Controls("Label" & x).Caption = ActiveSheet.Cells((2 + x), 1)
Next x


For lngi = 1 To 23
Me.Controls("TextBox" & lngi) = wks.Cells(lngi + 2, 2)
Next lngi
For lngi = 24 To 46
Me.Controls("TextBox" & lngi) = wks.Cells(lngi + 2, 3)
Next lngi

Josef


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Heiko S.
Geschrieben am: 20.08.2008 08:21:45

Hallo Josef,

hier unten:

For lngi = 1 To 23
Me.Controls("TextBox" & lngi) = wks.Cells(lngi + 2, 2)
Next lngi

For lngi = 24 To 46
Me.Controls("TextBox" & lngi) = wks.Cells(lngi - 22, 3)
Next lngi

Ob die - 22 ganz richtig ist muß mal testen !



Gruß Heiko

PS: Rückmeldung wäre nett !


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 20.08.2008 08:25:16

Hallo Heiko!

Die Zahl -21 müßte es geweswn sein. Wie errechnet sich bitte diese Zahl, damit ich beic den anderen Textboxen das ebenfalls nachvollziehen kann?

Danke

Josef


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Heiko S.
Geschrieben am: 20.08.2008 10:29:04

Hallo Josef,

rechnet Ihr in Österreich anders als wir in Deutschland ;-)

Also das lngi ist als fortlaufende Nummer erstmal für die Textboxen zuständig.
Wie du ja auch richtig erkannt hast.

Nun stehen die Infos die du in die Textboxen machen willst ja nicht aller untereinander sondern zum Teil nebeneinander in den Spalten.

Wenn du also Textbox24 füllen möchtest soll das mit der Zelle C3 passieren.
In der Funktion Cells(a,b) gibst du mit a die Zeile und mit b die Spalte an die ausgelesen werden soll.
Also Zelle C3 = Cells(3,3) und dann für die zweite Spalte mit lngi = cells(lngi -21,3)
24-21 = 3; 25-21 = 4; 26-21 = 5 ...

Und für die nächste Spalte dann halt nicht Minus 21 sonder irgendwas mit 44 usw.

Also nur Addition und Subtraktion, alle klar ?!


Gruß Heiko

PS: Rückmeldung wäre nett !


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 20.08.2008 11:42:19

Hallo Heiko!

Besten Dank für Deine ausführliche Erklärung und Deine Hilfe.

Habe es jetzt geschafft. Es funktioniert bestens.

Ich hätte jetzt noch eine Zusatzfrage:

Wenn ich jetzt die eingetragenen Zahlen z.B. in den Textboxen 1-23 zusammenzählen möchte und die Summe in einer eigenen txtBox1 z.b. anzeigen lassen will, gäbe es hier auch so eine Lösungsvariante?

Josef


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Heiko S.
Geschrieben am: 20.08.2008 11:54:29

Hallo Josef,

vom Prinzip her ähnlich (ungetestet):

Dim lngWert As Long, lngI As Long
For lngI = 1 To 23
lngWert = lngWert + CLng(Me.Controls("TextBox" & lngI))
Next lngI
Me.txtBox1 = lngWert

Wenn es nur ganzzählige Werte gibt, sonst die Variable als double dimensionieren und statt CLng CDbl verwenden.


Gruß Heiko

PS: Rückmeldung wäre nett !


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 20.08.2008 12:06:02

Hallo Heiko!

Habe es gerade getestet:

For lngI = 1 To 23
lngWert = lngWert + CLng(Me.Controls("TextBox" & lngI))
Next lngI
Me.txtBox1 = lngWert

Bekomme jedoch die Meldung: TYPEN unverträglich


Josef


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Heiko S.
Geschrieben am: 20.08.2008 12:42:11

Hallo Josef,

du mußt natürlich überall Zaheln drin haben oder das so abfangen:

Dim lngWert As Long, lngI As Long
For lngI = 1 To 10
If IsNumeric(Me.Controls("TextBox" & lngI)) Then
lngWert = lngWert + CLng(Me.Controls("TextBox" & lngI))
End If
Next lngI
Me.TxtBox1 = lngWert



Gruß Heiko

PS: Rückmeldung wäre nett !


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 20.08.2008 12:49:35

Hallo Heiko!

Jetzt hat es geklappt.

Apropo Zahlen: In die TextBoxen werden nur Zahlen eingelesen.


Auf jeden Fall herzlichen Dank für Deine Mühe und Deine Geduld.

Schönen Tag noch

Josef


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Heiko S.
Geschrieben am: 20.08.2008 14:35:15

Hallo Josef,

Es stehen Zahlen drin und hier und da mal nichts, wenn ich deine Tabelle richtig lesen kann.
Und nichts ist hat keine Zahl und auch keine Null sondern halt nichts, und dann meckert er halt.


Gruß Heiko

PS: Rückmeldung wäre nett !


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 20.08.2008 18:01:22

Hallo Heiko!

Alles klar. Ich hatte angenommen, dass Nullen in diesem Fall zu den Zahlen zählen. In meiner Original Datei sind nämlich Zahlen sowie auch Nullen eingetragen.
wieder mal was dazugelernt.

Jetzt hätte ich jedoch schon wieder eine Zusatzfrage und zwar zu folgendem Problem.

Ich habe z.B. 22 Textboxen (1-22) nebeneinander stehen. wie ich Daten welche senkrecht eingetragen sind, eingelesen werden habe ich jetzt dazugelernt. wie lese ich aber Daten ein, wenn z.B. die Zahlen nebeneinander in einer Zeile stehen. z.b. Zeile 25 oder Zeile 48 usw.


Josef


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Heiko S.
Geschrieben am: 20.08.2008 20:23:33

Hallo Josef,

vom Prinzip her genauso, wenn ich deine Frage richtig verstanden habe.

Wieder die Variable lngi als Zähler für die Textboxen und dann halt bei Cells nicht die Zeilen sondern die Spalten hochzählen. Im folgenden Beispiel (ungetestet) werden die Daten aus Zeile 25 von Spalte A bis Spalte W eingelesen. Das hättest du aber auch selbst herausfinden können, wenn du dir mal in der VBA Hilfe die Einträge und Hilfen zu den von mir verwendeten Befehlen, vor allen Cells, anschauen würdest.

For lngi = 1 To 23
Me.Controls("TextBox" & lngi) = wks.Cells(25, lngi)
Next lngi


Und zum vorherigen Thread, eine Null (0) wird schon mit CLng in eine Zahl gewandelt, wenn aber nichts in der Zelle steht dann kann CLng auch nicht wandeln und läuft in einen Fehler.


Gruß Heiko

PS: Rückmeldung wäre nett !!!


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 21.08.2008 06:01:18

Guten Morgen Heiko!

Danke für Deine Antwort.

Habe jetzt den Code getestet. würde alles bestens funktionieren. Wo und wie müßte ich jedoch den Code noch ändern wenn das Einlesen ab der Spalte B anfangen soll und nicht bei der Spalte A.

Private Sub Summe2()
Dim wks As Worksheet
Set wks = Workbooks("Stellenpläne.xls").Worksheets("Soll")
For lngI = 1 To 22
Me.Controls("plendtxt" & lngI) = wks.Cells(28, lngI)
Next lngI
End Sub




Danke

Josef


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Erich G.
Geschrieben am: 21.08.2008 07:01:55

Hi Josef,
versuch mal

For lngI = 1 To 22
   Me.Controls("plendtxt" & lngI) = wks.Cells(28, lngI + 1)
Next lngI

Ob die Schleife jetzt bis 21 oder 22 gehen sollte, weißt nur du. Wieviele Spalten sollen gelesen werden?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 21.08.2008 07:12:27

Hallo Erich!

Danke für Deine Antwort und Deine Hilfe. Jetzt passt alles.

Josef


  

Betrifft: AW: Zahlen einer Tabelle in Userform einlesen von: Josef
Geschrieben am: 21.08.2008 07:14:43

Hallo nochmals!

Ich möchte mich bei Dir noch einmal recht herzlich für Deine Mühe bedanken.

Josef


 

Beiträge aus den Excel-Beispielen zum Thema "Zahlen einer Tabelle in Userform einlesen"