Excel-Makro-Befehl für das "Ersetzen"-Popup

Dieses Thema Excel-Makro-Befehl für das "Ersetzen"-Popup im Forum "Microsoft Office Suite" wurde erstellt von klexy, 26. Mai 2004.

Thema: Excel-Makro-Befehl für das "Ersetzen"-Popup Ich möchte mittels eines Makros das Popup aufrufen, in dem man suchen und ersetzen kann (Strg+H). Dies soll im...

  1. Ich möchte mittels eines Makros das Popup aufrufen, in dem man suchen und ersetzen kann (Strg+H).
    Dies soll im Suchen nach-Feld schon mit einem zu suchenden Begriff gefüllt sein. Das Ersetzen durch-Feld soll erst vom Anwender befüllt werden.
    Geht das?

    Konkret:
    In der Datei sind 31 Tabellenblätter (für jeden Tag des Monats eines). Darin sind Formeln wie
    =WERT('C:\Blabla\[tagesreport_xxxxx.xls]Tabelle1'!C6)
    tagesreport_xxxxx.xls ist ein Dummy-Verweis auf eine leere Datei.
    Am 26.05.04 soll die Formel im Tabellenblatt 26 auf folgendes geändert werden:
    =WERT('C:\Blabla\[tagesreport_26.05.04.xls]Tabelle1'!C6)
    Da durch das Makro noch andere Sachen erledigt werden, soll zu einem bestimmten Zeitpunkt dieses Popup erscheinen, das oben immer xxxxx haben soll, unten aber jeden Tag ein anderes Datum.
     
  2. Hallo klexy,

    hab dir ein Makro-Beispiel zusammengestellt, welches die gewollte Funktion erfüllen sollte.

    Es öffnet keinen Ersetzen-Dialog, sondern ...

    Sub xxxxx_gegen_Tagesdatum_InFormelnErsetzen()
    ' 0. Abfrage, ob xxxxx in Formeln gegen DD.MM.YY erstzt werden soll
    ' Nein -> Abbruch
    ' 1. Blatt mit dem Tagesnamen öffen
    ' 1.1 Wenn Blatt nicht vorhanden ist, erfolgt eine entsprechende Meldung
    ' 2. xxxxx in Formeln diese Tabellenblattes durch DD.MM.YY ersetzen

    Dieses Makro kannst Du beim Öffnen der Arbeitsmappe aufrufen.
    Dann wird automatisch auf dem Tagesblatt das Ersetzen durchgeführt.
    Dazu mußt Du die Kommentarzeichen vor
    'Private Sub Workbook_Open()
    ' Call xxxxx_gegen_Tagesdatum_InFormelnErsetzen
    'End Sub
    entfernen.

    Das Makro soll im Code-Fenster->DieseArbeitsmappe' deiner Arbeitsmappe liegen.

    Beispiel-Datei ist per mail unterwegs.

    Gruß Matjes :)

    Code:
    Option Explicit
    'Private Sub Workbook_Open()
    '  Call xxxxx_gegen_Tagesdatum_InFormelnErsetzen
    'End Sub
    
    Sub xxxxx_gegen_Tagesdatum_InFormelnErsetzen()
    ' _xxxxx auf dem Tagesblatt gegen _TT.MM.YY in Formeln ersetzen
    ' Blattnamen sind zweistellig mit führender 0
    ' Werte sind zulässig von 01 bis 31
    '
    ' 0.  Abfrage, ob _xxxxx in Formeln gegen _DD.MM.YY erstzt werden soll
    '     Nein -> Abbruch
    ' 1.  Blatt mit dem Tagesnamen öffen
    ' 1.1 Wenn Blatt nicht vorhanden ist, erfolgt eine entsprechende Meldung
    ' 3.  xxxxx in Formeln diese Tabellenblattes durch DD.MM.YY ersetzen
    
      Dim ws As Worksheet, zelle As Range, ret As Integer, s_tmp As String
      Dim s_BN_Heute As String, s_Datum_Heute, pos1 As Integer
      Const c_Suchstring = xxxxx
      
     ->Tage zweistellig mit führender 0 für Namen des Tagesblattes
      s_BN_Heute = Format(Now, Dd)->Tage zweistellig mit führender 0
     ->Ersetzenstring DD.MM.YY
      s_Datum_Heute = Format(Now(), Dd.mm.yy)
      
     -> 0.  Abfrage, ob _xxxxx in Formeln gegen _DD.MM.YY erstzt werden soll
     ->     Nein -> Abbruch
      If 6 <> MsgBox(Soll auf Tabellenblatt  & Format(Day(Now()), 00) & _
              vbLf & in den Formeln der Defaultstring-> & c_Suchstring &->  & _
              vbLf & durch das Tagesdatum ersetzt werden ? & _
              vbLf & vbLf & c_Suchstring &  -->  & s_Datum_Heute, _
              vbQuestion + vbDefaultButton1 + vbYesNo) Then Exit Sub
      
     ->1. Blatt des aktuellen Tages öffnen
      On Error GoTo ws_NichtVorhanden
      Set ws = ActiveWorkbook.Worksheets(s_BN_Heute)
      On Error GoTo 0
      ws.Activate
      
     ->2. _xxxxx in Formeln diese Tabellenblattes durch _TT.MM.YY ersetzen
      With ws.UsedRange
        Set zelle = .Find(c_Suchstring, LookIn:=xlFormulas, MatchCase:=True)
          Do While Not zelle Is Nothing
             ->gefundene Formel auslesen
              s_tmp = zelle.Formula
              pos1 = InStr(1, s_tmp, c_Suchstring)
              s_tmp = Left(s_tmp, pos1 - 1) & s_Datum_Heute & _
                      Right(s_tmp, Len(s_tmp) - (pos1 + Len(c_Suchstring) - 1))
     ->Wenn die Formel einen Dateiverweis enthält der durch das Ersetzen
     ->auf eine nicht vorhandene Datei verweist, öffnet sich der Auswahldialog
     ->zur Auswahl eine andere Datei.
     ->!!! Dieser Alarm wird abgeschalten                     !!!
     ->!!! und damit die Änderung ohne Nachfrage durchgeführt !!!
     ->In der Zelle erscheint #BEZUG!, wenn der Verweis ins Leere zeigt
              Application.DisplayAlerts = False
             ->geänderte Formel zuweisen
              zelle.Formula = s_tmp
              Application.DisplayAlerts = False
              Set zelle = .FindNext(zelle)
          Loop
        On Error Resume Next: Set zelle = Nothing: On Error GoTo 0
      End With
      Set ws = Nothing
    Exit Sub
    
    ws_NichtVorhanden:
      MsgBox (Es werden Blattnamen->01' bis->31' erwartet! & _
              vbLf & vbLf & _
              Blatt-> & s_BN_Heute &-> konnte nicht geöffnet werden.)
    End Sub
    
     
  3. Spät aber doch:
    Danke für das Makro.
    Richtig kapiert hab ich es nicht, aber es funktioniert nur am aktuellen Tag. Übers Wochenende macht keiner die Einträge, so daß am Montag 3 Abfragen eingespielt werden müsen, also unterschiedliche Daten eingegeben werden müssen.
    Kann aber auch sein, daß die Daten mal nicht korrekt waren und am Nachmittag neu eingespielt werden müssen - oder so.
    Daher brauch ich nur den Aufruf mit Strg+H und die Befüllung des zu ersetzenden Ausdrucks, damit der neu einzufügened Ausdruck ganz nach Belieben gemacht werden kann.

    Ich lass die Leute jetzt das Strg+H ganz unelegant selbst von Hand machen und hab das eigentliche Makro in eine Schaltfläche davor und eine Schaltfläche danach aufgeteilt. Das können sich auch bei uns die meisten noch merken ;)
     
  4. Hallo klexy,

    hab nochmal gegrübelt, ob ich deiner ursprünglichen Frage näher kommen kann. Dabei ist folgendes herausgekommen:
    Code:
    Public Sub ErsetzenDialogAufrufen()
      Const c_Suchstring = xxxxx
      
     ->Ersetzen-Dialog öffnen (STRG+H)
      ActiveWorkbook.Application.SendKeys (^h)
     ->Feld->Suchen' mit Suchbegriff füllen
      ActiveWorkbook.Application.SendKeys (c_Suchstring)
     ->mit Tab auf Feld->Ersetzen' weiterschalten
      ActiveWorkbook.Application.SendKeys ({TAB})
     ->Feld->Ersetzen' mit aktuellem Datum füllen
      ActiveWorkbook.Application.SendKeys (Format(Now(), Dd.mm.yy))
    End Sub
    
    Gruß Matjes :)
     
  5. Hi klexy,

    noch ein Hinweis zum Suchen und Ersetzen in Formeln:

    Eigentlich ist es Zufall, daß es in den meisten Fällen klappt, da im Dialog->Suchen und Ersetzen' im Gegensatz zum Dialog->Suchen' die Einstellmöglichkeit->In Formeln, In Werten, In Kommentaren' fehlt.

    Die eigentlich von von MS vorgesehene Aufruffunktion (siehe unten) geht für Formeln schief, da ihr der Parameter look_in fehlt. Sie ist deshalb ungeeignet.

    Code:
    Public Sub ErsetzenDialogAufrufen2()
      Const c_Suchstring = xxxxx
      
     ->Dialog ersetzen aufrufen
     ->Aufrufparameter (Stellungsparameter):
     ->find_text, replace_text, look_at, look_by, active_cell, match_case, match_byte
      Application.Dialogs.Item(xlDialogFormulaReplace).Show _
          c_Suchstring, Format(Now(), Dd.mm.yy), , , , True
    End Sub

    Eine Liste aller aufrufbaren eingebauten Dialog ist in der VB-Hilfe unter->Dialogs' zu finden.

    Auf MSN ist es leichter zu finden, beispielsweise für Excel 2000 unter http://msdn.microsoft.com/library/default.asp?url=/library/en-us/off2000/html/xlmscdialogarglists.asp

    Gruß Matjes ;)
     
Die Seite wird geladen...

Excel-Makro-Befehl für das "Ersetzen"-Popup - Ähnliche Themen

Forum Datum
Software für Partition Verwaltung Software: Empfehlungen, Gesuche & Problemlösungen 29. Nov. 2016
windows für kinder sicher machen ? Windows 10 Forum 11. Nov. 2016
Drucker für Gast freigeben Netzwerk 7. Nov. 2016
Welches Programm für mkv unter Windows? Audio, Video und Brennen 23. Aug. 2016
Software für DVD-Kopien on the fly Software: Empfehlungen, Gesuche & Problemlösungen 29. Juli 2016