Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Code von den Objekten in ein Modul

VBA-Code von den Objekten in ein Modul
06.05.2020 16:05:28
den
Hallo liebe Excel-Gemeinde,
ich habe ein kleines Problem.
Ich habe eine Excelmappe, in der ich per Knopfdruck verschiedene Blätter mit VBA erzeuge.
Jetzt sollen genau auf diese Blätter bei einem Eintrag in eine bestimmte Spalte, Datum und Name des Users vermerkt werden. Wenn ich den Code in dem Blatt/ Objekt selbst einfüge, funktioniert das auch wunderbar.
Aber da ich die Blätter ja per VBA erzeugen lasse, habe ich das Problem, dass ich ja da nicht automatisch das Makro mit rein bekomme (ich weiß, es gibt eine Möglichkeit per Makro ein Makro einzufügen, aber da bei uns die Sicherheitsbestimmungen sehr hoch ist, ist es uns nicht erlaubt im Trust Center dies spezifisch zu erlauben). Darum hatte ich gehofft, dass ich dies evtl. in einem Modul unter bringen könnte. Zur Not würde es auch in "Diese Arbeitsmappe" gehen. Bisher schlugen meine Versuche fehl. Der ursprüngliche Code lautet:
  • 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngZelle As Range
    If Not Intersect(Target, Columns(29)) Is Nothing Then
    If Target.Cells(1)  "" Then
    Application.EnableEvents = False
    For Each rngZelle In Target
    If Not Intersect(rngZelle, Columns(29)) Is Nothing Then
    rngZelle.Offset(0, 51) = Environ("username") & ": " & _
    Format(Now(), "dd/mm/yyyy hh:mm:ss")
    If rngZelle.Offset(0, 50) = "" Then rngZelle.Offset(0, 50) = _
    Environ("username") & ": " & Format(Now(), "dd/mm/yyyy hh:mm:ss")
    End If
    Next rngZelle
    Application.EnableEvents = True
    End If
    End If
    End Sub
    

  • Ich hatte gehofft, dass Ihr mir ein wenig auf die Sprünge helfen könnt.
    Wobei...hmm… zur Not könnte ich evtl. auch ein leeres Blatt ausgeblendet mit dem Makro hinterlegen und dann statt das Blatt neu zu erzeugen, das verborgene Blatt kopieren - da kopiert es doch auch das Makro mit.
    Was meint Ihr dazu?
    Könnt Ihr mir für die ein oder andere Version einen Rat geben?
    Liebe Grüße
    Anja

    7
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    Workbook_SheetChange
    06.05.2020 16:21:34
    Beverly
    Hi Anja,
    hast du es schon mal mit dem Workbook_SheetChange im Codemodul diese Arbeitsmappe versucht? Der in dieser Prozedur vorhandene Code gilt dann für alle Tabellenblätter.

    GrußformelBeverly's Excel - Inn
    AW: Workbook_SheetChange
    06.05.2020 16:58:43
    Anja
    Huhu Beverly,
    ich habe es einmal eingebaut. Leider scheint sich das mit meinem restlichen Code zu beißen. An der Stelle, an der geprüft werden soll, wird beim bauen der Tabelle per VBA der Bereich Blau gefärbt.
    Das wirft dann wohl einen Laufzeitfehler in dem SheetChange aus:
    Laufzeitfehler 1004: Die Methode 'Intersect' für das Objekt' Global' ist fehlgeschlagen
  • 
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim rngZelle As Range
    Dim letztezeile As Long
    Select Case ActiveSheet.Name
    Case Is  "Zusammenfassung", "Aktion", "Daten"
    letztezeile = ActiveSheet.Cells(Rows.Count, 10).End(xlUp).Row
    If Not Intersect(Target, Range("AC12:AC" & letztezeile)) Is Nothing Then
    If Target.Cells(1)  "" Then
    Application.EnableEvents = False
    For Each rngZelle In Target
    If Not Intersect(rngZelle, Range("AC12:AC" & letztezeile)) Is Nothing Then
    rngZelle.Offset(0, 51) = Environ("username") & ": " & _
    Format(Now(), "dd/mm/yyyy hh:mm:ss")
    If rngZelle.Offset(0, 50) = "" Then rngZelle.Offset(0, 50) = _
    Environ("username") & ": " & Format(Now(), "dd/mm/yyyy hh:mm:ss")
    End If
    Next rngZelle
    Application.EnableEvents = True
    End If
    End If
    End Select
    End Sub
    


  • Liebe Grüße
    Anja
    Anzeige
    AW: Workbook_SheetChange
    06.05.2020 17:10:55
    onur
    Zur Info: Der Code musst in das Workbook_SheetChange-Ereignis des Blattes und nicht in ein allgemeines Modul.
    Du brauchst kein Activesheet zu benutzen - sh.Name ist schon der Name des Blattes, das den Event ausgelöst hat.
    Und auch hier solltest du bei
    If Not Intersect(Target, Range("AC12:AC" & letztezeile)) Is Nothing Then
    

    ein "sh." for Range setzen.
    AW: Workbook_SheetChange
    06.05.2020 17:14:23
    Anja
    Huhu nochmal!
    Ich hatte vergessen in die anderen Makros Application.EnableEvents = False/True mit einzubauen.
    Nun kommt zwar noch ein Fehler, dass ich versuche auf ein schreibgeschütztes Blatt einzutragen, aber dieses Problem bekomme ich ganz leicht selbst gelöst.
    Vielen Dank nochmal für die schnelle Hilfe! Genau bei solchen Lösungen merke ich, dass ich mir das VBA "so nebenher" angeeignet habe. Mit einer vernünftigen Schulung hätte ich diese Frage nicht gehabt :)
    Liebe Grüße
    Anja
    Anzeige
    AW: Workbook_SheetChange
    06.05.2020 17:18:42
    onur
    Nochmal ich:
    Mit ActiveSheet.Name statt sh.Name verpasst du evtl. Veränderungen der Seite durch den Code, wenn irgend ein Code die Werte in irgend einer Zelle ändert, ohne das Blatt zu aktivierten.
    AW: Workbook_SheetChange
    06.05.2020 17:24:20
    Beverly
    Hi Anja,
    kann ich nicht nachvollziehen - bei mir wird weder in der ersten If Not Intersect-Prüfung noch in der zweiten ein Fehler ausgegeben.
    Allerdings würde ich generell nicht ActiveSheet verwenden, denn Excel gibt ja bereits vor, wie die Tabelle angesprochen werden soll - nämlich ByVal Sh As Object

    GrußformelBeverly's Excel - Inn
    Anzeige
    AW: Workbook_SheetChange
    06.05.2020 19:51:36
    Anja
    Hallo ihr beiden,
    Dankeschön für eure Hilfe, ich habe die Tipps eingebaut und es funktioniert nun - nachdem ich mein kleines Blattschutzproblem gelöst habe - einwandfrei.
    Liebe Grüße
    Anja

    299 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige