Anzeige
Archiv - Navigation
588to592
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
588to592
588to592
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bestimmte Felder dürfen nicht ausgefüllt werden

Bestimmte Felder dürfen nicht ausgefüllt werden
22.03.2005 08:20:40
Thomas Flach
Guten Morgen
Ich habe gleich mal zwei fragen. Die erste steht bereits im Titel. Ich denke das müsste mit VBA lösbar sein , nur wie ?
Also ich habe mir vorgestellt wenn:
A1 = 1 ( Betreff )
A2 = 2 ( Dauer )
A3 = 3 ( Priorität )
A4 = 4 ( Start )
Nun möchte ich bei B4 auch eine 4 einsetzten habe aber bei B1-3 die gleichen Werte drin wie bei A1-3. Das darf aber nicht möglich sein. Es soll dann irgend eine alertbox kommen die einem sagt das es nicht erlaubt sei. Umschrieben meine ich wenn bestimmte Felder schon mal gleich ausgefüllt sind darf es nicht möglich sein in ein bestimmtes Feld nochmals den gleichen wert einzugeben.
Dann meine zweite Frage. Ich möchte das es meine Tabelle automatisch an die anpasst die auf einem anderen Worksheet ist. Eigentlich kann ich dann ja einfach
=Worksheet!A1 machen, aber das sieht doof aus, da wenn ich das einfach nach unten ziehe die Felder die leer sind eine 0 bekommen. Zusätzlich werden die Inhalte nicht angepasst. Wenn ich eine neue Reihe einfüge dann setzt der Code in den Zellen nicht fort sondern lässt diese Reihe aus:
=Worksheet!A1
=Worksheet!B1
=Worksheet!D1
Wenn ich C neu eingefügt habe auf dem Worksheet? Wie umgehe ich das?

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Felder dürfen nicht ausgefüllt werden
22.03.2005 09:52:04
Volker
Hallo Thomas,
zu Deiner 1.Frage (die Antwirt zur 2. bleib ich Dir schuldig).
Schreib das hier im VBA-Editor unter Objekte in das entsprechende Tabellenblatt.
Das Ereignis wird bei einer Änderung des Blattes ausgelöst, prüft, ob die Änderung im Bereich B1-B4 liegt und dann, ob im Bereich A1-A2 alle Werte gleich sind.
Wenn ja, kommt eine Meldung.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim bereich As Range
Set bereich = Range("B1:B4")
If Not Intersect(Target, bereich) Is Nothing Then
For Each zelle In bereich
If zelle <> zelle.Offset(0, -1) Then Exit Sub
Next
End If
MsgBox ("Datensatz schon vorhanden !")
Target.select   'zeigt die letzte geänderte Zelle an, durch die die Gleichheit erfüllt ist.
End Sub

Gruß
Volker
Anzeige
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 10:08:50
Thomas Flach
hmmm sieht schon mal nicht schlecht aus. nur jetzt dürfen die felder nie dasselbe sein. es soll aber nur die letzte zeile überprüft werden ? A4 = 4 ( Start ) die darf nicht gleich sein wenn die anderen 3 bereits gleich sind.
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 10:16:15
Volker
Hi Thomas,
und was ist, wenn Du erst B4 ausfüllst und dann B1-B3 ?
Bis alle 4 gleich sind passiert doch auch nichts, oder?
Hab grad noch einen Bug entdeckt: Die Meldung kommt immer, wenn Du außerhalb B1:B4 was änderst. Damit nicht mehr:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim bereich As Range
Set bereich = Range("B1:B4")
If Not Intersect(Target, bereich) Is Nothing Then
For Each zelle In bereich
If zelle <> zelle.Offset(0, -1) Then Exit Sub
Next
Else
Exit Sub
End If
MsgBox ("Datensatz schon vorhanden !")
Target.Select
End Sub


Gruß
Volker
Anzeige
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 10:37:29
Thomas Flach
https://www.herber.de/bbs/user/19984.xls
hmmm und wie soll ich das jetzt hier anwenden ? irgend wie wenn ich das anpasse funktioniert das nicht!
Wenn "B3 Verantw.:" + "C3 Prio.:" gleich sind darf "G3 Start (Wo):" nicht auch noch gleich sein. Wenn B3 und C3 gleich sind G3 aber nicht dann darf es gehen. Nun soll das ganze aber über den ganzen bereich so sein, wie macht man das mit SPALTE() ??
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 10:52:02
Volker
Tja, das macht die Sache etwas komplizierter.
Als ich das Bsp. gemacht hab, bin ich davon ausgegangen, dass die Datensätze in Spalten, nicht in Zeilen stehen.
Wenn ich das richtig sehe, darf im gesamten sheet kein Datensatz identisch sein, auch nicht, wenn die Pedenz unterschiedlich ist.
Und Änderungen können irgendwo auf dem Blatt bezügl. Verantworlichem, Prio oder Startwoche passieren.
Also muß man bei jeder Änderung alle Datensätze durchforsten, Stimmts?
Dafür ist das Bsp. natürlich zu starr.
Gruß
Volker
Anzeige
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 11:00:01
Thomas Flach

Die Datei https://www.herber.de/bbs/user/19987.xls wurde aus Datenschutzgründen gelöscht

