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