Makroausführung nur bei Zelleingabe

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox


Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Makroausführung nur bei Zelleingabe
von: Andreas Hell
Geschrieben am: 21.06.2002 - 17:44:38

Hallo Excel-Freunde,
wie kann ich erreichen das ein Makro nur abläuft wenn in Zelle A7 eine Eingabe gemacht wurde.Wurde in Zelle A7 kein Wert eingegeben und die Schaltfläche wird getätigt die das Makro startet, soll ein entsprechender Hinweis kommen.Ich arbeite mit Excel 2000.
Danke im Voraus
Andreas

nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Hajo_Zi
Geschrieben am: 21.06.2002 - 17:47:35

Hallo Andreas


Sub Meldung()
    If Range("A7") = "" Then
        MsgBox "Erst Zelle A7 füllen"
    Else
'       Dein Makro
    End If
End Sub

Gruß Hajo


nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Andreas Hell
Geschrieben am: 21.06.2002 - 20:38:21

Hallo Hajo,
danke das du mir so schnell geholfen hast.Da ich, was VBA betrifft Neuling bin komme ich mit Deiner Antwort nicht ganz klar.
Dein Makro funktioniert, nur wenn ich an der Stelle an der "Dein Makro" steht den Makroname einfüge geht nichts mehr.
Wie binde ich das Makro ein??
Danke Andreas

nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Hajo_Zi
Geschrieben am: 21.06.2002 - 20:41:56

Hallo Andreas

dann solltest Du mal Dein Makro ins Forum stellen.

Gruß Hajo


nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Andreas
Geschrieben am: 21.06.2002 - 20:53:22

Sub DatenInTabelle()

Range("A5:I5").Select
Selection.Copy
Sheets("Schlüssel").Select
Application.Run "Schlüsselverwaltung.xls!DieseArbeitsmappe.makro_1"
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A2").Select
Sheets("Verwaltung").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A5").Select
End Sub

nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Hajo_Zi
Geschrieben am: 21.06.2002 - 21:05:45

Hallo Andreas

das ist nur die halbe Miete. Ich würde das Makro ein wenig kürzen


Sub DatenInTabelle()
    Range("A5:I5").Copy
    Sheets("Schlüssel").Select
    Application.Run "Schlüsselverwaltung.xls!DieseArbeitsmappe.makro_1"
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone
    Application.CutCopyMode = False
    With Sheets("Verwaltung")
        .Range("A2").ClearContents
    End With
End Sub


Sub Meldung()
    If Range("A7") = "" Then
        MsgBox "Erst Zelle A7 füllen"
    Else
        DatenInTabelle
    End If
End Sub

aber in der Zeile
Application.Run "Schlüsselverwaltung.xls!DieseArbeitsmappe.makro_1"
wird ein Makro aus einer anderen Datei aufgerufen. Das steht hier aber nicht was dieses Makro macht.

Gruß Hajo

nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Andreas
Geschrieben am: 21.06.2002 - 21:10:25

Hallo Hajo,
tut mir leid, hatte es vergessen.
Das Makro soll nur die erste freie Zelle in Spalte 1 suchen.

Sub makro_1()
Dim zeile As Integer
For i = 1 To 10000
If Cells(i, 1) = "" Then
Cells(i, 1).Activate
Exit Sub
End If
Next i
End Sub


nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Hajo_Zi
Geschrieben am: 21.06.2002 - 21:22:02

Hallo Andreas

leider hast Du nicht geschrieben ob Du die letzte veschriebene Zelle finden wolltest oder dier erste leere. z.B. Belegt ist A1;A2; A4; A5

mit Deiner schleife würde A4 rauskommen möchtest Du aber A5 haben geht es erheblich schneller und besser mit einer anderen Variante.


z.B. mit
If [a65536] = "" Then
    letzte = [a65536].End(xlUp).Row
Else
    letzte = 65536
End If

Sub DatenInTabelle()
    Dim As Integer
    Range("A5:I5").Copy
    With Sheets("Schlüssel")
        For I = 1 To 10000
            If .Cells(I, 1) = "" Then Exit For
        Next I
        .Cells(I, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone
    End With
    Application.CutCopyMode = False
    With Sheets("Verwaltung")
        .Range("A2").ClearContents
    End With
End Sub


Sub Meldung()
    If Range("A7") = "" Then
        MsgBox "Erst Zelle A7 füllen"
    Else
        DatenInTabelle
    End If
End Sub


Eigentlich wäre es auch richtig wenn das Refister beim Copy Befehl dazu geschrieben wird , dieses war mir aber nicht bekannt.

Gruß Hajo

nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Andreas
Geschrieben am: 21.06.2002 - 21:37:24

Tut mir leid dass ich Dich so lange aufhalte.
Dein Makro funktioniert, ich bekomme aber keine Meldung wen Zelle A 5 nicht beschrieben wird und dann das Makro gestartet wird.
Welche Leere Zeile gefunden wird ist im Prinzip egal.Es handelt sich um eine Datenbank in der über diese Datenmaske Daten eingefügt und irgendwann wieder gelöscht werden.Da das Makro eine Leere Zelle sucht werden die Lücken immer wieder gefüllt.Da ich die Daten über Filter abrufe ist es gleich welche Zeilen zuerst gefüllt werden.
Andreas

nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Hajo_Zi
Geschrieben am: 21.06.2002 - 21:42:38

Hallo Andreas

es sollte geprüft weerden ob A7 verschieden von leer A5 solte nicht geprüft werden. Das müßtest Du noch mal beschreiben.

Gruß Hajo


nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Andreas
Geschrieben am: 21.06.2002 - 22:08:26

Hallo Hajo,
In Tabelle 1 ist eine Maske die folgendermaßen aussieht:
NR. Name Pers.Nr. Ausgeber Schließung usw.
In diese Maske trage ich den Datensatz einer Person ein.
Wenn ich dann das Makro auslöse soll der Datensatz in eine Leere Zeile in Tabelle 2 geschrieben werden.In welche Leere Zeile er geschrieben wird ist im Prinzip egal da ich die Datensätze in Tabelle 2 (ca.700) mit Filtern auswerte.
Da in der Maske das Feld Nr. in Spalte A steht und das Makro eine freie Zelle in A sucht würde mir spätestens bei der nächsten Datenübertragung die komplette Zeile überschrieben wenn das erste Feld nicht ausgefüllt würde.
Ich hoffe das ich jetzt verständlich machen konnte welches Problem ich lösen will.
Andreas

In Tabelle 2

nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Hajo_Zi
Geschrieben am: 21.06.2002 - 22:12:51

Hallo Andreas

eins ist mir aber noch nicht klar warum wird erst A7 geprüft ob verschiden von leer und dann wird A5 ff kopiert. Dann könnte doch gleich geschrieben werden


    If Range("A7") = "" And Range("A5") = "" Then
        MsgBox "Erst Zellen A7 und A5 füllen"

Gruß Hajo


nach oben   nach unten

Re: Makroausführung nur bei Zelleingabe
von: Andreas
Geschrieben am: 22.06.2002 - 11:51:00

Hallo Hajo,
Vielen Dank, jetzt funktioniert es.

Gruss Andreas


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Makroausführung nur bei Zelleingabe"