Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
632to636
632to636
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro nur ausführen wenn x in Zelle

Makro nur ausführen wenn x in Zelle
08.07.2005 18:37:38
Carola
Hallo vielleicht kann mir von Euch jemand helfen. Mein Makro ist soweit ok und kopiert die Zelle immer in das Datenblatt. Nun gibt es aber immer wieder Leute die nicht alles ausfüllen und ins Datenblatt kopieren. In J11 steht die Zeit die sollte immer drin sein und in K11 bis Q11 sollte ein x stehen. K11 bis Q11 sind verschiedene Arbeitsgänge in meiner Tabelle und es sollte immmer einer mit x versehen sein.
Lacht bitte nicht wenn Ihr das Makro seht weil es vielleicht auch kürzer geht, ich hab es mit dem Recorder aufgezeichnet und halt abgeändert bis halt auf die Zeiteingabe in J11 und ein x in K11 bis Q11 geht es ja.

Sub inTabellle()
' inTabellle Makro
' Makro für Übernahme der Daten aus Eingabe Zeit
Application.ScreenUpdating = False
Sheets("Datentabelle").Visible = True
Sheets("Datentabelle").Select
Rows("4:4").Select
Selection.Insert Shift:=xlDown
Range("A4").Select
Sheets("Eingabe Zeit").Select
Range("C11:J11").Select
Selection.Copy
Sheets("Datentabelle").Select
Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("I4").Select
Sheets("Eingabe Zeit").Select
ActiveWindow.SmallScroll ToRight:=27
Range("AF13:AM13").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datentabelle").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("Q4").Select
Sheets("Eingabe Zeit").Select
Range("AC13").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
Range("D13:P13").Select
Selection.Copy
Sheets("Datentabelle").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A3").Select
Sheets("Eingabe Zeit").Select
Range("Q11").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
Range("D13:P13").Select
ActiveCell.FormulaR1C1 = ""
Range("P11").Select
ActiveCell.FormulaR1C1 = ""
Range("O11").Select
ActiveCell.FormulaR1C1 = ""
Range("N11").Select
ActiveCell.FormulaR1C1 = ""
Range("M11").Select
ActiveCell.FormulaR1C1 = ""
Range("L11").Select
ActiveCell.FormulaR1C1 = ""
Range("K11").Select
ActiveCell.FormulaR1C1 = ""
Range("I11").Select
ActiveCell.FormulaR1C1 = ""
Range("E11").Select
ActiveCell.FormulaR1C1 = ""
Range("J11").Select
ActiveCell.FormulaR1C1 = ""
Range("J11").Select
Sheets("Datentabelle").Visible = False
Sheets("Eingabe Zeit").Select
Application.ScreenUpdating = True
Range("C11").Select
End Sub

Danke im Voraus allen die hier sind.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro nur ausführen wenn x in Zelle
08.07.2005 21:12:55
Herbert
hallo Carola,
teste das einmal:

Sub inTabellle()
' inTabellle Makro
' Makro für Übernahme der Daten aus Eingabe Zeit
Dim s As Byte
For s = 11 To 17
If Cells(11, s) = "x" Then
Application.ScreenUpdating = False
Sheets("Datentabelle").Visible = True
Sheets("Datentabelle").Select
Rows("4:4").Select
Selection.Insert Shift:=xlDown
Range("A4").Select
Sheets("Eingabe Zeit").Select
Range("C11:J11").Copy
Sheets("Datentabelle").Select
Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("I4").Select
Sheets("Eingabe Zeit").Select
ActiveWindow.SmallScroll ToRight:=27
Range("AF13:AM13").Copy
Sheets("Datentabelle").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("Q4").Select
Sheets("Eingabe Zeit").Select
Range("AC13").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
Range("D13:P13").Copy
Sheets("Datentabelle").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Eingabe Zeit").Select
Application.CutCopyMode = False
Sheets("Eingabe Zeit").Range("D13:P13,E11,K11:Q11,i11:j11").ClearContents
Sheets("Datentabelle").Visible = False
Sheets("Eingabe Zeit").Select
Application.ScreenUpdating = True
Exit Sub
End If
Next
MsgBox "Bitte ""x"" eingeben !"
End Sub

wurde von mir etwas gekürzt...
damit zumindest ein paar "Selects" weniger sind...
über das Makro lacht niemand, den es hat ja BG gemacht...
und über BG lacht man nicht...
gruß Herbert
Anzeige
AW: Makro nur ausführen wenn x in Zelle
08.07.2005 21:45:36
Carola
Hallo Herbert vielen Dank !
Wenn möglich nur noch in Zelle J11 eine Eingabe erzwingen. Denn dort vergessen unsere Lieben auch manchmal etwas einzugeben. In Zelle J 11 wird die Zeit im Format [h]:mm (z.Bsp. 12:15) eingegeben. Wenn dies noch möglich wäre ohne großen Aufwand von Dir.
Wenn nicht bitte nur kurze Antwort.
Vielen Dank nochmals ich bin echt happy Herbert
AW: Makro nur ausführen wenn x in Zelle
08.07.2005 22:16:39
Herbert
da brauchst du nur diese Zeile ändern:
For s = 10 To 17
gruß Herbert
AW: Makro nur ausführen wenn x in Zelle
08.07.2005 22:45:03
Carola
Hallo Herbert vielen Dank und sorry das du mich wahrscheinlich nicht richtig verstanden hast!
Ich möchte erzwingen das in Zelle J11 die Zeit eingetragen wird und in eine der Zellen K11 bis Q11 ein x. Mit dem x geht es, da kommt die msgbox. Nur bei der Zelle J11 soll ja die verbrauchte Zeit stehen und die vergessen die netten Kollegen auch hin und wieder !
( in J11 soll eine Zeitangabe stehen und kein x )
Wenn möglich bitte noch mal einen Tipp !!
( für heute muss ich schluß machen da ich morgen arbeiten muss )
Nochmals - Vielen Dank Herbert
Anzeige
AW: Makro nur ausführen wenn x in Zelle
08.07.2005 23:05:00
Herbert
ich hab es schon richtig verstanden,
das war ein Fehler von mir...ich habe dein Wort "Uhrzeit"
gedanklich nicht erfasst...sondern war so auf das "x" konzentriert.. :-)
Gruß Herbert
Korrektur...
08.07.2005 22:50:41
Herbert
Korrektur:

Sub inTabellle()
' inTabellle Makro
' Makro für Übernahme der Daten aus Eingabe Zeit
Dim s As Byte
For s = 11 To 17
If Cells(11, s) = "x" And Cells(11, 10) > 0 Then
Exit Sub
End If
Next
MsgBox "Bitte ""x"" und Uhrzeit eingeben !"
End Sub

gruß Herbert
AW: Makro nur ausführen wenn x in Zelle
08.07.2005 22:43:51
berber
Hallo Carola,
es gibt keinen Grund zu lachen.
Schritt 1 nur in Excel kein VBA:
Du solltest über den Menüpunkt in Excel Daten - Gültigkeit festlegen, dass in J11(Du musst Zelle vorher markieren) nur ein Wert vom Typ Uhrzeit eingegeben werden darf.
Für den zulässigen Bereich der Uhrzeit kannst Du für: von 0:01 (null Stunden und eine Minute) und für: bis 23:59 eingeben.
'Schritt 2: VBA, Zeilen einfach vor Deinem Code einfügen:
'In Deinem Makro musst Du jetzt noch prüfen ob die Zelle J11 nicht leer ist, weil
'dass die Gültigkeitsprüfung auf Uhrzeit (siehe oben) nicht abfängt.

'verlässt die Prozedur wenn die Zeit nicht ausgefüllt ist.
'cells(11 entspricht Zeile 11, 10 entspricht J Buchstabe 10 im Alphab.)
If IsEmpty(Sheets("Datentabelle").Cells(11, 10).Value) Then exit sub

'Schritt 3 VBA:
'jetzt müssen noch die Spalten K bis Q jeweils Zeile 11 auf den Inhalt X
'geprüft werden
For i = 11 To 17 ' Spalte K = 11 bis 17 = Q prüfen
'Wenn Zelleninhalt ist nicht = x oder X (klein x und groß X werden zugelassen)
If Not(UCase(Sheets("Datentabelle").Cells(11,i).Value)) = "X" Then
Exit Sub 'dann beende das Makro
End If
Next
'Jetzt kommt Dein Code
Application.ScreenUpdating = False
Sheets("Datentabelle").Visible = True
Sheets("Datentabelle").Select
Rows("4:4").Select
Selection.Insert Shift:=xlDown
Gruss
Berber
'Dein Makro führt jetzt die Kopierarbeit nicht mehr aus, wenn Deine Kriterien nicht erfüllt sind.
PS: Sollen alle Zelen K11 bis Q11 mit X eingetragen sein oder reicht es wenn eine der Zellen mit X versehen ist ?
Anzeige
AW: Makro nur ausführen wenn x in Zelle
09.07.2005 13:17:34
Carola
Vielen Dank Euch beiden es klappt genau wie ich es mir vorgestellt habe !!
Nochmals Dankeschön !!!!!!!!!!!!!

345 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige