MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 12.01.2017, 12:05   #1
APJH
Neuer Benutzer
Neuer Benutzer
Standard VBA - Code schneller machen

Hallo zusammen

Hab da einen Code der gut funktioniert.
Jedoch ist er langsam und es geht relativ lang (ca.5'') bis die Inhalte aus den TextBoxen in die Zelle geschrieben wurden.

Gibt es eine Möglichkeit diesen schneller zu machen?
Es ist mir bewusst, dass meine Lösung nicht sehr elegant ist - funktioniert aber

Code:

Code:
Private Sub CommandButton5_Click()

'Code für Einfügen der Zelleninhalte
lastrow = Worksheets("Tabelle2").Range("B10000").End(xlUp).Row + 1
    Worksheets("Tabelle2").Cells(lastrow, 2).Value = TextBox1.Value
    Worksheets("Tabelle2").Cells(lastrow, 3).Value = TextBox2.Value
    Worksheets("Tabelle2").Cells(lastrow, 4).Value = TextBox3.Value
    Worksheets("Tabelle2").Cells(lastrow, 5).Value = TextBox4.Value
    Worksheets("Tabelle2").Cells(lastrow, 6).Value = TextBox5.Value
    Worksheets("Tabelle2").Cells(lastrow, 7).Value = TextBox6.Value
    Worksheets("Tabelle2").Cells(lastrow, 8).Value = TextBox7.Value
    Worksheets("Tabelle2").Cells(lastrow, 9).Value = TextBox8.Value
    Worksheets("Tabelle2").Cells(lastrow, 10).Value = TextBox9.Value
    Worksheets("Tabelle2").Cells(lastrow, 11).Value = TextBox10.Value
    Worksheets("Tabelle2").Cells(lastrow, 12).Value = TextBox11.Value
    Worksheets("Tabelle2").Cells(lastrow, 13).Value = TextBox12.Value
    Worksheets("Tabelle2").Cells(lastrow, 14).Value = TextBox13.Value
    Worksheets("Tabelle2").Cells(lastrow, 15).Value = TextBox14.Value
    Worksheets("Tabelle2").Cells(lastrow, 16).Value = TextBox15.Value
    Worksheets("Tabelle2").Cells(lastrow, 17).Value = TextBox16.Value
    Worksheets("Tabelle2").Cells(lastrow, 18).Value = TextBox17.Value
    Worksheets("Tabelle2").Cells(lastrow, 19).Value = TextBox18.Value
    Worksheets("Tabelle2").Cells(lastrow, 20).Value = TextBox19.Value
    Worksheets("Tabelle2").Cells(lastrow, 21).Value = TextBox20.Value
    Worksheets("Tabelle2").Cells(lastrow, 22).Value = TextBox21.Value
    Worksheets("Tabelle2").Cells(lastrow, 23).Value = TextBox22.Value
    Worksheets("Tabelle2").Cells(lastrow, 24).Value = TextBox23.Value
    Worksheets("Tabelle2").Cells(lastrow, 25).Value = TextBox24.Value
    Worksheets("Tabelle2").Cells(lastrow, 26).Value = TextBox25.Value
    
'Sortierfunktion
Worksheets("Tabelle2").Range("A2:X10000").Sort Key1:=Worksheets("Tabelle2").Range("C2"), Key2:=Worksheets("Tabelle2").Range("D2"), Order1:=xlAscending, _
         Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
         DataOption1:=xlSortNormal

' Userform zurücksetzen
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""
    TextBox6.Text = ""
    TextBox7.Text = ""
    TextBox8.Text = ""
    TextBox9.Text = ""
    TextBox10.Text = ""
    TextBox11.Text = ""
    TextBox12.Text = ""
    TextBox13.Text = ""
    TextBox14.Text = ""
    TextBox15.Text = ""
    TextBox16.Text = ""
    TextBox17.Text = ""
    TextBox18.Text = ""
    TextBox19.Text = ""
    TextBox20.Text = ""
    TextBox21.Text = ""
    TextBox22.Text = ""
    TextBox23.Text = ""
    TextBox24.Text = ""
    TextBox25.Text = ""
    ComboBox1.Text = ""
    
'Startansicht UserForm wiederherstellen
UserForm2.ComboBox1.Visible = True
    UserForm2.CommandButton2.Visible = True
    UserForm2.Label27.Visible = True
    UserForm2.CommandButton4.Visible = True
    UserForm2.CommandButton3.Visible = True
    UserForm2.CommandButton5.Visible = False
    UserForm2.Label28.Visible = False
    
    
    MsgBox ("New article has been saved!")
End Sub


Gruss

APJH
APJH ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 12:21   #2
EarlFred
MOF Guru
MOF Guru
Standard

Hallo APJH,

das Eintragen von 25 Werten selbst dürfte nicht das Problem sein. Ich vermute vielmehr, dass umfangreiche Berechnungen oder Ereignisprozeduren angestoßen werden - was dann eben 25fach der Fall ist.

Versuche:
Code:

Option Explicit
Private Sub CommandButton5_Click()

Dim lastrow  As Long
Dim i As Long
Dim fVarWerte(24) As String


'Code für Einfügen der Zelleninhalte
lastrow = Worksheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row + 1
        
    
For i = 1 To 25
  fVarWerte(i - 1) = Me.Controls("Textbox" & i).Text
Next i
With Worksheets("Tabelle2")
  Range(.Cells(lastrow, 2), .Cells(lastrow, 26)).Value = fVarWerte
End With

'Sortierfunktion
'Warum 10000 und nicht "lastrow"?
Worksheets("Tabelle2").Range("A2:X10000").Sort Key1:=Worksheets("Tabelle2").Range("C2"), Key2:=Worksheets("Tabelle2").Range("D2"), Order1:=xlAscending, _
         Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
         DataOption1:=xlSortNormal

' Userform zurücksetzen
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""
    TextBox6.Text = ""
    TextBox7.Text = ""
    TextBox8.Text = ""
    TextBox9.Text = ""
    TextBox10.Text = ""
    TextBox11.Text = ""
    TextBox12.Text = ""
    TextBox13.Text = ""
    TextBox14.Text = ""
    TextBox15.Text = ""
    TextBox16.Text = ""
    TextBox17.Text = ""
    TextBox18.Text = ""
    TextBox19.Text = ""
    TextBox20.Text = ""
    TextBox21.Text = ""
    TextBox22.Text = ""
    TextBox23.Text = ""
    TextBox24.Text = ""
    TextBox25.Text = ""
    ComboBox1.Text = ""
    
'Startansicht UserForm wiederherstellen
UserForm2.ComboBox1.Visible = True
    UserForm2.CommandButton2.Visible = True
    UserForm2.Label27.Visible = True
    UserForm2.CommandButton4.Visible = True
    UserForm2.CommandButton3.Visible = True
    UserForm2.CommandButton5.Visible = False
    UserForm2.Label28.Visible = False
    
    
    MsgBox ("New article has been saved!")
End Sub
Grüße
EarlFred
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 12:24   #3
Fennek11
MOF User
MOF User
Standard

Hallo,

nur so als Ansatz, da ich nicht simulieren möchte:

Alle Werte der TextBoxen in ein Array schreiben und dieses dann auf einmal in die Zellen.

mfg
Fennek11 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 12:57   #4
APJH
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Danke :)

Danke Euch vielmals.

Funktioniert wunderbar. Mit dem kann ich gut leben.

Gruss
APJH ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 13:05   #5
APJH
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Sortierung

Sorry, muss mich nochmals melden.

@EarlFred: Deine Code ist einiges schneller, jedoch wird die Tabelle danach nicht mehr sortiert. Ich sehe nicht an was es liegen könnte.

Hast du eine Idee?

Herzlichen Dank.

Gruss
APJH ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 13:25   #6
EarlFred
MOF Guru
MOF Guru
Standard

Hallo Gruss,

nein, nicht nachvollziehbar ohne mehr Detailkenntnis.

Grüße
EarlFred
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 13:54   #7
APJH
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ok.

Trotzdem herzlichen Dank
APJH ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 14:14   #8
APJH
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Update

Hallo EarlFred

Habe nochmals geprobt mit deiner Formel.

Wenn ich die Inhalte von den TextBoxen in die Tabelle schreiben lasse, werden sie in Zeile 350 geschrieben (was aktuell die erste leere Zeile ist).

Wiederhol ich diesen Schritt mit neuen Werten, werden diese nicht in Zeile 351 geschrieben sondern Zeile 350 wird überschrieben.

Hilf dir das weiter als Info?

Gruss
APJH ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 15:42   #9
EarlFred
MOF Guru
MOF Guru
Standard

Hallo Gruss,

und das soll erst jetzt, mit Änderung des Codes, der Fall sein?

Hier ermittelst Du die erste freie Zeile:
Code:

lastrow = Worksheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row + 1
Wenn in Spalte 2 nichts (oder ein leerer Wert) eingetragen wird, kann sich der Zähler nie erhöhen. Das war aber bisher auch der Fall bei Deinem Code.

Grüße
EarlFred
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 17:03   #10
APJH
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Sortierfunktion

Hallo EarlFred

Stimmt...da hatte es einen Fehler drin. Jetzt wird die Zeile nicht mehr überschrieben.

Aber nochmals zur Sortierfunktion:
Habe nochmals ein bisschen rumprobiert und bemerkt, dass nur die neu beigefügten Zeilen Sortiert werden. Aber alle werte davor werden nicht mit sortiert.

Gruss

APJH
APJH ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.01.2017, 18:33   #11
EarlFred
MOF Guru
MOF Guru
Standard

Aha. Bei meiner Datei nicht. Deine kenne ich nicht.
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2017, 13:00   #12
APJH
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo EarlFred

Die Werte nach denen Sortiert wird (Spalte C und D) werden mit einer Textformatierung in das Tabellenblatt geschrieben. Darum werden sie bei der Sortierung nicht berücksichtigt.

Wie kann ich die bereits bestehenden Werte in der Tabelle in Texte umwandeln?

Gruss

APJH
APJH ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.01.2017, 16:18   #13
APJH
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hab eine Lösung gefunden.

Danke an alle

Gruss

APJH
APJH ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.