per VBA Zeile aus Modul löschen

Bild

Betrifft: per VBA Zeile aus Modul löschen
von: Uwe
Geschrieben am: 17.03.2005 13:53:11
Hallo Herfer
VBA gut... aber hier scheitere ich..

Wie kann ich durch Makrocode Makrocode weiter oben weglöschen?


Private Sub Workbook_Open()
    'Zeile1 Kann auch code sein
    'Zeile2
    'und hier geht es weiter
    '***
    'hier soll jetzt hin, den Eintrag von Zeile1 bis Zeile2
    '
    ThisWorkbook.Save
End Sub


In der Recherche hab ich nur gefunden "kompl. Modul zu löschen"

Danke und Gruß
Uwe
Bild

Betrifft: Warum per VBA Zeile aus Modul löschen ?
von: marcl
Geschrieben am: 17.03.2005 14:09:06
Hallo Uwe,
warum möchtest Du eine Makro weiter oben löschen, wenn es durchgelaufen ist? Soll für weitere Läufe was verändert werden?
Gruß
marcl
Bild

Betrifft: genau...
von: Uwe
Geschrieben am: 17.03.2005 14:12:26
Hallo nochmal

in den oberen Zeilen will ich eine Art Registrierung durchführen, Aber nur beim ersten mal.

Hab mitlerweile was gefunden.. aber das klappt nicht

Wer hilft??

With ActiveSheet.Parent.VBProject.vbcomponents(ActiveSheet.CodeName).codemodule
.DeleteLines 1, 2
End With
Bild

Betrifft: AW: genau...
von: marcl
Geschrieben am: 17.03.2005 14:18:57
ach so,
wie wärs mit nem Zellenbezug?
If Range("IV65000")<>"" Then ' niemals verwendete Zelle
...
Range("IV65000")=1
End If

Gruß
marcl
Bild

Betrifft: AW: genau...
von: P@ulchen
Geschrieben am: 17.03.2005 14:22:34
Hallo Uwe,
Beispiel:


Sub löschen()
    With ThisWorkbook.VBProject.VBComponents("Modul1").CodeModule
        .DeleteLines 5,1
    End With
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: Danke, es klappt
von: Uwe
Geschrieben am: 17.03.2005 14:36:19
Hallo

besten Dank.

So hab ich es jetzt gelöst

In DieseArbeitsmappe

Option Explicit
Private Sub Workbook_Open()
    Register
    Dim LOG, LR%, UserN$, UserID$
    On Error Resume Next
    Set LOG = ThisWorkbook.Sheets("LOG")
    LR = LOG.Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte
    UserN = Application.UserName
    UserID = Environ("Username")
    LOG.Cells(LR + 1, 1).Value = Format(Now, "YYYY.MM.DD hh:mm:ss")
    LOG.Cells(LR + 1, 2).Value = UserID
    LOG.Cells(LR + 1, 3).Value = UserN
End Sub

in Modul1

Option Explicit
Sub Register() 'Steht in Modul
    'hier steht die Registrierung
    With ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").codemodule
        .DeleteLines 3
    End With
    ThisWorkbook.Save
End Sub

Damit lösche ich den Register Aufruf raus
Klappt
Bild

Betrifft: AW: Danke, es klappt
von: Uwe
Geschrieben am: 17.03.2005 15:03:56
Hi
und so wird auch noch das ganze Modul selbst gelöscht

Sub Register() 'Steht in Modul1
    'hier steht die Registrierung
    With ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").codemodule
        .DeleteLines 3
    End With
    With ThisWorkbook.VBProject
        .VBComponents.Remove .VBComponents("Modul1")
    End With
    ThisWorkbook.Save
End Sub

Gruß Uwe
Bild

Betrifft: AW: Danke, es klappt
von: P@ulchen
Geschrieben am: 17.03.2005 15:37:16
Hallo Uwe,
gibt aber sicher ein anderes Problem:
Wenn die Datei von anderen Usern genutzt werden soll, muß "Zugriff auf das Visual Basic-Projekt vertrauen" angehäkselt sein, da sonst eine Warnmeldung erscheint und der Code nicht ausgeführt wird.
Die Frage ist dann immer, ob der User das so einfach gestattet...
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: Klar..
von: Uwe
Geschrieben am: 17.03.2005 16:21:45
Hallo Paulchen
Die Datei gibt nur mit Makro Sinn, da hier verschiedene Ereignisse beim Wechsel auf Diagrammseiten ausgelöst werden usw.
Ohne Makro macht die Datei "keinen Spaß".....
Gruß Uwe
Bild

Betrifft: AW: Klar..
von: P@ulchen
Geschrieben am: 17.03.2005 18:41:58
Hallo Uwe,
ich bin mir nicht sicher, ob Du mich richtig verstanden hast...
Ich meinte nicht die Aktivierung der Makros beim Öffnen der Mappe, sondern die Sicherheitseinstellungen im Excel auf dem PC des Users.
Schau mal unter Extras-Makro-Sicherheit-Vertrauenswürdige Quellen, da muß das Häkchen bei Zugriff auf... gesetzt sein. Ist dem nicht so, wirst Du mit Deinem Code wenig Glück haben.
Ich denke, daß es kein guter Programmierstil ist, wenn man dynamisch Codezeilen hinzufügt oder löscht. Sicher geht es manchmal nicht anders, vor allem wenn man einen Code erstellt, der nach Möglichkeit auf allen Excel-Versionen laufen soll.
Nimm besser einen Zellwert in einem ausgeblendeten Blatt und frage diesen ab, um Deine Registrierung durchzuführen.
Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Funktion Autosave / speichern in Excel VBa"