Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

vba abfrage

vba abfrage
06.06.2008 13:05:00
susi
Userbild
hallo experten
in einer tabelle muss ich ständig namen eingeben und dann den bestellten betrag und dann eine notiz dazuschreiben. wenn ich was vergesse kann es zu problemen führen. deshalb benötige ich eine vba
macro das mich daran erinnert ob ich in den spalten B;D:G etwas eingetragen habe.
beginn
"wenn ich in spalte B
etwas eintrage
soll geprüft werden ob ich zuerst in spalte D und wenn D eine zahl drinnen steht dann spalte G Etwas eingegeben habe"
wenn nicht dann msg box
ich hoffe irgend jemand kann mir helfen
mfg.
susi

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba abfrage
06.06.2008 14:01:00
Franc
zwar nicht so schön aber es geht erstmal ^^
Nun ist nur noch die Frage wann es ausgelöst werden soll.
Das Makro prüft ob in Zelle B etwas drin steht. Ist dem der Fall so wird getestet ob Zelle D eine Zahl ist und in Zelle G mehr als 10 Zeichen stehen.
Trifft einer der Fälle nicht zu, wird es in einer msgbox entsprechend ausgegeben.
Fehlermeldung und Ausgabe kann man ja anpassen.

Sub eingaben_prüfen()
Dim FehlerText As String, Zelle
Dim Fehler As Boolean, Fehler4 As Boolean, Fehler7 As Boolean
Dim Fehler4text, Fehler7text
Fehler = False
Fehler4 = False
Fehler7 = False
FehlerText = "Fehler in der Eingabe!" & Chr(13) & _
"Bitte prüfen ob in Spalte D eine Zahl steht" & Chr(13) & _
"und in Spalte F ein Text eingetragen ist!" & Chr(13) & Chr(13) & _
"Spalte D" & Chr(9) & "Spalte F" & Chr(13)
For Each Zelle In Worksheets("Tabelle1").Range("B:B")
If Zelle = "" Then
If Fehler = True Then
MsgBox FehlerText
Exit Sub
Else
Exit Sub
End If
End If
If Cells(Zelle.Row, 2)  "" Then
If Cells(Zelle.Row, 4)  "" And IsNumeric(Cells(Zelle.Row, 4)) Then
Fehler4text = "    "
Else
Fehler4 = True
Fehler4text = "   " & Cells(Zelle.Row, 4).Address(RowAbsolute:=False,  _
ColumnAbsolute:=False)
End If
If Len(Cells(Zelle.Row, 7)) > 10 Then
Fehler7text = "    "
Else
Fehler7 = True
Fehler7text = "   " & Cells(Zelle.Row, 7).Address(RowAbsolute:=False,  _
ColumnAbsolute:=False)
End If
End If
If Fehler4 = True Or Fehler7 = True Then
FehlerText = FehlerText & Fehler4text & Chr(9) & Fehler7text & Chr(13)
Fehler = True
Fehler4 = False
Fehler7 = False
End If
Next
End Sub


Anzeige
da wäre nur eines
06.06.2008 14:07:00
Franc
Aktuell hört es bei der 1. leeren Zelle in Spalte B auf.
Aber ich denk mal, das du keine Leerzeilen drin hast oder?

AW: da wäre nur eines
06.06.2008 14:17:35
susi
hi
danke für deine antwort aber da tut sich nix wenn ich was eingebe in tabelle in spalte B
WAS MACHE ICH FALSCH?
ich habe es in tabelle modul eingefügt
danke

AW: da wäre nur eines
06.06.2008 14:55:47
Chris
Hallo Susi,
vllt. hilft dir das weiter:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row  "":
If Not IsNumeric(Range("D" & Target.Row - 1)) Then
MsgBox " Sie haben keine Zahl in Spalte D der vorhergehenden Zeile eingegeben!  _
Bitte geben sie eine Zahl ein!", vbExclamation, "Betrag"
Range("D" & Target.Row - 1).ClearContents
Range("D" & Target.Row - 1).Select
Exit Sub
End If
End Select
End If
If Not Intersect(Target, Range("D:D")) Is Nothing Then
Select Case Range("G" & Target.Row - 1)
Case "":
MsgBox " Sie haben keinen Eintrag in Spalte G der vorhergehenden Zeile  _
vorgenommen!", vbExclamation, "Info"
Range("G" & Target.Row - 1).Select
Exit Sub
End Select
End If
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 7 Then
If Range("G" & Target.Row - 1).Value = "" Then
MsgBox " Unvollständige Eingaben in dieser Zeile!", vbExclamation, "Gesamteintrag"
Range("G" & Target.Row - 1).Select
Exit Sub
End If
Else
Exit Sub
End If
beide Makros in das Tabellenmodul, also Tabelle1.
Gruß
Chris

Anzeige
AW: Anmerkung
06.06.2008 14:57:00
Chris
Hallo Susi,
das Ereignis wird erst ausgelöst, wenn du in B etwas eingegeben hast und in D aus der vorhergehenden Zeile nichts steht.
Gruß
Chris

AW: Nachbesserung
06.06.2008 15:12:04
Chris
Hallo Susi,
hier eine kleine Nachbesserung für das SelectionChange:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 7 Then
If Range("G" & Target.Row - 1).Value = "" And Range("D" & Target.Row - 1)  "" Then
MsgBox " Unvollständige Eingaben in dieser Zeile!", vbExclamation, "Gesamteintrag"
Range("G" & Target.Row - 1).Select
Exit Sub
End If
Else
Exit Sub
End If
End Sub


Gruß
Chris

Anzeige
AW: nochmal eine kleine Verbesserung
06.06.2008 15:21:00
Chris

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row 



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 7 Then
If Range("G" & Target.Row - 1).Value = "" And Range("D" & Target.Row - 1)  "" Then
MsgBox " Unvollständige Eingaben in dieser Zeile!", vbExclamation, "Gesamteintrag"
Range("G" & Target.Row - 1).Select
Exit Sub
End If
Else
Exit Sub
End If
End Sub


Jetzt ist das mit der Zahl in Spalte D besser gelöst.
Gruß
Chris

Anzeige
AW: nochmal eine kleine Verbesserung
06.06.2008 16:06:00
susi
hi
danke vielmals
aber ich habe alles versucht und es funkt nicht.
erhalte immer sytaxfehler fehler beim kompilieren.
liegt es daran das ich schon ein ähnliches macro habe das mir das datum einträgt?
sieh mal so habe ich das reinkopiert

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'wird im definierten Bereich ein Wert geändert,
'wird in der nächsten Spalte das Datum _eingetragen
'   ist schjon was eingetragen, erfolgt kine Eintragung
Dim RaBereich As Range, RaZelle As Range
' Bereich der Wirksamkeit
Set RaBereich = Range("F5:F22220")
Application.EnableEvents = False
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
If RaZelle.Offset(0, -1) = "" Then RaZelle.Offset(0, -1) = Date
End If
Next RaZelle
Application.EnableEvents = True
Set RaBereich = Nothing
' hier musste ich dektievieren weil doppelter eintrag
'

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row 


ich denke es liegt an der msg box die wird rot markiert
danke
gruss
susi

Anzeige
AW: nochmal eine kleine Verbesserung
06.06.2008 16:29:20
Chris
Servus Susi,
das rot Markieren liegt am Zeilenumbruch. Du musst den Zeilenumbruch im Code in den jeweiligen MsgBox-Teilen entfernen, so dass der Text im Ausgabefenster in einer Zeile steht, dann geht auch das Makro.
Evtl. musst du die Zeile If Target.Row <= 2 ~f~ in ~f~<= 5 umwandeln, da anscheinend deine Daten erst ab Zeile 5 eingetragen werden.
Gruß
Chris

AW: fertig danke chris und alle n anderen
06.06.2008 22:53:00
susi
hi chris
vielen vielen dank vielmals!!!!!!
JETZT HAT ES GEFUNKT MUSSTE NUR DAS -1 -0 ÄNDERN ANSONST PERFEKT
in wien würde man sagen
"kriegst ah bussal auf's baucha'l das des orschi wackelt"
gruss
susi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige