Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

makro starten wenn eine Zelle nicht leer ist

510 views
Skip to first unread message

vincent

unread,
Jun 8, 2007, 5:33:00 AM6/8/07
to
Guten Tag
ich möchte gerne das ein bestehendes und funktionierendes Makro automatisch
ausgeführt wird wenn eine bestimmte Zelle nicht mehr leer ist.

leider bin ich nicht sehr gut mit makros schreiben, aber in etwa sollte es
"wenn A5>0, dann Starte Makro xy, sonst "nichts"

gruss
Vincent

Herbert Taferner

unread,
Jun 8, 2007, 6:30:50 AM6/8/07
to
Hallo Vincent,

Code in das Codefenster der entsprechenden Tabelle


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "A5" Then Exit Sub
If Target <> "" Then
'Makroaufruf
End If
End Sub


mfg Herbert


vincent

unread,
Jun 8, 2007, 7:24:18 AM6/8/07
to
Herbert vielen Dank für den Tip,
ich habe es reinkopiert kann aber nicht rausfinden wie ich das Makro starte.
im MVisual Basic ist es ein Modul2 mit name Add_line_top
wie ruf ich jetzt das auf?

auch die Help konnte keine infos geben zum them Makroaufruf

gruss
vincent

"Herbert Taferner" schrieb:

vincent

unread,
Jun 8, 2007, 8:19:01 AM6/8/07
to
Guten Tag Herbert
ich hab noch weiter gelesen und versucht zu verstehen.
-------------diesen code habe ich jetzt ------------------

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "A5" Then Exit Sub
If Target <> "" Then 'Modul2.Add_line_top'
End If
End Sub
------------end code -----------------------------------------
zur zeile
If Target.Address(0, 0) <> "A5" Then Exit Sub
die verstehe ich wobei was ist die Target.Address (=Ziel.Adresse) woher
weiss er die?
gruss
vincent

"Herbert Taferner" schrieb:

> Hallo Vincent,

Thomas Ramel

unread,
Jun 8, 2007, 8:33:01 AM6/8/07
to
Grüezi vincent

"vincent" schrieb:

> ich hab noch weiter gelesen und versucht zu verstehen.
> -------------diesen code habe ich jetzt ------------------
> Private Sub Worksheet_Change(ByVal Target As Range)
> If Target.Address(0, 0) <> "A5" Then Exit Sub
> If Target <> "" Then 'Modul2.Add_line_top'
> End If
> End Sub
> ------------end code -----------------------------------------

Der Code muss ins CodeModul des betreffenden Tabellenblattes kopiert werden.
Also im VBA-Editor einen Doppelklick auf dein Tabellenblatt und dann dort
einfügen.

> zur zeile
> If Target.Address(0, 0) <> "A5" Then Exit Sub
> die verstehe ich wobei was ist die Target.Address (=Ziel.Adresse) woher
> weiss er die?

Das Ganze ist ein Ereignis-Makro, dass dann ausgelöst wird, wenn ein Wert in
einer Zelle geändert (neu eingegebn) wird.

Target wird als Parameter übergeben und ist der Range der verändert worden
ist, sprich in dem der/die Werte(e) verändert wurde.

Mehr zum Change-Ereignis findest Du auch in der Online-Hilfe.

--
Mit freundlichen Grüssen

Thomas Ramel (@Web-Interface)
- MVP für Microsoft-Excel -

[Win XP Pro SP-2 / xl2003]

Herbert Taferner

unread,
Jun 8, 2007, 8:52:16 AM6/8/07
to
Hallo Vincent,

> ich hab noch weiter gelesen und versucht zu verstehen.
> -------------diesen code habe ich jetzt ------------------
> Private Sub Worksheet_Change(ByVal Target As Range)
> If Target.Address(0, 0) <> "A5" Then Exit Sub
> If Target <> "" Then 'Modul2.Add_line_top'
> End If
> End Sub
> ------------end code -----------------------------------------
> zur zeile
> If Target.Address(0, 0) <> "A5" Then Exit Sub
> die verstehe ich wobei was ist die Target.Address (=Ziel.Adresse) woher
> weiss er die?

einmal plump gesagt das ist genau die Adresse wo gerade was geändert wurde,
und wenn die eben A5 ist dann wird weitergearbeitet sonst wird das
Ereignis nicht weiter beachtet, daher erspart man sich die Durcharbeitung
der folgenden Codezeilen wenn dafür kein Bedarf ist

das sollte reichen,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "A5" Then Exit Sub
If Target <> "" Then

Call Add_line_top
End If
End Sub

wenn du den Makroaufruf in die gleiche Zeile stellst, dann musst du auch das
End If entfernen das ist dann nicht mehr nötig

mfg Herbert


vincent

unread,
Jun 8, 2007, 8:59:02 AM6/8/07
to
Guten Tag Thomas
hab versucht die codes zusammen zu kopieren gibt aber immer errors!
diesen Befehl
---
If Target <> "" Then 'Modul2.Add_line_top'
---
bedeutet es nicht, dass wenn Target (in meinem Fall A5) grösser als "" ist
dann das Makro welches sich im Modul2 mit dem Namen Add_line_top ausgeführt
wird?

gruss
Vincent
PS: Hoffentlich schreibe ich nicht zu verwirrt ;-)

"Thomas Ramel" schrieb:

> Grüezi vincent
>
> "vincent" schrieb:
>
> > ich hab noch weiter gelesen und versucht zu verstehen.
> > -------------diesen code habe ich jetzt ------------------
> > Private Sub Worksheet_Change(ByVal Target As Range)
> > If Target.Address(0, 0) <> "A5" Then Exit Sub
> > If Target <> "" Then 'Modul2.Add_line_top'
> > End If
> > End Sub
> > ------------end code -----------------------------------------
>
> Der Code muss ins CodeModul des betreffenden Tabellenblattes kopiert werden.
> Also im VBA-Editor einen Doppelklick auf dein Tabellenblatt und dann dort
> einfügen.

Der obgenannte Code ist im Blatt Tabelle6
Das Makro ist im Modul2 drinn
also muss ich aus dem Modul2 den ganzen MakroCode kopieren

vincent

unread,
Jun 8, 2007, 9:07:00 AM6/8/07
to
SUPER Vielen Dank!
es klappt bestens
gruss
Vincent

"Herbert Taferner" schrieb:

Herbert Taferner

unread,
Jun 8, 2007, 11:23:42 AM6/8/07
to
Hallo Vincent,

> SUPER Vielen Dank!
> es klappt bestens

Bitte gern !

mfg Herbert


0 new messages