Excel: Wie gestalte ich dieses Makro schneller und effektiver und sorge dafür, dass es bei Neustart nur neue Werte erkennt?

Wie kann ich dieses Makro schneller und effektiver machen und wie bekomme ich es hin, dass es beim Neustart nicht schon wieder die Werte erkennt, die schon einmal  dran waren? Sodass die 50 nach dem ersten Mal Abspielen des Sounds ignoriert wird.

Code:

Sub PlaySound()
  Dim ws As Worksheet
  Dim rng As Range
  Dim cell As Range
  Dim goals As Long
  Dim soundFile As String
  Dim thresholds As Variant
  Dim i As Integer
  Set ws = ThisWorkbook.Worksheets("Spielplan")
  Set rng = ws.Range("O1:O" & ws.Cells(ws.Rows.Count, "O").End(xlUp).row)
  soundFile = "Sound_pfad.mp3"
  'Array of threshold values
  thresholds = Array(50, 100, 150, 200, 250, 300, 350, 400, 450, 500,550,600,650,700,750,800,850,900,950,1000)
  Do While True 'Endlosschleife hinzugefügt
    For Each cell In rng
      If IsNumeric(cell.Value) Then
        goals = goals + cell.Value
        'Check if goals is equal to any of the threshold values
        For i = LBound(thresholds) To UBound(thresholds)
          If goals = thresholds(i) Then
            Application.ScreenUpdating = False
            Application.EnableEvents = False
            ActiveSheet.OLEObjects.Add(Filename:=soundFile, Link:=False, DisplayAsIcon:=False).Select
            Selection.Verb Verb:=xlPrimary
            Selection.Delete
            Application.ScreenUpdating = True
            Application.EnableEvents = True
          End If
        Next i
      End If
    Next cell
    'Verzögerung hinzugefügt, um die CPU-Auslastung zu reduzieren
    Application.Wait (Now + TimeValue("0:05:00"))
  Loop
End Sub
Bild zum Beitrag
Microsoft Excel, VBA, automatisierung
Excel-Code für Mehrfachauswahl in Dropdown-Listen?

Hallo zusammen,

Ich versuche gerade ein Excel-Dokument zu erstellen, bei dem eine Mehrfachauswahl aus Dropdown-Listen möglich ist. Das heißt aus einer Liste sollte es möglich sein mehrere Werte anzuwählen. Das habe ich auch mit dem untenstehenden VisualBasic-Code gemeistert. Allerdings habe ich erstens das Problem, dass auch eine Mehrfachauswahl des immer gleichen Wertes möglich ist. Theoretisch könnte also in einer Zelle x-mal derselbe Werte auftauchen. Dies soll natürlich nicht möglich sein. Bei Doppelauswahl desselben Wertes soll dieser aus der Zelle wieder verschwinden.

Mein zweites Problem ist, dass ich bislang nur 2 zwei Dropdown-Listen mit Mehrfachauswahl eingefügt bekomme. Sobald ich eine dritte Spalte versuche zu implementieren, bekomme ich eine Fehlermeldung für meinen Code.

Dadurch, dass ich mich mit dem Ganzen nicht so wirklich auskenne, wäre es sehr nett, wenn mir jemand helfen könnte.

Danke!

 

Bisheriger Code:

 

Private Sub Worksheet_Change(ByVal Target As Range)

** Mehrfachauswahl über DropDown-Liste

'** Einfügen im Code-Container des betreffenden Arbeitsblattes

 

'** Dimensionierung der Variablen

Dim rngDV As Range

Dim wert_old As String

Dim wertnew As String

 

'** Errorhandling

On Error GoTo Errorhandling

 

'** Mehrfachauswahl im definierten Bereich "Abteilungen" und "Themen" (Bsp. J2:J2000, I2:I2000) durchführen

If Not Application.Intersect(Target, Range("J2:J2000", "I2:I2000")) Is Nothing Then

 

 '**Range definieren

 Set rngDV = Target.SpecialCells(xlCellTypeAllValidation)

 If rngDV Is Nothing Then GoTo Errorhandling

  

 '** Prüfen, ob eine gültige Zelle ausgewählt wurde und Werte eintragen

 If Not Application.Intersect(Target, rngDV) Is Nothing Then

   Application.EnableEvents = False

   wertnew = Target.Value

   Application.Undo

   wertold = Target.Value

   Target.Value = wertnew

   If wertold <> "" Then

     If wertnew <> "" Then

       Target.Value = wertold & ", " & wertnew

     End If

   End If

 End If

 Application.EnableEvents = True

End If

 

Errorhandling:

Application.EnableEvents = True

End Sub

