Makro: Wenn Zelle=Wert Dann Meldung

Dieses Thema Makro: Wenn Zelle=Wert Dann Meldung im Forum "Microsoft Office Suite" wurde erstellt von Billy, 31. März 2005.

Thema: Makro: Wenn Zelle=Wert Dann Meldung Guten Tag zusammen Ich müsste für meinen Chef einen kleines Makro Script haben welches reagiert sobald in der Zelle...

  1. Guten Tag zusammen

    Ich müsste für meinen Chef einen kleines Makro Script haben welches reagiert sobald in der Zelle B4 !!!! steht....

    Ich hab das soweit mal mit einer Funktion gemacht =)

    Code:
    =WENN(ZÄHLENWENN(F13:F52;reimann)>=2;!!!!;WENN(ZÄHLENWENN(F13:F52;reimann)=1;X;))
    nun weiss ich allerdings gar nicht wie ich das machen soll, bin sozusagen blutiger anfänger :-[ und weiss auch net wo ich das Makro dann Reinmachen soll, bei Klassenmodul oder so... echt keine ahnung

    Zur Information: es sind insgesammt 12 Tabellen wo dann immer diese Zelle überprüft wird einfach immer mit anderen Namen aber das ist ja nicht so schlimm, die Fehlermeldung bleibt immer !!!!

    Wäre froh wenn ihr mir mal Helfen könntet und mir neben bei villeicht noch ein kleines Tut geben könntet wo ich das ding mal selber lernen kann...

    Danke ^^

    MFG FiRe-X
     
  2. Hallo Fire-X,

    das Makro könnte folgendermaßen aussehen:
    Code:
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
      On Error Resume Next
      For x = 1 To 12
        If Worksheets(x).Range(B4) = !!!! Then
          MsgBox (4 Ausrufezeichen -> Jetzt ist die Hölle los !!!!)
          Exit For
        End If
      Next
    End Sub
    Das Makro muß in die Code-Seite der Arbeitsmappe und überwacht dann die Zelle B4 auf allen 12  Arbeitsblättern. Steht in einer Zelle !!!!, dann sagt das Makro etwas mit Hölle  ;D . Du kannst den Text natürlich auch anpassen.

    Nachteil dieses Makros: Er überwacht alle Änderungen in der Arbeitsmappe. Stehen in einer Zelle B4 !!!!, so gibt er seine Meldung bei jeder x-beliebigen weiteren Änderung wieder aus.
    Direkt läßt sich die Zelle B4 nicht mit demChange-Ereignis überwachen, da sie eine Formel enthält.

    Es besteht aber die aber die Möglichkeit, nach einmaliger Meldung bis zum nächsten Öffnen der Arbeitsmappe keine weitere Meldung mehr auszugeben. Das wäre dann die folgende Version:
    Code:
    Const c_Zelle = B4
    Dim b_Flag As Boolean
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
      On Error Resume Next
      If Not b_Flag Then
        For x = 1 To 12
          If Worksheets(x).Range(B4) = !!!! Then
            MsgBox (4 Ausrufezeichen -> Jetzt ist die Hölle los !!!!)
            b_Flag = True
            Exit For
          End If
        Next
      End If
    End Sub
    So jetzt brauchst Du noch deine Kurzanleitung.

    Einfügen in Diese Arbeitsmappe:

    1) Excel-Datei öffnen
    2) VB-Ediotr öffnen Alt+F11
    Links siehst Du ein Fenster mit der Überschrift Projekt-VBA-Project.
    In diesem Fenster ist die Arbeitsmappe unter dem Namen VBAProject(Dateiname) zu finden.
    3) VBAProject(DieseArbeitsmappe) doppelt klicken
    in der Mitte geht das Code-Fenster DieseArbeitsmappe(Code) auf
    4) den gesamten Code per copy und Paste in dieses Fenster hineinkopieren
    (ggf. den Meldungstext anpassen)
    5) VB-Editor schliessen mit Alt+Q
    6) Excel-Datei speichern

    Gruß Matjes :)
     
  3. oke

    danke erstmals jetzt öhm weiss ich ja net ob der mir das so schluckt weil die Tabellennamen die Monate sind *gg*

    aber das sollte kren Problem ich mache dann immer wider X IF Abfragen stört ja das ding nicht oder?

    Ich hoffe ich kann mich mal wider melden heute ^^, weil mein Cheffe gibt mir sicher noch ne Knack nuss -.-

    MFG FiRe-X
     
  4. Hi Fire-X,

    so wie es jetzt ist, sind dem Makro die Blattnamen egal. Er durchsucht die ersten 12 Blätter.

    Gruß Matjes :)
     
  5. ich habs gesehn ^^

    danke

    mein chef hat volgendes gemacht  ;D löl egal öhm was er aber noch will ist dass man die Formel von B4 irgend wie sichern kann, da wie er meint in unserem Geschäft ein paar User mal so ausversehen auf die Delete taste drücken, kann man das auch mit einem Makro machen?

    und was noch mein Anliegen wäre (sorry dass ich so viel will :-[) zu wissen ob man
    Code:
    If Worksheets(x).Range(B4) = !!!! Then
    auch in
    Code:
    If Worksheets(x).Range(B4:BE6) = !!!! Then
    schreiben könnte um dieses Makro auf die ganze Zeile zu erweitern...

    danke für ne Antwort (>> im namen meines chefs  :))

    FiRe-X
     
  6. Hi Fire-X,

    die Erweiterung sähe dann so aus:
    Code:
    Dim myZelle As Range
    Dim myRange As Range
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
      On Error Resume Next
      For x = 1 To 12
        Set myRange = Worksheets(x).Range(B4:BE6)
        For Each Zelle In myRange
          If Zelle = !!!! Then
            MsgBox (4 Ausrufezeichen -> Jetzt ist die Hölle los !!!!)
            Exit For
          End If
        Next
      Next
    End Sub
    zu Delete und Retten:
    kann man alles machen  ;D  Du mußt nur genau beschreiben was gerettet werden soll.

    Gruß Matjes :)
     
  7. Mein chef ist begeistert ;D

    öhm wie kann ich dann denn Wert der geänderten Zelle ändern welche das !!!! in B4 auslöst? geht das überhaupt?

    Muss man echt was an dieser Formel hier ändern:
    Code:
    =WENN(ZÄHLENWENN(N13:N52;reimann)>=2;!!!!;WENN(ZÄHLENWENN(N13:N52;reimann)=1;X;))
    ?

    und wegen Formel sicher... die Formel da wäre die welche es zu sichern gilt einfach ist dies nur auf der Tabelle2 so, auf der Tabelle3 dann nicht.

    MFG FiRe-X
     
  8. An der Formel mußt Du nicht ändern, sondern in den Zellen, die zu dem Ergebnis führen.
    also die Meldung wegklicken und dann dafür sorgen, daß->reimann' im Bereich N13:N52 nicht mehr als einmal auftaucht.

    zu Formel in B4 auf Tabelle2 retten:
    Welchen Namen hat denn die Tabelle 2 ?

    Gruß Matjes
     
  9. Die heisst März 2005 (< die anderen genau so als Januar usw...)

    Die Formel muss schon so bleiben einfach wenn wer in die feld N15 reimann schreibt aber bereits reimann in N30 steht, soll N15 gelöscht werden und eben dieser kleiner Errordialog kommen =) welchen ich bis jetzt mit !!!! ersetzt habe

    mfg Billy
     
  10. Hallo Billy,

    - Überwachung der Mappe
    - Überwachung einer Zelle auf Änderung und ggf. ein Undo der geänderten Zeile
    beissen sich. Das wird zu schwierig, um es zu erklären.

    Ein alternativer Vorschlag sieht folgendermassen aus:
    Die Überwachungsspalte B wird als Makro implementiert. Dann fällt die Änderungsüberwachung und Undo fort.

    Lege eine Kopie deiner Datei an. In der kannst Du dann die folgenden Ändrungen ausprobieren.


    Notwendige Makros:

    **********
    A) AuswarteMakro als Ersatz für Spalte B
    Diesen Makro in die Code-Seite eines Moduls schreiben
    Vorgehen:
    1) Excel-Datei öffnen
    2) VB-Ediotr öffnen Alt+F11
    Links siehst Du ein Fenster mit der Überschrift Projekt-VBA-Project.
    In diesem Fenster ist die Arbeitsmappe unter dem Namen VBAProject(Dateiname) zu finden.
    3) VBAProject(Dateiname) selektieren
    3) rechte Maustaste->Modul->Modul einfuegen
    in der Mitte geht das Code-Fenster Dateiname - Modulx(Code) auf
    4) den folgenden Code per copy und Paste in dieses Fenster hineinkopieren
    Code:
    Function myUeberwachung(ws As Worksheet, s_Bereich, s_Name, l_Warnenab)
      Dim Zelle As Range, s_meldung As String, l_anz As Long, s_tmp As String
      If l_Warnenab <= ws.Application.WorksheetFunction.CountIf(ws.Range(s_Bereich), s_Name) Then
        s_meldung = _
            Der Name-> & s_Name &-> tritt auf Blatt-> & ws.Name _
            &-> in folgenden Zellen auf: & vbLf
        l_anz = 0
        For Each Zelle In ws.Range(s_Bereich)
          If Zelle.Value = s_Name Then
            s_tmp = Zelle.Address(rowabsolute:=False, Columnabsolute:=False)
            If l_anz = 0 Then
              s_meldung = s_meldung & s_tmp
            Else
              s_meldung = s_meldung & ,  & s_tmp
            End If
            l_anz = l_anz + 1
          End If
        Next
        s_meldung = s_meldung & vbLf & vbLf & Bitte ändern !
        MsgBox (s_meldung)
      End If
    End Function
    
    5) speichern mit Alt+S

    *******************
    B) Makro zur Änderungsüberwachung in die Code-Seiten der Tabellen
    1) Tabelle1 im VBAProject-Fenster doppelklicken
    in der Mitte geht das Code-Fenster Dateiname - Tabelle1(Code) auf
    2) den folgenden Code per copy und Paste in dieses Fenster hineinkopieren
    Code:
    Const c_Name = reimann
    Const c_Bereich = C4:C52
    Const c_WarnenAb = 2
    
    Private Sub Worksheet_Activate()
      Call myUeberwachung(ActiveSheet, c_Bereich, c_Name, c_WarnenAb)
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      Call myUeberwachung(ActiveSheet, c_Bereich, c_Name, c_WarnenAb)
    End Sub
    2a) c_Bereich entsprechend deinem Bereich N13:N52 anpassen
    2b) c_Name auf den zu überwachenden Namen anpassen (z.B. reimann)
    3) speichern mit Alt+S
    4) B) für alle zu überwachenden Tabellen wiederholen anpassen

    ********************
    C) Makro zum Überprüfung bei Datei öffnen
    1) DieseArbeitsmappe im VBAProject-Fenster doppelklicken
    in der Mitte geht das Code-Fenster Dateiname - DieseArbeitsmappe (Code) auf
    ggf. vorhandenen Code löschen
    2) den folgenden Code per copy und Paste in dieses Fenster hineinkopieren
    Code:
    Private Sub Workbook_Open()
      Dim w As Worksheet, ws_akt As Worksheet
      Set ws_akt = ActiveSheet
      For Each w In Worksheets
        If w.Name <> ws_akt.Name Then w.Activate
      Next
      ws_akt.Activate
      Set ws_akt = Nothing: Set w = Nothing
    End Sub
    3) speichern mit Alt+S
    4) VB-Editor schliessen mit Alt+Q


    So jetzt kannst Du ihn ausprobieren.
    Sorge dafür, daß auf einem Tabellenblatt im überwachten Bereich der betreffende Name zweimal auftritt. Dann müßte eine Meldung kommen.
    Wenn Du diese Datei speicherst und wieder öffnest, müßte die gleiche Meldung erscheinen.

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

Makro: Wenn Zelle=Wert Dann Meldung - Ähnliche Themen

Forum Datum
Excel: Makro mit Bedinung "wenn leer, kopieren von und einfügen" Windows XP Forum 21. Juli 2008
Excel Makro: "sich selber löschen, wenn doppelt" Microsoft Office Suite 24. Mai 2005
Excel Makro wenn best. Feld ein x Microsoft Office Suite 5. Apr. 2005
Excel VBA Makro zum suchen eines Textes und anschließend einen Breich zu kopieren Microsoft Office Suite 22. Jan. 2015
Word 2013 VBA: Makro aus einer anderen Datei aufrufen Microsoft Office Suite 16. Juni 2014