Пікірлер
@klausf4200
@klausf4200 Ай бұрын
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
@vba-kracherheld-office Ай бұрын
Danke Klaus
@ingostoter5490
@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
@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
@thanht.7897 Ай бұрын
Mega nicer Hack! Danke dir 🎉
@MathiasLeubner
@MathiasLeubner Ай бұрын
Kannst du bitte die Funktion in der Beschreibung speichern, damit diese kopiert werden kann?
@vba-kracherheld-office
@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
@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
@vba-kracherheld-office Ай бұрын
Hi Martin, probier mal: ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ ThisWorkbook.Path & "\Bestand.xlsx" & ";Extended Properties=Excel 8.0;"
@MartinFriedli-jh4dl
@MartinFriedli-jh4dl Ай бұрын
@@vba-kracherheld-office Vielen Dank für die Prompte Antwort! Leider aber kommt immer noch der selbe Fehler...🤔
@vba-kracherheld-office
@vba-kracherheld-office Ай бұрын
@@MartinFriedli-jh4dl ich habe Dir meine Version mal zugemailt. Die tickt bei mir
@sogehts433
@sogehts433 2 ай бұрын
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-office
@vba-kracherheld-office 2 ай бұрын
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
@sogehts433
@sogehts433 2 ай бұрын
Super, vielen Dank. Werde ich testen😊
@sogehts433
@sogehts433 2 ай бұрын
​@@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-office
@vba-kracherheld-office 2 ай бұрын
@@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
@pawelpopolski9004
@pawelpopolski9004 2 ай бұрын
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)
@schnullertroll4173
@schnullertroll4173 2 ай бұрын
Hi, wie kann ich die Fotoansicht vergrößern?
@vba-kracherheld-office
@vba-kracherheld-office 2 ай бұрын
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
@nadirturkan2068
@nadirturkan2068 2 ай бұрын
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-office
@vba-kracherheld-office 2 ай бұрын
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.2957
@chrisk.2957 2 ай бұрын
Danke, Bernd, ich fand es SUPER!
@paul-peterpan6943
@paul-peterpan6943 2 ай бұрын
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-office
@vba-kracherheld-office 2 ай бұрын
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-peterpan6943
@paul-peterpan6943 2 ай бұрын
@@vba-kracherheld-office Danke, Bernd! Das hat gefluppt. Prima!
@skyte61
@skyte61 3 ай бұрын
Wie kann man die beiden Tabellen "Rohdaten" und "Bestand" in zwei Fenstern anzeigen lassen?
@vba-kracherheld-office
@vba-kracherheld-office 3 ай бұрын
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.
@skyte61
@skyte61 3 ай бұрын
@@vba-kracherheld-office Dabei gehen alle anderen Fixierungen verloren....😒
@jur4eg1
@jur4eg1 3 ай бұрын
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-office
@vba-kracherheld-office 3 ай бұрын
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
@pawelpopolski9004
@pawelpopolski9004 3 ай бұрын
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-office
@vba-kracherheld-office 3 ай бұрын
Ja, das geht auch. Ich wollte eben dass beide Arrays gleich dimensioniert sind. Danke aber für Deine Anmerkung.
@aliabbas4589
@aliabbas4589 3 ай бұрын
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-office
@vba-kracherheld-office 3 ай бұрын
Hallo. Das ist glaube ich nur in der ersten halben Stunde so. Bitte probiere das in einer Stunde nocheinmal. Vg Bernd
@user-op4yd9zq4k
@user-op4yd9zq4k 3 ай бұрын
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-office
@vba-kracherheld-office 3 ай бұрын
applocation.Commandbars("cells').reset noch ein Sieb
@KjeldSeegert
@KjeldSeegert 3 ай бұрын
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-office
@vba-kracherheld-office 3 ай бұрын
Hi Kjeld, das klingt spannend. Kannst Du mir dazu einmal eine Demodatei zukommen lassen?
@KjeldSeegert
@KjeldSeegert 3 ай бұрын
Hallo Bernd, gerne ! Ich würde diese dann auf deine an deine Firmeneigene Email schicken. Vg Kjeld
@vba-kracherheld-office
@vba-kracherheld-office 3 ай бұрын
@@KjeldSeegert Du hast Post. Habe das ganz nett hinbekommen
@KjeldSeegert
@KjeldSeegert 3 ай бұрын
Hey Bernd super Video vielen Dank dafür.
@dieterprall4178
@dieterprall4178 3 ай бұрын
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
@sebastiantorwegge6338
@sebastiantorwegge6338 4 ай бұрын
Hallo Bernd, kann man in einem Listview-Element Zeilen/Einträge löschen bzw. hinzufügen ?
@jackjacobus5621
@jackjacobus5621 4 ай бұрын
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-office
@vba-kracherheld-office 4 ай бұрын
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
@thomashalberstadt1936
@thomashalberstadt1936 5 ай бұрын
In der 64 Bit Version gibt es ja kein Listview mehr, welche alternativen werden empfohlen?
@vba-kracherheld-office
@vba-kracherheld-office 5 ай бұрын
Da fällt mir keine ein. Ich arbeite mit Wind 64 Bit und Office 32 Bit. Das tickt
@detlefwinkler2916
@detlefwinkler2916 5 ай бұрын
Wann kann ich besagte Beispieldatei in den VBA-Tanker laden. Vielen Dank und liebe Grüße Detlef
@vba-kracherheld-office
@vba-kracherheld-office 5 ай бұрын
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
@detlefwinkler2916
@detlefwinkler2916 5 ай бұрын
@@vba-kracherheld-office Vielen Dank Bernd
@jorgmuller3100
@jorgmuller3100 5 ай бұрын
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-office
@vba-kracherheld-office 5 ай бұрын
Hi, hier habe ich das beschrieben: kzbin.info/www/bejne/kKWboqN-fLeBapI
@jorgmuller3100
@jorgmuller3100 5 ай бұрын
@@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.
@theogerber1747
@theogerber1747 5 ай бұрын
Hier wird leider gar keine Datei abgespeichert
@theogerber1747
@theogerber1747 5 ай бұрын
Schade hab es gerade getestet..bei mir funktioniert es nicht.. Kann dir ja mal per Mail den Link und dir File id senden
@theogerber1747
@theogerber1747 5 ай бұрын
So der Download hat mittlerweile geklappt.. aber nur wenn ich in der strURL direkt den Freigabe Link einfüge
@theogerber1747
@theogerber1747 5 ай бұрын
Was aber dann nicht klappt.. egal ob es eine PDF oder Excel ist die geladene Datei lässt sich nicht öffnen oder ist leer
@theogerber1747
@theogerber1747 5 ай бұрын
Und das überschreiben funktioniert auch nicht.. da steigt das Makro aus
@vba-kracherheld-office
@vba-kracherheld-office 5 ай бұрын
Komisch tut bei mir alles ohne Probleme. Hast Du die Version verwendet, die ich beim Download unter dem Video angegeben habe? @@theogerber1747
@theogerber1747
@theogerber1747 5 ай бұрын
@@vba-kracherheld-office ja hab ich
@theogerber1747
@theogerber1747 5 ай бұрын
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-office
@vba-kracherheld-office 5 ай бұрын
interessante Idee. Muss ich mir mal ansehen. Wenn es klappt, mache ich ein Video.
@theogerber1747
@theogerber1747 5 ай бұрын
Das wäre super.. das ist ein Baustein der mir für mein Vereinsprojekt fehlt
@theogerber1747
@theogerber1747 5 ай бұрын
Zwei Fragen dazu. Dievwin http request ist schon im Excel oder muss ich die mir erst laden und installieren?
@vba-kracherheld-office
@vba-kracherheld-office 5 ай бұрын
Bei mir war der standardmäßig drin.
@Mko280
@Mko280 5 ай бұрын
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-office
@vba-kracherheld-office 5 ай бұрын
Ach ja und das Filesystemobject braucht man in diesem Beispiel nicht! War ein Rudiment meiner zahlreichen anderen Versuchen...
@saikarlsass710
@saikarlsass710 5 ай бұрын
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-nick
@ninnick-nick 5 ай бұрын
Suuuper erklärt 👌👌👌👍🏾
@spacecookie10
@spacecookie10 5 ай бұрын
Wieso erkennt VBA dass es sich bei VarDat um ein Array handelt? Es wurde keine Klammernpaar angegeben…
@vba-kracherheld-office
@vba-kracherheld-office 5 ай бұрын
Ein Array ist immer vom Typ Variant
@andreasrudolph7385
@andreasrudolph7385 5 ай бұрын
Danke, das hatte ich schon lange gesucht.
@alexandergunther7223
@alexandergunther7223 5 ай бұрын
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.
@alexandergunther7223
@alexandergunther7223 5 ай бұрын
Ich versuche mich gerade noch daran, die Monate in der Matrix durch konkrete Datum zu ersetzen. Muss ich hier die Variable lngSp umdeklarieren?
@skyte61
@skyte61 5 ай бұрын
So ähnlich mache ich das auch, wenn mein "altes" Excel die neue Funktion nicht kennt. 👍👍
@ninnick-nick
@ninnick-nick 5 ай бұрын
👌👌👌👍🏾 Super - Danke!
@dominik9765
@dominik9765 6 ай бұрын
Hat jemand das Tool und kann es mir zur Verfügung stellen? Bernd Held antwortet auf Mails leider nicht. Grüße 😊
@vba-kracherheld-office
@vba-kracherheld-office 6 ай бұрын
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-nick
@ninnick-nick 6 ай бұрын
Super ! 👌👍🏾
@vba-kracherheld-office
@vba-kracherheld-office 6 ай бұрын
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!
@klausbecker9523
@klausbecker9523 6 ай бұрын
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-office
@vba-kracherheld-office 6 ай бұрын
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
@danielaemisegger764
@danielaemisegger764 6 ай бұрын
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-office
@vba-kracherheld-office 6 ай бұрын
sehr gut, danke
@chrisk.2957
@chrisk.2957 6 ай бұрын
Lieber Bernd, gutes, nützliches Video!!! Danke
@windimbart2874
@windimbart2874 6 ай бұрын
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-office
@vba-kracherheld-office 6 ай бұрын
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]
@windimbart2874
@windimbart2874 6 ай бұрын
@@vba-kracherheld-office da komme ich gerne drauf zurück. Email kommt
@ninnick-nick
@ninnick-nick 6 ай бұрын
👌👍🏾 Danke !
@chrisk.2957
@chrisk.2957 6 ай бұрын
Sehr schön, Bernd!!! Danke
@vba-kracherheld-office
@vba-kracherheld-office 6 ай бұрын
Danke Chris
@RueTheDuck
@RueTheDuck 6 ай бұрын
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-office
@vba-kracherheld-office 6 ай бұрын
Super aufgepasst! Ein Fehler von mir.. danke für den Hinweis
@RueTheDuck
@RueTheDuck 6 ай бұрын
@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-office
@vba-kracherheld-office 6 ай бұрын
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
@RueTheDuck
@RueTheDuck 6 ай бұрын
@@vba-kracherheld-office Jetzt ist es rund. :)
@vba-kracherheld-office
@vba-kracherheld-office 6 ай бұрын
Danke für Deine Aufmerksamkeit@@RueTheDuck
@Speedway1604
@Speedway1604 6 ай бұрын
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-office
@vba-kracherheld-office 6 ай бұрын
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-office
@vba-kracherheld-office 6 ай бұрын
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.
@iljasterner5275
@iljasterner5275 6 ай бұрын
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-office
@vba-kracherheld-office 6 ай бұрын
Dazu habe ich folgendes im Internet gefunden: stackoverflow.com/questions/39521872/how-can-i-automatically-send-email-from-thunderbird-with-excel-vba
@iljasterner5275
@iljasterner5275 6 ай бұрын
Danke für die schnelle Antwort. Ich werde es demnächst ausprobieren.