Visual Basic, Microsoft Excel, VBA, Dropdownliste
mehrere Dokumente und Dateien in einer Datenbank zusammen. Per Access oder andere Lösung?

Hallo zusammen,

wir stehen derzeit vor einer kleinen Umstrukturierung und sind uns nicht sicher in welcher Art und Weise wir es am Besten machen wollen.

Zur Situation. Aktuell haben wir viele Leute die für ein gemeinsames Projekt verschiedenste Dateien führen. Grundrisse, Excel-Daten, PDF´s und noch mehreres anderes. Leider wurde dies nie wirklich zusammengeführt, sondern man teilweise 4 verschiedene Bearbeitungsstände oder muss bei einer Änderung mehrere Dateien parallel bearbeiten und ändern. (Bsp: MAC-Adresse ändert sich: muss man in mehreren Dateien nachbearbeiten, damit es aktuell bleibt.) Das ist das Hauptproblem derzeit, welches geändert werden soll. Der erste Gedanke ging in die Richtung Access Datenbank. Hier sehe ich verschiedene Problematiken, bzw. habe verschiedene Fragen die vielleicht jemand Beantworten kann:

  1. Es wäre notwendig verschiedene Ansichten/ Listen zu generieren: Bsp. alle Daten mit einem Bestimmten Atribut X sollen in einer Liste ausgegeben werden.
  2. Ist es möglich einen Dateipfad zu verlinken?: Nach dem Motto ich hinterlege in einer Ordnerstruktur Grundrisse und kann mir diese in Access anzeigen lassen oder aufrufen lassen. Als Link zum Ordner zum Beispiel?
  3. Ist es möglich (Stichpunkt Grafiken und allgemeine Übersichtlichkeit verschiedener Gewerke) eine grafische Abbildung einzubringen und diese mit Links zu einzelnen Unterdatenbanken zu versehen?

Soweit erstmal ein sehr grober Überblick zu unserer Thematik. Es sind sehr viele Daten die wir einpflegen würde und die auch ineinander Greifen.

Ich bin mir unsicher, ob Access wirklich die perfekte Lösung ist?

Habt ihr damit Erfahrungen und evtl. andere Lösungsansätze? Oder würdet ihr doch Access empfehlen, weil ich einige Funktionen vielleicht nicht kenne?

Vielen Dank und liebe Grüße

Williwasi

Microsoft, Microsoft Excel, IT, Microsoft Office, Access, VBA, Datenbank, Informatik, Informationstechnik, Datenbanksystem
Excel VBA eine definierte Shape bewegen?

Hallo Zusammen,

Ich habe in einem File mit zwei Blättern (Genehmigung und Planung) einen Balken (benannt "Datumsbalken"). Dieser ist jeweils auf dem heutigen Tag fixiert.

Jetzt will ich seine Verschiebung anhand des heutigen Datums automatisieren. Ich bringe jedoch das Makro nicht zum laufen. Was ist mein Fehler?

Sub BalkenSchieben3()
 
    Dim Today As Variant
    Dim Last As Variant
    Dim TodaySheet As Variant
    Dim Difference As Variant
    Dim Form As Shape
 
    Set Form = Sheets("Planung").Shapes.Range("Datumsbalken") '(Array("Datumsbalken")) soll die Shape "Datumsbalken" suchen
    Set Today = Date 'Setzt das heutige Datum
    Set Difference = Sheets("Genehmigung").Range("AO3") 'Setzt den Unterschied zwischen letzter Bearbeitung und Heute
    Set TodaySheet = Sheets("Genehmigung").Range("AK3")
    
        If Difference > 0 Then
            For Difference = 1 To Difference 'Die Anzahl Tagesunterschiede (Difference) entscheidet, wie viele Male der Balken verschoben werden soll.
                With Sheets("Planung")
                    Form.Select
                    Selection.ShapeRange.IncrementLeft 21
                End With
                
            Next
            
            Else
        End If
    
    Set Sheets("Genehmigung").Range("AK3") = Today 'Das heutige Datum wird in die Zelle abgespeichert
    Set Sheets("Genehmigung").Range("AM3") = TodaySheet 'Das letzte Bearbeitungsdatum (vorheriges "Heute") wird abgespeichert, damit die nächste Difference berechnet werden kann
 
End Sub

Vielen Dank im Voraus!

Microsoft Excel, Microsoft Office, programmieren, VBA, Formel
Microsoft Excel | Diabook. > Neue Überarbeitung/Hilfe (VBA)?

Guten Abend zusammen.

Bevor ich zum offiziellen Thema komme nochmals ein Vorwort auf der Grundlage eines Beitrages der sinnfrei gelöscht wurde.

Vorwort:

Die Frage dient nicht dafür um hier etwas zu verkaufen sondern dazu um mir im Bereich Office/Excel weiterzuhelfen. Das Diabolic Projekt ist ein Privates und von mir als Besitzer und Eigentümer erstelltes Projekt. Ebenfalls habe ich die AGB von gutefrage.net zur Kenntnis genommen und stimme diesen hiermit Schriftlich zu.

Der letzte Beitrag wurde wegen verdacht auf Verkauf entfernt obwohl ich das HIER und im anderen Beitrag deutlich erwähnt habe. Ich möchte hier nichts Verkaufen.

| Um was handelt es sich nun?

Ich bin selber Diabetiker Typ 1 und wollte ein erstmaliges Projekt erstellen um mein Diabetes auch am Computer (in Excel) Managen zu können. Dazu habe ich in der Vergangenheit auch schon paar Fragen gestellt.

Nun habe ich eine Zeit lang darüber Nachgedacht und bin zum Entschluss gekommen alles "Einheitlich" statt einzeln zu machen. Diabook, Insulinrechner, Nährwertrechner waren noch bis vor ein paar Tagen einzelne Programme in Microsoft Excel Dokument Mappen. Ich habe überlegt und mir viel dann etwas auf. Aufgrund dessen dass ich die Dinge mache um das Leben mit Diabetes einfacher zu machen dachte ich mir: Okay. Dann werde ich doch alles in einer Mappe verarbeiten da die Einzelnen Mappen immer aufwendig sind.

Ich Persönlich verwende schon lange Zeit eine App die vieles miteinander vereint. So soll es auch mit dem was ich vor habe werden.

| Weiteres:

Ich möchte das alles im Prinzip erneuern. Ich habe leider nur wenig bis minimale Kenntnisse im Bereich "Microsoft Excel" und habe schon paar Ideen die ich nur zum Teil umsetzen kann weil mir dafür das Wissen & Erfahrung fehlt und ich deshalb diesen Beitrag erstelle um danach zu Fragen.

| Vorstellung & Idee/n:

Meine Ideen und Vorstellungen in diesem Projekt sind naja irgendwie zu Groß weshalb ich bezweifle das es möglich sein wird alles in Excel umsetzten zu können.

Ich habe mich schon bei YouTube umgesehen und kam leider zu keinem Video das mir dass zeigen würde was ich so bräuchte. Ich hätte aber gerne Folgendes:

  • Startseite: Erweiterungen um in der linken Leiste alles ein und zuklappen zu können. Dies ebenfalls beim Nährwertrechner mit mehreren Mappen um dort verschiedene Kategorien für Lebensmittel anzulegen. Auch beim nachkommenden Rezeptrechner um dort ebenfalls Kategorien anlegen zu können.
  • Favoriten: Wichtig beim Nährwert/Rezeptrechner um Lebensmittel oder Rezepte schneller zu finden.
  • Mappen in Mappen: Ich hätte außerdem gerne die Funktion das ich zb. in der Mappe Nährwertrechner weitere Mappen erstellen kann un das überall.
  • Nährwertrechner(Suche): Ich hätte außerdem gerne das man oben eine Leiste hat um alle Lebensmittel und Rezepte zu finden. Diese sollen dann in einer Liste dort oder dann im Nährwertrechner angezeigt werden. Auch ins Tagebuch übertragbar sein.

Es ist zu viel. Bräuchte man dafür VBA oder geht das ohne? Danke im Voraus! :)

Bild zum Beitrag
PC, Computer, Software, Windows, Microsoft, Office, Visual Basic, Microsoft Excel, Technik, IT, VBA
UserForm mit Prozentwerten in TextBox - Dilemma beim speichern in Zelle?

Liebe Excel-Fans,

ich habe ein Problem mit dem Thema Prozentangaben und versuche es so kurz wie möglich zu erklären:

Eine UserForm mit Feldern (TextBoxen) zum Bearbeiten von Werten aus einer Tabelle.
In der Excel-Tabelle sollen Prozentwerte hinterlegt und in die UserForm entsprechend ausgelesen werden.

  • Beim erstmaligen Hinterlegen kann man einfach TextBox1.Value / 100 verwenden. Klar.
  • Beim Einlesen des Wertes in die TextBox1 der UserForm zum Bearbeiten nehme ich: UserForm.TextBox1 = Format(UserForm.TextBox1, "#,##0.00 %") damit beim Lesen der Wert auch schön als Prozentwert angezeigt wird

Wenn ich nun speichere, ohne die Prozentwerte zu verändern, da ich diese einfach nicht verändern möchte, schmeißt mir Excel einen Laufzeitfehler 13, Typen unverträglich und markiert den Abschnitt im Code (oben Punkt 1) wo ich durch 100 dividiere.

Ist ja irgendwie verständlich, da er versucht den Wert aus der TextBox "1,99 %" zu dividieren, da nun ein "%" drin steht ... bzw. möchte ich in dem Fall auch gar nicht, dass durch 100 dividiert wird, da der Wert ja stimmt und nicht nochmal dividiert werden soll.

Habe irgendwie einen Denkfehler - aber ein Formular was "Bearbeiten" soll, muss die Werte richtig verändern können oder aber auch erstmals anlegen können. Und hier scheint es mit den Prozent-Werten ein Thema zu geben.

Ich danke für eure Ideen und Hilfsansätze!

Grüße
Sebastian

VBA, Excel-Formel
Excel VBA Datenüberprüfung beim Einfügen (Strg+V) von Text in Zelle aufrecht erhalten?

Hallo zusammen,

ich greife gerade im Rahmen eines Projekts per Datenüberprüfung auf eine Auswahl von 6000+ Zellen zu und möchte falls ein Teil, das nicht zu den 6000 gehört eine Fehlermeldung ausgeben. Nun habe ich die Problematik, dass die Zelle mit der Datenüberprüfung eine Eingabezelle sein wird, d. h. der Benutzer wird Werte aus anderen XML Dokumenten hereinkopieren. Dies Formatiert die Zelle aber Standardmäßig um und entfernt die eingerichtete Datenüberprüfung.

Gibt es hier eine einfache Lösung dies zu verhindern? Ich habe es auch schon mit Excel VBA versucht (s. Quelltext) aber hier konnte ich nur die Datenüberprüfung nachdem sie entfernt wurde wieder hinzufügen. Das Problem hierbei ist, dass dem User keine Fehlermeldung angezeigt wird nachdem er den Text in die Zelle kopiert hat.

Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$2" Then

With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertWarning, Operator _
        :=xlBetween, Formula1:="='Zuord. Teil-Kart. Datenquelle '!$A$1:$A$6168"
        .IgnoreBlank = True
        .InCellDropdown = False
        .InputTitle = ""
        .ErrorTitle = "Teil nicht verfügbar"
        .InputMessage = ""
        .ErrorMessage = _
        "Teil nicht verfügbar, da:" & Chr(10) & "a) Teil existiert nicht" & Chr(10) & "b) Teil existiert, wird aber nicht in Kartonage verpackt --> Manuelle Frachtberechnung nötig" & Chr(10) & "c) Teil ist neu --> Rückmeldung an *** / ***"
        .ShowInput = True
        .ShowError = True
    End With
End If
Microsoft Excel, VBA
Excel VBA: Schaltfläche die je nach 1., 2., 3. Klick verschiedene Funktionen ausführt?

Hallo zusammen,

ich suche eine Lösung um eine Schaltfläche mit folgender Funktion in meinen Code zu integrieren.

  1. Klick auf schaltfläche --> Mache X
  2. Klick auf Schaltfläche --> Mache Y

wie geht das am einfachsten?

_________________________________________________________

Anbei mein Code:

Sub NeuePosHinzu()

'

' NeuePosHinzu Makro

'

'1. Klick

   Range("A1:F4").Select

   Selection.Copy

   Range("B8").Select

   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

       :=False, Transpose:=False

' Soll beim 2. Klick auf den Button ausgelöst werden

   Range("A1:F4").Select

   Selection.Copy

   Range("B14").Select

   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

       :=False, Transpose:=False

  

' Soll beim 3. Klick auf den Button ausgelöst werden

   Range("A1:F4").Select

   Selection.Copy

   Range("B20").Select

   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

       :=False, Transpose:=False

   Range("A14:G17").Select

   Application.CutCopyMode = False

   Selection.Copy

   Range("A20:G23").Select

   Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _

       SkipBlanks:=False, Transpose:=False

   Application.CutCopyMode = False

   Range("A20").Select

   ActiveCell.FormulaR1C1 = "Pos. 3"

'Soll beim 4. Klick auf den Button ausgelöst werden

   Range("A1:F4").Select

   Selection.Copy

   Range("B26").Select

   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

       :=False, Transpose:=False

   Range("A20:G23").Select

   Application.CutCopyMode = False

   Selection.Copy

   Range("A26:G29").Select

   Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _

       SkipBlanks:=False, Transpose:=False

   Application.CutCopyMode = False

   Range("A26").Select

   ActiveCell.FormulaR1C1 = "Pos. 4"

   Range("I21").Select

End Sub

Microsoft Excel, VBA

Meistgelesene Beiträge zum Thema VBA