Hallo Bernd, vielen Dank für die tolle Anregung! Auf dieser Basis mit einem funktionierendem Beispiel kann jeder dieses Vorgehen auf seine Bedürfnisse leicht anpassen. Sorry das ich erst jetzt hier vorbeigekommen bin, es kann schon eine Zeit dauern bis man die Leute erreicht😉 Bitte weiter so und vielen Dank fürs teilen.
@vba-kracherheld-officeАй бұрын
Danke Klaus
@ingostoter5490Ай бұрын
Hallo, kann einer mir sagen, wie ich die ListView über die Combobox die verschiedenen Tabellenblätter einzeln anzeigen lassen kann. Habe 3 Tabellen, die Tabellen fangen mit spalte B an.. In der UserForm1 habe ich ne ListView, Combobox. Möchte halt, wenn ich über die Combobox die tabelle auswähle das er mir die Tabelle in der ListView anzeigt. Gruß
@ingostoter5490Ай бұрын
hallo, ich arbeite mit office 365 64bit und da ist es drinne, man muss es nur unter Toolsammlung neu einfügen. Zusätzliche Steuerelemente einfügen(Microsoft ListView Control, version6.0)
@thanht.7897Ай бұрын
Mega nicer Hack! Danke dir 🎉
@MathiasLeubnerАй бұрын
Kannst du bitte die Funktion in der Beschreibung speichern, damit diese kopiert werden kann?
@vba-kracherheld-officeАй бұрын
ja, gern: #If VBA7 Then Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" _ Alias "URLDownloadToFileA" (ByVal pCaller As LongPtr, _ ByVal szURL As String, ByVal szFileName As String, _ ByVal dwReserved As LongPtr, ByVal lpfnCB As LongPtr) As Long #Else Private Declare Function URLDownloadToFile Lib "urlmon" _ Alias "URLDownloadToFileA" (ByVal pCaller As Long, _ ByVal szURL As String, ByVal szFileName As String, _ ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long #End If 'Global deklariert Dim strZiel As String Private Sub UserForm_Initialize() ' Dieses Makro lädt eine Datei aus dem Internet herunter und speichert sie lokal auf Ihrem Computer. ' Deklaration der Variablen Dim strUrl As String Dim lngErg As Long Dim ctrl As Control ' URL der herunterzuladenden Datei strUrl = "www.held-office.de/Downloads/Perlfee2023.jpg" strZiel = ThisWorkbook.Path & "\Perfee2023.jpg" ' Aufruf der API-Funktion URLDownloadToFile, um die Datei herunterzuladen lngErg = URLDownloadToFile(0, strUrl, strZiel, 0, 0) If lngErg = 0 Then Me.Image1.BorderStyle = fmBorderStyleNone Me.Image1.Picture = LoadPicture(strZiel) Me.Image1.PictureSizeMode = fmPictureSizeModeStretch Me.TXT_URL.Value = strUrl Me.Caption = "" Me.BackColor = RGB(240, 240, 240) End If For Each ctrl In Me.Controls ' Je nach Typ des Steuerelements wird die Formatierung festgelegt Select Case TypeName(ctrl) Case "TextBox" ' TextBox-Steuerelemente werden mit grauer Schriftfarbe ' und einer Schriftgröße von 10 formatiert. ctrl.Font.Size = 10 ctrl.ForeColor = RGB(128, 128, 128) ctrl.Enabled = False Case "Label" ' Label-Steuerelemente werden mit grauem Hintergrund, ' grauer Schriftfarbe und einer Schriftgröße von 12 formatiert. ctrl.BackColor = RGB(240, 240, 240) ctrl.Font.Size = 10 ctrl.ForeColor = RGB(128, 128, 128) ctrl.TextAlign = fmTextAlignLeft Case "CommandButton" ' CommandButton (OK-Schaltfläche) wird mit grünem Hintergrund, ' weißer Schriftfarbe und einer Schriftgröße von 11 formatiert. ctrl.BackColor = RGB(0, 100, 0) ctrl.ForeColor = RGB(255, 255, 255) ctrl.Font.Size = 11 End Select Next ctrl End Sub Private Sub cmd_ok_Click() Dim shp As Shape Dim rngTarget As Range ' Zielbereich für das Bild in der Tabelle festlegen Set rngTarget = Tabelle1.Range("B6") ' Bild aus dem Image-Steuerelement kopieren und in die Tabelle einfügen Set shp = Tabelle1.Shapes.AddPicture _ (strZiel, msoFalse, msoCTrue, rngTarget.Left, rngTarget.Top, -1, -1) ' Größe des Bildes anpassen, um in die Zelle zu passen shp.LockAspectRatio = msoTrue shp.Width = rngTarget.Width shp.Height = rngTarget.Height End Sub Private Sub cmd_Cancel_Click() Unload Me End Sub
@MartinFriedli-jh4dlАй бұрын
Hallo und Vielen dank für die einfach erklärten Videos! Ich habe das Makro nach meinem Dateistamm nachgebaut (abgeschrieben). Leider kommt bei mir immer ein Laufzeitfehler 424, Objekt erforderlich. Finde aber keine Differenz. der Fehler tritt bei der Stelle strSQL=... auf. Hat das bei Office 365 etwas verändert?
@@vba-kracherheld-office Vielen Dank für die Prompte Antwort! Leider aber kommt immer noch der selbe Fehler...🤔
@vba-kracherheld-officeАй бұрын
@@MartinFriedli-jh4dl ich habe Dir meine Version mal zugemailt. Die tickt bei mir
@sogehts4332 ай бұрын
Die Frage nach einem zusätzlicehen Text nach der eingefügten Tabelle wollte ich auch stellen und eine Lösung dafür wäre echt Spitze.😊😊😊
@vba-kracherheld-office2 ай бұрын
so: Sub ExcelBereichAlsEmailVesenden2() Dim rngBereich As Range Dim objDoc As Object Dim lngZ As Long ' Den umliegenden Bereich der Zelle A1 identifizieren Set rngBereich = Tabelle1.Range("A1").CurrentRegion ' Einen Verweis zu Outlook setzen und leere E-Mail erstellen With CreateObject("Outlook.Application").CreateItem(0) ' E-Mail anzeigen .Display ' Den eigentlichen Textinhalt der E-Mail definieren .Body = "Der eigentliche Text des E-Mails..." ' Einen Verweis zum Word-Editor herstellen Set objDoc = .GetInspector.WordEditor ' Bereich kopieren rngBereich.Copy ' Den Cursor an das Ende des Dokuments setzen objDoc.Range.End = objDoc.Range.End - 1 ' Einfügen des Bereichs objDoc.Range.Paste ' Einfügen des zusätzlichen Textes objDoc.Range.InsertAfter vbCrLf & "Zusätzlicher Text hier..." ' Hier den zusätzlichen Text einfügen ' Adressat und Titel der E-Mail festlegen .To = "[email protected]" .Subject = "Titel des E-Mails" ' Zwischenablage leeren Application.CutCopyMode = False ' E-Mail versenden .Send End With End Sub
@sogehts4332 ай бұрын
Super, vielen Dank. Werde ich testen😊
@sogehts4332 ай бұрын
@@vba-kracherheld-office Funktioniert leider nicht bei mir. Der Inhalt der Nachricht und die Tabellenzeilen werden nicht angezeigt. Lediglich der letzte Satz "Zusätzlicher Text hier..." ist zu sehen.
@vba-kracherheld-office2 ай бұрын
@@sogehts433 das ist echt etwas verzwickt, aber so geht es bei mir: Sub EmailErstellen() Dim OutlookApp As Object Dim Mail As Object Dim RangeToSend As Range Dim EmailBody As String ' Start Outlook-Anwendung Set OutlookApp = CreateObject("Outlook.Application") Set Mail = OutlookApp.CreateItem(0) ' E-Mail-Eigenschaften setzen With Mail .To = "[email protected]" .Subject = "Betreff der E-Mail" End With ' Einleitenden Text einfügen EmailBody = "Guten Tag," & vbCrLf & vbCrLf & _ "Hier sind die aktuellen Daten:" & vbCrLf & vbCrLf ' Bereich aus Excel-Tabelle einfügen Set RangeToSend = Sheets("Tabelle1").Range("A1:B10") ' Beispielbereich For Each cell In RangeToSend EmailBody = EmailBody & cell.Value & vbTab If cell.Column = RangeToSend.Columns.Count Then EmailBody = EmailBody & vbCrLf End If Next cell EmailBody = EmailBody & vbCrLf ' Abschließenden Text einfügen EmailBody = EmailBody & "Mit freundlichen Grüßen," & vbCrLf & "Max Mustermann" ' E-Mail senden With Mail .Body = EmailBody .Display ' Zum Anzeigen der E-Mail vor dem Senden '.Send ' Zum direkten Senden der E-Mail End With Set OutlookApp = Nothing Set Mail = Nothing End Sub
@pawelpopolski90042 ай бұрын
Hat mir gefallen :-) Ich würde aber eine Range Variable deklarieren, um mir Tippere zu ersparen dim zelle as range set range= .cells(lngZeile,1)
@schnullertroll41732 ай бұрын
Hi, wie kann ich die Fotoansicht vergrößern?
@vba-kracherheld-office2 ай бұрын
Hi, so z.B. Um die Größe der Bilder, die in das Arbeitsblatt eingefügt werden, zu ändern, müssen die Width und Height Parameter der Shapes.AddPicture Methode angepasst werden. Sub BilderEntfernen() Dim objShp As Shape With Tabelle2 For Each objShp In .Shapes If objShp.Type = 13 Then objShp.Delete End If Next objShp End With End Sub Sub BilderEinfuegen() Dim rngTreffer As Range Dim strBild As String Dim i As Integer Dim objShp As Shape Dim lngSpalte As Long Dim lngZeile As Long With Tabelle2 Call BilderEntfernen lngZeile = 4 lngSpalte = 1 For i = 0 To .ListBox1.ListCount - 1 If .ListBox1.Selected(i) = True Then Set rngTreffer = Tabelle1.Range("A:A").Find _ (what:=.ListBox1.List(i), lookat:=xlWhole) If Not rngTreffer Is Nothing Then strBild = ThisWorkbook.Path & "\" & _ rngTreffer.Offset(0, 1).Value & ".jpg" If Dir(strBild) <> "" Then ' Hier die Bildgröße anpassen Set objShp = Tabelle2.Shapes.AddPicture _ (Filename:=strBild, _ LinkToFile:=msoFalse, _ SaveWithDocument:=msoTrue, _ Left:=.Cells(lngZeile, lngSpalte).Left, _ Top:=.Cells(lngZeile, lngSpalte).Top, _ Width:=450, Height:=300) ' Anpassung der Bildgröße lngSpalte = lngSpalte + 6 If lngSpalte >= 12 Then lngZeile = lngZeile + 16 lngSpalte = 1 End If End If End If .ListBox1.Selected(i) = False End If Next i End With End Sub
@nadirturkan20682 ай бұрын
Hallo, Kannst du mir diesbezüglich helfen? Ich habe 1 zu 1 versucht anzuwenden es hat aufgrund der Angewendeten Butons bei mir nicht Funktioniert. Gibt es eine Möglichkeit diese Funktion ohne Buttons in Makros zu schreiben? Vielen Dank für deine Antwort. LG Nadir Türkan
@vba-kracherheld-office2 ай бұрын
hallo Nadir, magst Du mir Deine Datei mal mailen? Ich schaue es mir gerne na. Ist bestimmt nur eine Kleinigkeit. Mail an: [email protected]
@chrisk.29572 ай бұрын
Danke, Bernd, ich fand es SUPER!
@paul-peterpan69432 ай бұрын
Guten Morgen, Bernd! Wie verhindere ich, dass bei Möglichkeit 3 eventuell vorhandene Leerzellen aus Spalte A in das Dictionary aufgenommen werden? LG Achim
@vba-kracherheld-office2 ай бұрын
Hi Achim, so: Sub UnikateInDictionary() Dim vardat As Variant, ObjDict As Object, lngZeile As Long, lngZeileMax As Long Debug.Print "Start V.3: " & Now With Tabelle1 .Range("C:C").Clear lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row Set ObjDict = CreateObject("Scripting.Dictionary") vardat = Tabelle1.Range("A1:A" & lngZeileMax).Value2 For lngZeile = 1 To UBound(vardat, 1) If vardat(lngZeile, 1) <> "" Then ObjDict(vardat(lngZeile, 1)) = Empty End If Next lngZeile vardat = WorksheetFunction.Transpose(ObjDict.keys()) .Range("C1").Resize(UBound(vardat, 1)).Value = vardat .Range("C:C").Sort key1:=.Range("C1"), order1:=xlAscending, Header:=xlNo End With Debug.Print "Ende V.3: " & Now & vbLf End Sub VG Bernd
@paul-peterpan69432 ай бұрын
@@vba-kracherheld-office Danke, Bernd! Das hat gefluppt. Prima!
@skyte613 ай бұрын
Wie kann man die beiden Tabellen "Rohdaten" und "Bestand" in zwei Fenstern anzeigen lassen?
@vba-kracherheld-office3 ай бұрын
Menü "Ansicht" - "Neues Fenster," dann Fenster so hinziehen, wie Du es brauchst. Mit der Tastenkombination "Windows-Fenster" + Pfeil nach links oder rechts kannst Du auch die Fenster "automatisch" anordnen. Für mich ist das super wichtig, damit ich sehe, was auf den Tabellen passiert, wenn ich im Einzelschrittmodus mit der Taste F8 Zeile für Zeile durch das Makro durchgehe.
@skyte613 ай бұрын
@@vba-kracherheld-office Dabei gehen alle anderen Fixierungen verloren....😒
@jur4eg13 ай бұрын
Hallo. Ein sehr tolles Video, vielen Dank dafür. Ich habe eine Frage dazu. Ich habe eine intelligente Tabelle mit 26 Spalten und aktuell 720 Zeilen. Ich möchte die LV so befühlen, dass ich nur bestimmte spalten sehen kann. Z.B. Spalten 1,2,4,6,7,8,9,12,19,20,21,22,24 und 25 sollen sichtbar sein und der Rest ist für die LV unwichtig. Dazu sind die Breiten der einzelne Spalten unterschiedlich. Wie kann man das organisieren?
@vba-kracherheld-office3 ай бұрын
sowas in der Art? Sub SpaltenAnzeigenAusblenden() Dim wksTab As Worksheet Dim VarSpalten As Variant Dim i As Integer ' Arbeitsblatt mit der Tabelle festlegen Set wksTab = Tabelle1 ' Array mit den Nummern der sichtbaren Spalten festlegen VarSpalten = Array(1, 2, 4, 6, 7, 8, 9, 12, 19, 20, 21, 22, 24, 25) wksTab.Columns.Hidden = True ' Sichtbare Spalten einblenden For i = LBound(VarSpalten) To UBound(VarSpalten) wksTab.Columns(VarSpalten(i)).Hidden = False Next i End Sub
@pawelpopolski90043 ай бұрын
Könnte man anstelle von Option Base 1 den Startwert des Arrays nit besser mit LBound(Arr) ermitteln? Dann ist es doch egal, ob das Array 0 oder 1 -basiert ist. Oder irre ich hier?
@vba-kracherheld-office3 ай бұрын
Ja, das geht auch. Ich wollte eben dass beide Arrays gleich dimensioniert sind. Danke aber für Deine Anmerkung.
@aliabbas45893 ай бұрын
Hallo Bernd, die Qualität des Videos ist sehr gering (360), man kann sie auch nicht erhöhen. Kannst du da eine qualitativ bessere hochladen? Leider kann man nichts erkennen, nur deine Stimme kommt gut rüber 🙂
@vba-kracherheld-office3 ай бұрын
Hallo. Das ist glaube ich nur in der ersten halben Stunde so. Bitte probiere das in einer Stunde nocheinmal. Vg Bernd
@user-op4yd9zq4k3 ай бұрын
Hallo. Ich hatte diese Datei geladen. Warum erscheint denn das Untermenü immer noch, wenn ich eine komplett neue Arbeitsmappe ohne Makros erstelle? Vielen Dank für die Hilfe. Gruß, Torsten
@vba-kracherheld-office3 ай бұрын
applocation.Commandbars("cells').reset noch ein Sieb
@KjeldSeegert3 ай бұрын
Hallo Bernd, erstmal vielen Dank für das Video. Gibt es auch eine Möglichkeit mit einem Datenfeld zu arbeiten? In meinem Beispiel habe ich ungefähr 1000 Produkte. Dazu habe ich ungefähr 13 Reiter die ich durchlaufen und in das Zielblatt übertragen müsste . Vg Kjeld
@vba-kracherheld-office3 ай бұрын
Hi Kjeld, das klingt spannend. Kannst Du mir dazu einmal eine Demodatei zukommen lassen?
@KjeldSeegert3 ай бұрын
Hallo Bernd, gerne ! Ich würde diese dann auf deine an deine Firmeneigene Email schicken. Vg Kjeld
@vba-kracherheld-office3 ай бұрын
@@KjeldSeegert Du hast Post. Habe das ganz nett hinbekommen
@KjeldSeegert3 ай бұрын
Hey Bernd super Video vielen Dank dafür.
@dieterprall41783 ай бұрын
Super Erklärvideo. Ich habe folgendes Problem. Nachdem ich Daten über die Userform die Tabelle schreibe, aktuallisiere ich die Listview. Dabei entsteht ein Fehler mit den Schlüssel. Wie kann ich die Schlüssel dazu rücksetzten. Wenn ich den einfachen Weg mit on error resume next gehe, entstehen weitere Überschriften..... danke für deine Hilfe
@sebastiantorwegge63384 ай бұрын
Hallo Bernd, kann man in einem Listview-Element Zeilen/Einträge löschen bzw. hinzufügen ?
@jackjacobus56214 ай бұрын
Danke für dieses und die anderen tollen Videos, Herr Held. Wie verhält es sich, wenn man die Daten im Worksheet 'Wichtig' über REFRESH aktualisiert? Würden dann alle Einträge von Spalte C und D in der Dokumentation mit erfasst werden? Im Prinzip suche ich nach einer Lösung, wo - nur - die manuellen Eingaben erfasst werden. Alle manuellen Änderungen einer Zeile sollen dann in einer Spalte namens Flag mit einer 1 gekennzeichnet werden. Wenn keine 1 als Flag drin steht, dann gab es auch keine Änderung in der Zeile. Im Anschluss sollen dann alle Zeilen mit 1 über ein Makro in eine Datenbank hochgeladen werden. Die dann mittels REFRESH von der Datenbank nach Excel wieder runtergeladen werden. Meine Annahme ist, dass mit dem REFRESH auch alle Zeilen im Worksheet Dokumentation dokumentiert werden. Damit könnte ich Ihre geniale Idee für meine Zwecke nicht umsetzen. Außer, Sie wüsten noch einen anderen Lösungsansatz... 🙂
@vba-kracherheld-office4 ай бұрын
Hi, also wenn Du vor dem Refresh die Ereignissteuerung lahm legst, dann wird nichts dokumentiert. Application.EnableEvents=False dann Dein Refresh und dann wieder einschalten. Application.EnableEvents=True
@thomashalberstadt19365 ай бұрын
In der 64 Bit Version gibt es ja kein Listview mehr, welche alternativen werden empfohlen?
@vba-kracherheld-office5 ай бұрын
Da fällt mir keine ein. Ich arbeite mit Wind 64 Bit und Office 32 Bit. Das tickt
@detlefwinkler29165 ай бұрын
Wann kann ich besagte Beispieldatei in den VBA-Tanker laden. Vielen Dank und liebe Grüße Detlef
@vba-kracherheld-office5 ай бұрын
Hi Detlef, ich bin mit dem VBA-Tanker Update immer eine paar Tage später dran. Ich lade Dir das Beispiel auf meinen GoogleDrive. drive.google.com/drive/folders/1jkDyfovJ1u__vIYpL0_H1u1EhErUFrIU?usp=drive_link LG Bernd
@detlefwinkler29165 ай бұрын
@@vba-kracherheld-office Vielen Dank Bernd
@jorgmuller31005 ай бұрын
Top. Wie immer, kurz, knackig und elegant. Vielen Dank. Wenn jetzt noch auf diese Art ein bestimmtes Mailkonto ausgewählt werden könnte. Das wäre das Sahnehäubchen für mich gewesen.
@vba-kracherheld-office5 ай бұрын
Hi, hier habe ich das beschrieben: kzbin.info/www/bejne/kKWboqN-fLeBapI
@jorgmuller31005 ай бұрын
@@vba-kracherheld-office Oh ich Dussl, als das Video rausgekommen ist habe ich mir noch gedacht das hört sich genau nach dem an was ich suche aber dann wohl sofort wieder vergessen und nie angeschaut. Passt genau. Vielen Dank.
@theogerber17475 ай бұрын
Hier wird leider gar keine Datei abgespeichert
@theogerber17475 ай бұрын
Schade hab es gerade getestet..bei mir funktioniert es nicht.. Kann dir ja mal per Mail den Link und dir File id senden
@theogerber17475 ай бұрын
So der Download hat mittlerweile geklappt.. aber nur wenn ich in der strURL direkt den Freigabe Link einfüge
@theogerber17475 ай бұрын
Was aber dann nicht klappt.. egal ob es eine PDF oder Excel ist die geladene Datei lässt sich nicht öffnen oder ist leer
@theogerber17475 ай бұрын
Und das überschreiben funktioniert auch nicht.. da steigt das Makro aus
@vba-kracherheld-office5 ай бұрын
Komisch tut bei mir alles ohne Probleme. Hast Du die Version verwendet, die ich beim Download unter dem Video angegeben habe? @@theogerber1747
@theogerber17475 ай бұрын
@@vba-kracherheld-office ja hab ich
@theogerber17475 ай бұрын
Frage 2. Gibt's den selben Weg dann auch umgekehrt. Also das ich zum Beispiel eine pdf die ich exportiert/gespeichert habe dann uber VBA in mein drive laden kann?
@vba-kracherheld-office5 ай бұрын
interessante Idee. Muss ich mir mal ansehen. Wenn es klappt, mache ich ein Video.
@theogerber17475 ай бұрын
Das wäre super.. das ist ein Baustein der mir für mein Vereinsprojekt fehlt
@theogerber17475 ай бұрын
Zwei Fragen dazu. Dievwin http request ist schon im Excel oder muss ich die mir erst laden und installieren?
@vba-kracherheld-office5 ай бұрын
Bei mir war der standardmäßig drin.
@Mko2805 ай бұрын
Hallo, vielen Dank für den genialen Trick mit dem Doppelklick. Ich habe es ausprobiert und es funktioniert am PC mit der Maus ohne Probleme. Um auf Buttons zu verzichten wollte ich das jetzt auch auf meinem Asus Tablet mit Windows 10 ausprobieren, nur geht hier die Doppelklick-Methode leider nur mit der BlueTooth-Maus. Per Touch (Finger), wie ich das eigentlich vorhatte komme ich immer nur in den Modus zur Bearbeitung der Zelle. Gibt es hier einen Kniff, mit dem ich den Doppelklick auch mit dem Finger auf dem Tablet durchführen kann?
@vba-kracherheld-office5 ай бұрын
Ach ja und das Filesystemobject braucht man in diesem Beispiel nicht! War ein Rudiment meiner zahlreichen anderen Versuchen...
@saikarlsass7105 ай бұрын
Ja, sehr schön diese Funktion End(xlUp). Problem dabei ist nur, wenn die Spalte leer ist, kriege ich den Wert 1 zurück, was eigentlich falsch ist. Damit bin ichmal böse auf die Scnauze gefallen.
@ninnick-nick5 ай бұрын
Suuuper erklärt 👌👌👌👍🏾
@spacecookie105 ай бұрын
Wieso erkennt VBA dass es sich bei VarDat um ein Array handelt? Es wurde keine Klammernpaar angegeben…
@vba-kracherheld-office5 ай бұрын
Ein Array ist immer vom Typ Variant
@andreasrudolph73855 ай бұрын
Danke, das hatte ich schon lange gesucht.
@alexandergunther72235 ай бұрын
Vielen Dank für deine super Videos. Wenn ich dran denke wie verbreitet Excel zur Datenauswertung auch in großen Firmen ist, ist gerade vba im Vergleich zu anderen Programmiersprachen sehr wichtig.
@alexandergunther72235 ай бұрын
Ich versuche mich gerade noch daran, die Monate in der Matrix durch konkrete Datum zu ersetzen. Muss ich hier die Variable lngSp umdeklarieren?
@skyte615 ай бұрын
So ähnlich mache ich das auch, wenn mein "altes" Excel die neue Funktion nicht kennt. 👍👍
@ninnick-nick5 ай бұрын
👌👌👌👍🏾 Super - Danke!
@dominik97656 ай бұрын
Hat jemand das Tool und kann es mir zur Verfügung stellen? Bernd Held antwortet auf Mails leider nicht. Grüße 😊
@vba-kracherheld-office6 ай бұрын
stimmt aber nicht. ich beantworte jedes e-Mail. hast Du mir an [email protected] geschrieben? Habe die Datei hochgeladen drive.google.com/drive/folders/13noNXbSkD-ZIzBu4rDEAennvU8TIQ2mr?usp=sharing
@ninnick-nick6 ай бұрын
Super ! 👌👍🏾
@vba-kracherheld-office6 ай бұрын
sorry, ich war verwirrt. Natürlich sind in der Ergebnisliste noch doppelte Werte drin! Es sollten ursprünglich ja nur Werte im Wertebereich zwischen 1 und 10 entfernt werden!
@klausbecker95236 ай бұрын
Hallo Herr Held, vielen Dank für Ihre Lernvideos. Gibt es eine Möglichkeit mit VBA eine Datei zu schließen die in einer anderen Instanz geöffnet wurde. Beispielsweise ein SAP Download. Besten Dank vorab und viele Grüße.
@vba-kracherheld-office6 ай бұрын
Hallo Herr Becker, das kann ich mangels SAP-Installation nicht so recht testen. Man müsste schauen, was im Fenstertitel der Excel-Anwendung steht und dann mittels API versuchen, den zu finden. In etwas so: Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _ ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" ( _ ByVal hWnd As LongPtr, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As LongPtr Const WM_CLOSE As Long = &H10 Sub CloseFileInExternalExcelInstance(ByVal windowTitle As String) Dim hWnd As LongPtr ' Find the window handle of the external Excel instance based on its window title hWnd = FindWindow("XLMAIN", windowTitle) If hWnd <> 0 Then ' Send the WM_CLOSE message to the window handle to close the file SendMessage hWnd, WM_CLOSE, 0, ByVal 0 Else MsgBox "External Excel instance not found.", vbExclamation End If End Sub Sub Aufruf() Dim externalExcelWindowTitle As String externalExcelWindowTitle = "Mappe1.xlsx - Excel" CloseFileInExternalExcelInstance externalExcelWindowTitle End Sub
@danielaemisegger7646 ай бұрын
Das Befüllen des Arrays beim Start der Userform würde ich anders lösen. Und zwar mit "Vardat = objLST.DataBodyRange.Value ". Dadurch würde ich mir das Dimensionieren des Arrays, und die Schleife sparen. Die Spaltenanzahl der Listbox kann dann mit "Me.Listbox1.ColumnCount = Ubound(Vardat,2)" festgelgt werden.
@vba-kracherheld-office6 ай бұрын
sehr gut, danke
@chrisk.29576 ай бұрын
Lieber Bernd, gutes, nützliches Video!!! Danke
@windimbart28746 ай бұрын
Hallo und danke für die lehrreichen Videos. Mich würde interessieren, ob man mit dieser Methode einzelne Datensätze aktualisieren kann. Die Daten sollen in einer zentralen Excel-Datei liegen, worauf mehrere User per "Client" zugreifen können, um einzelne Datensätze über eine Userform zu bearbeiten. Anschließend soll der Datensatz aktualisiert in die zentrale Excel-Datei zurückgeschrieben werden.
@vba-kracherheld-office6 ай бұрын
Hallo, ja dazu habe ich gerade ein Beispiel programmiert, dass ich in ca. einer Woche als Video mache. Wenn Du vorab schon mal reinschauen willst, dann schick mir kurz eine e-Mail an [email protected]
@windimbart28746 ай бұрын
@@vba-kracherheld-office da komme ich gerne drauf zurück. Email kommt
@ninnick-nick6 ай бұрын
👌👍🏾 Danke !
@chrisk.29576 ай бұрын
Sehr schön, Bernd!!! Danke
@vba-kracherheld-office6 ай бұрын
Danke Chris
@RueTheDuck6 ай бұрын
Vielen lieben Dank dafür! 1. Ist mir gerade aufgefallen: Im Kommentar des ersten Makros heißt es abweichend zur Beschreibung des Makros und dem im Video Gesagtem, "die letzte, belegte Zeile in Spalte A ermitteln". Spalte A ist aber leer, und bezieht sich auch nicht auf unseren Datenbereich. UND tatsächlich wird dann ja auch in Spalte C geguckt. War ein Test, ob wir auch wirklich aufpassen, richtig? :D 2. Du schreibst zwar, das lngzeilemax wichtig wäre und ich stimme Dir auch zu, aber ich sehe nicht, wo Du dann damit weiter arbeitest...
@vba-kracherheld-office6 ай бұрын
Super aufgepasst! Ein Fehler von mir.. danke für den Hinweis
@RueTheDuck6 ай бұрын
@vba-kracherheld-office Wow! Wie schnell bist du denn? Hammer! Hast Du auch noch etwas zu meinem nachgetragenen 2. Part? Und noch n Gedicht! Wichtig fände ich noch den Hinweis, dass man in den VBA-Formeln Semikola durch Kommata ersetzen muss. Hab ich beim ersten Mal Stunden nach diesem Fehler gesucht? Oh ja! :D
@vba-kracherheld-office6 ай бұрын
oh ja, war Sonntag (-;. Das sollte natürlich in die Formel mit rein, danke!@@RueTheDuck Sub FilternUnter365Dynamisch() Dim Vardat As Variant Dim lngZeileMax As Long With tbl_Filter 'Zielbereich leeren und Format-Technisch vorbereiten .Range("I:J").ClearContents .Range("I:I").NumberFormat = "DD.MM.YYYY" 'die letzte, belegte Zeile in Spalte A ermitteln lngZeileMax = .Cells(.Rows.Count, 3).End(xlUp).Row 'Filterung simulieren und im Arbeitsspeicher ablegen Vardat = .Evaluate("=FILTER(B2:C" & lngZeileMax & ",C2:C" & lngZeileMax & "=H2)") 'Ausgabe des Arrays, wenn er gefüllt ist If Not IsError(Vardat) Then .Range("I2").Resize(UBound(Vardat, 1), _ UBound(Vardat, 2)).Value = Vardat Else .Range("I2").Value = "Katastrophe!" End If End With End Sub
@RueTheDuck6 ай бұрын
@@vba-kracherheld-office Jetzt ist es rund. :)
@vba-kracherheld-office6 ай бұрын
Danke für Deine Aufmerksamkeit@@RueTheDuck
@Speedway16046 ай бұрын
Guten Tag. Tolles Video. Gibt es auch eine Möglichkeit eine progressbar ohne forschleife anzuwenden? Eventuell pro Codezeile ein Schritt weiter? Lg Jannik
@vba-kracherheld-office6 ай бұрын
Hallo Jannik, ja, das geht rein theoretisch. Dann kannst Du den Fortschrittsbalken aber nur nach "Gefühl" füttern. ich bastle mal kurz was.. Moment..
@vba-kracherheld-office6 ай бұрын
so was in der Art: Private Sub UserForm_Activate() Me.ProgressBar1.Max = 100 Call Import Me.ProgressBar1.Value = 10 Call Konverierung Me.ProgressBar1.Value = 30 Call Verarbeitung Me.ProgressBar1.Value = 40 Call Ausgabe Me.ProgressBar1.Value = 80 Call Abschluss Me.ProgressBar1.Value = 95 Unload Me End Sub Hinter den calls wären dann die Prozeduren. Das Beispiel ist für den Einsatz des Standard-Fortschrittbalken von Microsoft.
@iljasterner52756 ай бұрын
Tolles Video und gut erklärt. Passt auch alles soweit, wenn man Outlook verwendet. Wie müsste ich den code umschreiben, damit ich das E-Mail mit Thunderbird erstellen kann?
@vba-kracherheld-office6 ай бұрын
Dazu habe ich folgendes im Internet gefunden: stackoverflow.com/questions/39521872/how-can-i-automatically-send-email-from-thunderbird-with-excel-vba
@iljasterner52756 ай бұрын
Danke für die schnelle Antwort. Ich werde es demnächst ausprobieren.