Ich hoffe du verstehst was ich meine! eigentlich hast du es richtig beschrieben bei deinem letzten post!
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 12:50:31
Volker
Hallo Thomas,
hab schon mal vorgearbeitet.
Probiermal, ob es paßt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim bereich, zelle As Range
Dim spalte, akt_zeile, zeilen As Integer
akt_zeile = Target.Row
spalte = Target.Column
zeilen = UsedRange.Rows.Count
If Cells(akt_zeile, spalte) = "" Then Exit Sub
Select Case spalte
Case 2
Set bereich = Range(Cells(1, spalte), Cells(zeilen, spalte))
bereich.Select
For Each zelle In bereich
If zelle = Target And zelle.Offset(0, 1) = Target.Offset(0, 1) And zelle.Offset(0, 5) = Target.Offset(0, 5) And zelle.Row <> akt_zeile Then
GoTo warnung
End If
Next
Case 3
Set bereich = Range(Cells(1, spalte), Cells(zeilen, spalte))
For Each zelle In bereich
If zelle = Target And zelle.Offset(0, -1) = Target.Offset(0, -1) And zelle.Offset(0, 4) = Target.Offset(0, 4) And zelle.Row <> akt_zeile Then
GoTo warnung
End If
Next
Case 7
Set bereich = Range(Cells(1, spalte), Cells(zeilen, spalte))
For Each zelle In bereich
If zelle = Target And zelle.Offset(0, -5) = Target.Offset(0, -5) And zelle.Offset(0, -4) = Target.Offset(0, -4) And zelle.Row <> akt_zeile Then
GoTo warnung
End If
Next
End Select
Exit Sub
warnung:
MsgBox ("Datensatz schon vorhanden !")
zelle.Select
End Sub


Gruß
Volker
Anzeige
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 13:10:57
Thomas Flach
Irgend wie verstehe ich nicht ganz wie ich das jetzt auf mein FIle anwenden kann, ich habe es ein wenig angepasst als es nicht funktionierte aber auch das ging nicht !?
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 13:31:13
Volker
Hi Thomas,
keine Ahnung, was Du da noch anpassen willst.
Hab den Code für Deine Originaldaten gemacht.
Guckst Du Bsp.
Das Modul1 im Projekt kannst Du rausschmeißen, da hab ich nur rumgespielt.
https://www.herber.de/bbs/user/19995.xls
Gruß
Volker
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 13:37:56
Thomas Flach
Hallo Volker
Ich habe meinen Fehler gefunden. Danke dir vielmals funktioniert einwandfrei. Nur jetzt habe ich noch das Problem mit den dynamischen Inhalten anpassen, also wenn ich eine neue Reihe einfüge dann wird sie nicht in der "tabelle" upgedated! wie kann ich das noch lösen ? Also meine zweite Frage die ich am Anfang gestellt habe !
Anzeige
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 13:55:08
Volker
Ok, also hier mal exemplarisch die Formel in Zelle B3
in C3 entsprechend anpassen und so weit runterziehen, wie maximal neue Aufgaben kommen können. Meinetwegen auch bis Zeile 65535.
=WENN(Pendenzen!C4="";"";Pendenzen!C4)
Eine VBA Lösung, die Dir autom. neue Einträge generiert, ist mir jetzt zu aufwändig.
Wenn Dich leere Zellen mit Rahmen stören, laß die Rahmen nur anzeigen, wenn die Zellen nicht leer sind. (bedingte Formatierung)
Gruß
Volker
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 14:48:08
Thomas Flach
Komisch jetzt funktioniert das mit dem ausfüllen nicht mehr :( da ich leider kein vba kann weiss ich nicht was ich jetzt ändern soll!?
https://www.herber.de/bbs/user/19999.xls
cool file 19999 ;)
Anzeige
AW: Bestimmte Felder dürfen nicht ausgefüllt werde
22.03.2005 15:55:24
Volker
kein Wunder, Du hast links eine leere Spalte eingefügt.
jetzt geht's wieder.
Wenn Du verstehen willst, was passiert, setz mal einen Haltepunkt (link neben die Zeile klicken) in den Anfang des Codes und geh mit F8 schrittweise.
Wenn Du mit dem Cursor über eine Variable gehst, wird ihr Wert angezeigt.
Beschreibung: Das WorksheetChange-Ereignis wird ausgelöst, wenn sich irgendwas im Blatt ändert. Target repräsentiert den geänderten Range.
Target.Row/Column dessen Spalten-/Zeilenindex. (Spalte A=1, B=2 usw.)
Wenn Target leer ist oder außerhalb der Spalten C,D oder H, passiert nichts.
Sonst wird jede Zelle der entsprechenden Spalte durchsucht und, wenn alle Daten gleich sind UND es sich um eine andere Zeile als die von target handelt, die Messagebox angezeigt.
Da die Spaltenindizes in der SelectCase-Anweisung hart kodiert sind
(Case 3,Case 4,Case 8), klappt es natürlich nicht mehr, wenn die Daten plötzlich in anderen Spalten stehen.
Zuletzt werden die gleichen Datensätze in der Tabelle markiert.
Gruß
Volker
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige