Clever-Excel-Forum

Normale Version: Userform in Userform lädt lange
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
15 Hallo zusammen, und frohe Ostern

Das folgende Projekt habe ich aus dem Netz geklaut. Danke an den unbekannten Spender:)  Mit einem Doppelklick öffne ich in einer Userform eine andere Userform und trage bestimmte Daten in die andere Userform ein.  Das funktioniert auch sehr gut. Leider lädt das dann sehr lange, wenn ich die Daten eintrage. Vielleicht hat wer einen Tipp für mich, was ich falsch gemacht habe

LG
Michael
Hallo,

mal abgesehen davon, dass ich es für Blödsinn halte, bei so wenig Objekten mit zwei UserForms zu arbeiten, wäre es schön, wenn du etwas genauer beschreiben würdest, wo der Doppelklick erfolgen soll. (Welches Formular).
Hallo Klaus Dieter

Das ist eine abgespeckte Version. Ich habe die für dieses Forum gekürzt. Im Original sind in der ersten UF ca 20 Textboxen und in der zweiten UF ca. 50 Checkboxen.

Es geht um eine Bahnspezifische Datei. Mit einem Doppelklick öffnet sich die 2.UF mit der ich die Bahnhöfe in die Textbox eintragen kann. Sobald ich aber in der Exceldatei umblättere oder was anders mache (z.B.: UF neu laden), und später wieder auf die UF gehe lädt die Funktion dann so lange. Ganz schlimm ist es, wenn ich die UF von einer anderen Seite (z.B.: Daten aufrufe)
Ich habe aber den Verdacht, dass es an meinem Rechner liegen könnte

LG
Michael
Hallo Michael,

es ist natürlich immer besser, wenn man den tatsächlichen Umfang kennt. Trotzdem bleibe ich bei meiner Meinung, dass zwei Userforms Blödsinn sind. Das würde jetzt heißen, ich fülle Textbox 1, mache einen Doppelklick, wähle einen Bahnhof aus, bei der nächsten Textbox die gleich Prozedur, dass dann zwanzig Mal?

Hallo Michael,

habe mal einen alternativen Vorschlag erstellt.
Danke. Das ist auch eine gute Lösung. Ich glaub ich werde die übernehmen. Mit dem Klicken ist es halt nur die Performance.

Aber nur zum besseren Verständnis
So sieht eine Zeile aus

Zug 719 Ab Salzburg Über Bischofshofen Über Selzthal An Graz Hbf (und dann kommen die Daten wie Gewicht, Bremse, Wagenanzahl usw.)

Zug 499   blablabla

Lg
Michael
Hallo Michael,

anhand der vorliegenden Datei kann ich nicht feststellen, warum das so langsam ist. Da ist im Beispiel sicher auch nicht alles vorhanden, was es in der richtigen Datei an Makros gibt. Da können schon ordentliche Bremsen drin sein. Kann ich so aber nicht beurteilen.
Mit den Makros könntest du recht haben.
Alleine die Buttons zum Mailen (und das sind einige), und da hab ich schon abgespeckt, ist sehr ausfüllend. Die Mailadresse wird aus bestimmten Zellen ausgelesen. 

LG
Michael
Hallo Michael,

bei groben Hinsehen, sieht das aus, wie zehn Mal der gleiche Quelltext. Das kann man doch bestimmt mit Variablen für die paar Unterschiede auf einen Quelltext eindampfen. Obwohl ich aber nicht glaube, dass da die Laufzeit herkommt, die werden ja wohl nicht alle durchlaufen?
Hallöchen,

das Einkürzen könnte so aussehen. Das E-Mail-Erzeugen brauchst Du nur 1x, und wohin das Ganze geht, übergibst Du diesem Makro als Variable. Du kannst den Aufruf dann auch gleich in die Click-Makros einfügen ...

Das Kopieren kann mit der Zeit relativ lange dauern. Du brauchst ja nur mal copy und paste auszukommentieren und zu schauen, wie lange es da dauert. Wenn es das ist, könnte man schauen, wie man das anders hin bekommt.

Code:
Sub Mail_Graz_Word_Sonderzug()
Call Mail_Alle "B3"
End Sub

Sub Mail_Alle(byVal strTo as String)
' Sendet Mail mit integriertem Bereich als Bereich mit Signatur
  Dim WSh1 As Worksheet, WSh2 As Worksheet
  Dim sMailtext As String, sBer As String, iEinf As Integer
  
  sBer = "A1:J50"                               ' Kopierbereich
  Set WSh1 = ThisWorkbook.Sheets("Emailadressen")                         ' Blatt mit Maildaten
  Set WSh2 = ThisWorkbook.Sheets("Telegramm")     ' Datenblatt
  
  WSh2.Range(sBer).Copy                         ' Bereich kopieren
'  WSh2.UsedRange.Copy                           ' Oder alles
  On Error GoTo fehlermelden
  With CreateObject("Outlook.Application").CreateItem(0)
      .BodyFormat = 2                           ' 2=HTML-Format, 3=Richtext
      .Subject = Range("s8").Text & " " & Range("S5").Text & " " & Range("s4").Text & " " & Range("S6").Text & Range("S7").Text & " " & Range("S16").Text & " " & Range("S12").Text & " " & Range("S14").Text & " " & Range("S15").Text         'Betreffzeile
      .To = WSh1.Range(strTo).Text                                ' Empfänger
      .CC = ""               ' Kopie
      sMailtext = ""
      iEinf = Len(sMailtext) + 1
      .GetInspector                             ' Signatur holen
      .htmlbody = Replace(sMailtext, vbLf, "<br>") _
                & .htmlbody
      .Display
    
      With .GetInspector.WordEditor.Application.Selection
          .start = iEinf                        ' Grafik Einfügestelle
          .Paste
      End With
      
  End With
fehlermelden:
  
  End
End Sub