Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
252to256
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
252to256
252to256
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Eingabe begrenzen...(?)

Eingabe begrenzen...(?)
06.05.2003 15:55:30
Joe
Hallo,

wer kann mir bei folgendem Problem helfen? Mir fällt einfach keine Lösung ein.

In der A-Spalte habe ich Werte stehen. Immer 10 gehören zusammen, also A1 - A10, A11-20 usw. Jetzt möchte ich in der B-Spalte immer einen der 10 Werte mit einem x markieren. Wenn ich nun z.B. in B5 ein x setze, dann müssen alle anderen Felder (B1-B4 und B6-B10) gesperrt sein gegen eine Eingabe. Erst ab B11 soll dann wieder eine Eingabe von B11-B20 erlaubt sein. Nach Eingabe des x'es sollen dann die betreffenden Felder wieder gesperrt sein.

Puuh...wie bekomme ich sowas hin? Oder gibt's da etwa schon ein schönes Makro?

Dank' an alle Forums-Mitglieder
Joe

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

Betreff
Datum
Anwender
Anzeige
Re: Eingabe begrenzen...(?)
06.05.2003 17:24:12
Martin Beck

Hallo Joe,

folgende Ereignisprozedur verhindert die Eingabe weitere "x"-e:

Oder sollen sämtliche Eingaben verhindert werden?

Gruß
Martin Beck

Re: Eingabe begrenzen...(?)
06.05.2003 19:13:52
Joe

Nein...ist so absolut perfekt. Vielen Dank auch.

Ich denke mal, wenn immer nur 9 Daten zusammengehören, dann muss ich im Makro nur die 10 durch 9 ersetzen.

Danke
Joe

@ Martin Beck: Hilfe
06.05.2003 20:21:48
Joe

Hallo Martin,

ich muss Dich bitten, mir noch einmal zu helfen. Und zwar bekomme ich das Makro nicht geändert, wenn die x in Spalte H
gemacht werden sollen und zwar ab Reihe 11. Und es gehören immer 9 Werte zusammen, also Reihe 11 bis 19, 20 bis 28 etc.

Kannst Du das Makro noch einmal abändern, dass es so hinhaut.

Vielen Dank von einem verzweifelten
Joe

Anzeige
Re: @ Martin Beck: Hilfe
07.05.2003 09:02:57
Martin Beck

Hallo Joe,

so müßte es gehen:

Gruß
Martin Beck

Re: @ Martin Beck: Hilfe
07.05.2003 10:26:16
Joe

Danke...supernett von Dir.

Habe nämlich leider in Sachen makro nicht so den richtigen Durchblick.

Joe

0.5 ?
07.05.2003 10:52:54
Joe

Eine Frage noch (wie gesagt...bin Makro-Anfänger):

Wozu dient die 0.5 bei Target.Row - ???

Joe

Re: 0.5 ? Erklärung
07.05.2003 12:04:56
Martin Beck

Hallo Joe,

das ist Trick 17 ;-)

Hier erst noch mal der Code:

Und nun die Erklärung:

If Target.Column <> 8 Then Exit Sub

beschränkt die Zulässigkeitsprüfung auf die Spalte H (=8).


Für jede Zelle in Spalte H gibt es nun einen Bereich von 9 Zellen, in denen nur ein x stehen darf. Der Versuch, in diesen Bereich ein weiteres x einzutragen, soll unterbunden werden. Hierzu muß ich zunächst in Abhängigkeit von der markierten Zelle (=Target) den Anfang und das Ende des relevanten Bereichs bestimmen, genauer gesagt: die Zeilennummer der ersten und letzten Zelle.

a = Int((Target.Row - 0.5) / 9) * 9 + 1

bestimmt die Zeilenummer der ersten Zelle. In der ersten Version hieß diese Codezeile noch sinngemäß

a = Int((Target.Row) / 9) * 9 + 1

Nehmen wir mal an die aktuelle Zelle sei H14. Dann ist der relevante Bereich H10:H18. Ich muß also aus der Target.Row (=14) den Wert 10 (für H10) errechnen und in der Variablen a abspeichern.

Schrittweise berechnet das die Codezeile wie folgt:

(Target.Row) / 9 = 14/9 = 1,55

INT(1,55) = 1 (Ganzzahl von 1,55)

1 * 9 + 1 = 10

Das Ergebnis ist also korrekt.

Für die Zelle H18 gibt es allerdings ein Problem. Hier wäre der relevante Bereich ja auch H10:H18. Als Berechnungsergebnis käme allerdings nicht 10, sondern 19 heraus (bitte selbst nachvollziehen). Um das zu korrigieren, muß von Target.Row ein Wert größer Null und kleiner 1 abgezogen werden. Ich habe mich für 0,5 entschieden, andere Werte würden aber genauso funktionieren.


e = a + 8

berechnet aufbauend auf a die Zeilenummer der letzten Zelle im relevanten Bereich.


If Application.WorksheetFunction.CountIf(Range(Cells(a, 8), Cells(e, 8)), "x") > 1 Then

prüft über die Funktion CountIf (entspricht ZÄHLENWENN), ob im relevanten Zellbereich einschließlich des gerade eingegebenen Wertes mehr als ein x vorkommt. Wenn ja, löscht


Target.ClearContents


die aktuelle Eingabe in der markierten Zelle.


HTH

Gruß
Martin Beck


Anzeige
Re: 0.5 ? Erklärung
07.05.2003 13:49:21
Joe

Danke für die ausführliche Erklärung.

ich ernenne Dich zum Forums-Ass!!!

Joe

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige