Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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
viele Textboxen in Tabelle schreiben
05.06.2014 16:29:59
Christian
Hallo Forum,
mit folgendem Code übertrage ich den Ihnhalt mehrerer Textboxen un Labels in ein Tabellenblatt.
Das läuft auch, aber dauert halt, weil es ja einige sind.
Kann man dass noch schneller machen?
In der Recherche habe ich einiges gelesen, dass man die Werte erst an ein Array übergeben kann und dann schneller eintragen kann, nur fehlt mir hier der Ansatz.
Wie könnte man das Eintragen beschleunigen?
Ich benötige keinen ferigen Code, sondern nur mal einen Anstupser in die richtige Richtung (der sollte aber auch nicht zu knapp ausfallen;-)
Für Anregungen sage ich schon mal Danke!
Private Sub CommandButton9_Click()
'# userform komplett schließen #
Dim znr As Long
Dim suchnr As String
Dim SpNr As Range
Set SpNr = Sheets("Kalkulation").Range("L1:L25000")
suchnr = Me.ListBox1.List(0, 1)
znr = Application.Match(suchnr, SpNr, 0)
wksKalk.Cells(znr, 35) = Me.TextBox58 * 1
wksKalk.Cells(znr, 36) = Me.TextBox25 * 1
wksKalk.Cells(znr, 37) = Me.TextBox24 * 1
wksKalk.Cells(znr, 39) = Me.TextBox93 * 1
wksKalk.Cells(znr + 1, 37) = Me.TextBox59 * 1
wksKalk.Cells(znr + 1, 39) = Me.TextBox94 * 1
wksKalk.Cells(znr + 1, 40) = Me.TextBox48 * 1
wksKalk.Cells(znr + 2, 25) = Me.TextBox76 * 1
wksKalk.Cells(znr + 2, 26) = Me.TextBox64 * 1
wksKalk.Cells(znr + 3, 25) = Me.TextBox77 * 1
wksKalk.Cells(znr + 3, 26) = Me.TextBox65 * 1
wksKalk.Cells(znr + 3, 37) = Me.TextBox40 * 1
wksKalk.Cells(znr + 3, 38) = Me.TextBox44 * 1
wksKalk.Cells(znr + 3, 39) = Me.TextBox51 * 1
wksKalk.Cells(znr + 3, 40) = Me.Label36
wksKalk.Cells(znr + 4, 25) = Me.TextBox78 * 1
wksKalk.Cells(znr + 4, 26) = Me.TextBox66 * 1
wksKalk.Cells(znr + 4, 37) = Me.TextBox41 * 1
wksKalk.Cells(znr + 4, 38) = Me.TextBox45 * 1
wksKalk.Cells(znr + 5, 25) = Me.TextBox79 * 1
wksKalk.Cells(znr + 5, 26) = Me.TextBox67 * 1
wksKalk.Cells(znr + 5, 37) = Me.TextBox42 * 1
wksKalk.Cells(znr + 5, 38) = Me.TextBox46 * 1
wksKalk.Cells(znr + 5, 39) = Me.TextBox52 * 1
wksKalk.Cells(znr + 5, 40) = Me.Label38
wksKalk.Cells(znr + 6, 25) = Me.TextBox80 * 1
wksKalk.Cells(znr + 6, 26) = Me.TextBox68 * 1
wksKalk.Cells(znr + 6, 37) = Me.TextBox43 * 1
wksKalk.Cells(znr + 6, 38) = Me.TextBox47 * 1
wksKalk.Cells(znr + 7, 25) = Me.TextBox81 * 1
wksKalk.Cells(znr + 7, 26) = Me.TextBox69 * 1
wksKalk.Cells(znr + 8, 25) = Me.TextBox82 * 1
wksKalk.Cells(znr + 8, 26) = Me.TextBox70 * 1
wksKalk.Cells(znr + 8, 37) = Me.TextBox32 * 1
wksKalk.Cells(znr + 8, 38) = Me.TextBox36 * 1
wksKalk.Cells(znr + 8, 40) = Me.TextBox56 * 1
wksKalk.Cells(znr + 9, 25) = Me.TextBox83 * 1
wksKalk.Cells(znr + 9, 26) = Me.TextBox71 * 1
wksKalk.Cells(znr + 9, 37) = Me.TextBox33 * 1
wksKalk.Cells(znr + 9, 38) = Me.TextBox37 * 1
wksKalk.Cells(znr + 9, 40) = Me.TextBox57 * 1
wksKalk.Cells(znr + 10, 25) = Me.TextBox84 * 1
wksKalk.Cells(znr + 10, 26) = Me.TextBox72 * 1
wksKalk.Cells(znr + 10, 37) = Me.TextBox34 * 1
wksKalk.Cells(znr + 10, 38) = Me.TextBox38 * 1
wksKalk.Cells(znr + 11, 25) = Me.TextBox85 * 1
wksKalk.Cells(znr + 11, 26) = Me.TextBox73 * 1
wksKalk.Cells(znr + 11, 37) = Me.TextBox35 * 1
wksKalk.Cells(znr + 11, 38) = Me.TextBox39 * 1
wksKalk.Cells(znr + 12, 25) = Me.TextBox58 * 1
wksKalk.Cells(znr + 12, 40) = Me.TextBox58 * 1
wksKalk.Cells(znr + 13, 25) = Me.TextBox59 * 1
wksKalk.Cells(znr + 13, 40) = Me.TextBox59 * 1
wksKalk.Cells(znr + 15, 37) = Me.Label71
With Me
Unload Me
ufposändern.Hide
End With
End Sub
MfG Christian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: viele Textboxen in Tabelle schreiben
05.06.2014 16:36:29
Rudi
Hallo,
das übliche:
Bildschirmaktualisierung aus
autom. Berechnung aus
Eintragen
autom. Berechnung an
Gruß
Rudi

AW: viele Textboxen in Tabelle schreiben
05.06.2014 17:15:17
Christian
Hallo Rudi,
das bringt nicht viel, da die Berechnung schon auf Manuell eingestellt ist.
Mir geht es eher darum, den Weg zu finden, falls überhaupt möglich, zwei "Tabellen/Arrays" vorzudefinieren bzw. zu erzeugen, und zwar mit den variablen Werten aus den TextBoxen und Labels sowie mit konstanten Texten, und dann diese mit einem "Rutsch" in die Tabelle zu schreiben/kopieren.
Da es ja zwei feste Bereiche in dem Arbeitsblatt sind und nur die znr variabel, dachte ich mir, man "ezeugt" einmal eine Tabelle/einen Bereich mit 6 Spalten und 16 Zeilen und einen mit 2 Spalten und 16 Zeilen, mit den Werten aus den UFTextBoxen und sagt dann: gehe zu znr(x)/Spalte 35 und kopiere mir den Bereich(a) rein, gehe zu znr(x)/Spalte 25 und kopiere mir den Bereich(b) rein.
Praktisch beide Bereiche mal auf der UF hinterlegt, und dann abrufbar machen.
Nur fehlt mir der Ansatz wie ich die Bereiche hinterlegen könnte, wenn möglich!
MfG Christian

Anzeige
AW: viele Textboxen in Tabelle schreiben
05.06.2014 22:26:22
Christian
Hallo Forum,
nach Suchen und anpassen habe ich es wie folgt gelöst:
Macht was es soll, sehr schnell.
Aber da ich noch Laie auf dem Gebiet VBA bin, frage ich mal lieber nach ob es auch so ok ist,
oder man noch etwas beachten muss!
Private Sub CommandButton9_Click()
'# userform komplett schließen #
Dim lz As Long
Dim suchnr As String
Dim SpNr As Range
Set SpNr = Sheets("Kalkulation").Range("L1:L25000")
suchnr = Me.ListBox1.List(0, 1)
lz = Application.Match(suchnr, SpNr, 0)
Dim arrZ(1 To 16, 1 To 5)
With wksKalk
'### arrz
arrZ(1, 1) = Me.TextBox25 * 1
arrZ(1, 2) = Me.TextBox24 * 1
arrZ(1, 3) = Me.Label33
arrZ(1, 4) = Me.TextBox93 * 1
arrZ(1, 5) = Me.Label32
arrZ(16, 1) = ""
arrZ(16, 2) = ""
arrZ(16, 3) = ""
arrZ(16, 4) = "GP"
arrZ(16, 5) = Me.TextBox14 * 1
.Range(wksKalk.Cells(lz, 36), wksKalk.Cells(lz + 15, 40)).Resize() = arrZ
End With
With Me
Unload Me
ufposändern.Hide
End With
End Sub
MfG Christian

Anzeige
AW: viele Textboxen in Tabelle schreiben
06.06.2014 10:33:33
Rudi
Hallo,
schon ganz gut.
Wo wird wksKalk definiert?
Wenn Public, dann auch hier verwenden:
statt
Set SpNr = Sheets("Kalkulation").Range("L1:L25000")
Set SpNr = wksKalk.Range("L1:L25000")
In VBA solltest du keine Umlaute verwenden (ufposändern)
Me. ist eigentlich überflüssig. Schadet aber auch nicht.
Private Sub CommandButton9_Click()
'# userform komplett schließen #
Dim lz As Long
Dim SuchNr As String
Dim SpNr As Range
Set SpNr = Sheets("Kalkulation").Range("L1:L25000")
SuchNr = Me.ListBox1.List(0, 1)
lz = Application.Match(SuchNr, SpNr, 0)
Dim arrZ(1 To 16, 1 To 5)
'### arrz
arrZ(1, 1) = Me.TextBox25 * 1
arrZ(1, 2) = Me.TextBox24 * 1
arrZ(1, 3) = Me.Label33
arrZ(1, 4) = Me.TextBox93 * 1
arrZ(1, 5) = Me.Label32
'etc
arrZ(16, 1) = ""
arrZ(16, 2) = ""
arrZ(16, 3) = ""
arrZ(16, 4) = "GP"
arrZ(16, 5) = Me.TextBox14 * 1
With wksKalk
.Range(.Cells(lz, 36), .Cells(lz + 15, 40)) = arrZ
End With
Me.Hide
Unload Me
End Sub
Gruß
Rudi
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige