Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
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
Inhaltsverzeichnis

Wenn in Zelle x dann

Wenn in Zelle x dann
09.12.2020 19:10:31
ponny
Hi zusammen,
da ich nun sehr lange bei einem Problem hänge und wohl auf der Leitung stehe erhoffe ich mir hier einen scharfen Blick eines Profis, der mir eventuell weiterhelfen kann :)
Ich habe folgendes Problem.
Ich habe in der Spalte "X" ab der Zeile "40" Werte stehen. Diese möchte ich in einem Menü vorselektieren können.
Sprich in der Zelle
"n30" entspricht 0 bis 2
"n31" entspricht 2.1 bis 4
"n32" entspricht 4.1 bis 7
"n33" entspricht ALLE
Wenn sich nun ein Wert in der Spalte "X" ändert und ein Bereich ausgewählt ist, soll in der Spalte "Y" in der zugehörigen Zeile sich auch der Wert ändern.
Irgendwie klappt es zwar wenn ich es mit nur einer Zeile probiere, wenn ich jedoch den Bereich von Zeile 40 bis 139 nehme, hängt sich mein Excel auf.
Hat jemand eine Idee?
Danke schon mal im Voraus.
lg ponny
folgenden Code hätte ich aktuell:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim e As Object
For Each e In Sheets("Ishikawa (2)").Range("x40:x139" & Cells(Rows.Count, 25).End(xlUp).Row)
If e.Value 

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn in Zelle x dann
09.12.2020 19:20:35
ralf_b
was fällt dir auf?

.Range("x40:x139" & Cells(Rows.Count, 25).End(xlUp).Row)
.Range("x40:x" & Cells(Rows.Count, 25).End(xlUp).Row)
.Range("x40:x139")
und
If e.Value 

ups update
09.12.2020 19:22:09
ralf_b
nicht spalte w e.offset(,-1).value = "þ"
sondern spalte y e.offset(,1).value = "þ"
AW: Wenn in Zelle x dann
09.12.2020 19:52:31
ponny
ahh... habe die Spalte darunter und nicht darüber.
okay, das wäre der erste fehler, danke :)
aber beim Rest steh ich irgendwie trotzdem auf der Leitung, und dabei habe ich nur einen Bereich in der Schleife :S

Dim e As Object
For Each e In Sheets("Ishikawa (2)")
.Range ("x40:x139" & Cells(Rows.Count, 25).End(xlUp).Row)
If e.Value 

Anzeige
AW: Wenn in Zelle x dann
09.12.2020 20:10:47
ponny
also sagen wir so, es funktioniert, aber er schreibt mir den Wert dann bis in Y139139 :S
AW: Wenn in Zelle x dann
09.12.2020 20:26:46
ponny
Hallo Ralf :)
Also im prinzip hätte ich es jetzt für die Bereiche erweitert und es würde auch funktionieren, also bis Zelle Y139, leider aber fügt es danach "þ" bis in Zelle Y139139 ein :S
Private Sub CommandButton2_Click()
Dim e As Object
For Each e In Sheets("Ishikawa (2)").Range("x40:x139" & Cells(Rows.Count, 24).End(xlUp).Row)
If e.Value  2 And e.Value  4 And e.Value 

AW: Wenn in Zelle x dann
09.12.2020 23:28:27
ralf_b

Y139139 

das kommt davon wenn man an einen Bereich noch eine Zahl dran schreibt.
https://www.herber.de/bbs/user/142198.xlsm
Anzeige
AW: Wenn in Zelle x dann
09.12.2020 23:58:08
ponny
Wie soll ichs sagen... DANKE :)
und nur damit ich es verstehe, du meintest nach dem Range nochmals die Spalte
"& Cells(Rows.Count, 24).End(xlUp).Row)"
angegeben zu haben hat die irrsinns Zeilen verursacht?
Dachte ich benötige diese Infos, damit es auch immer um eine Zeile wechselt :S
PS: danke für die Auswahl, das mit der Adressierung wäre ich wohl nie gekommen.
lg
AW: Wenn in Zelle x dann
10.12.2020 06:34:38
Werner
Hallo,
jetzt noch mal ganz langsam:
Du gibst als Zellbereich an: Range("X40:X139"
Dann ermittelst du mit ...Cells(Rows.Count, 24).End(xlUp).Row
die letzte belegte Zeile in Spalte X und das ist Zeile 139
Und das wird durch dein & (Range("X40:X139" & Cells(Rows.Count, 24).End(xlUp).Row)) hängst du die ermittelte letzte Zeile an die Range einfach hinten an. Und das ergibt nun mal Rang("X40:X139139")
Und hier jetzt noch mal der Code von Gerd.
Private Sub CommandButton2_Click()
Dim Zelle As Range, Zeile As Long
Sheets("Ishikawa (2)").Unprotect
For Each Zelle In Range("X40:X" & Cells(Rows.Count, "X").End(xlUp).Row)
Select Case Zelle.Value
Case 0 To 2: Zeile = 30
Case Is  7: Zeile = 33
End Select
Zelle.Offset(0, 1) = Range("N" & CStr(Zeile)).Value
Next
Sheets("Ishikawa (2)").Protect
End Sub
Gruß Werner
Anzeige
AW: Wenn in Zelle x dann
10.12.2020 08:51:32
ponny
Guten Morgen Werner,
jetzt hab ichs verstanden und auch die Zahl erst richtig gelesen.
Also doppelt gemoppelt, oder wie man da sagt.
Danke dir. war wohl schon zu sehr auf den Code fixiert gewesen dass ich es nicht erkannt habe.
Mal sehen ob ich heute mehr weiter bringe.
Danke:)
Gerne u. Danke für die Rückmeldung. o.w.T.
10.12.2020 10:06:29
Werner
AW: Wenn in Zelle x dann
10.12.2020 11:10:47
ponny
Hi,
also ich habe mal alles auf mein offizielles Sheet angepasst und eigentlich funktioniert es soweit, nur bis auf den "lieben" Blattschutz.
Die Doppelklickfunktion im Auswahlbereich N30..N33 funktioniert, nur für Y40..Y139 kommt immer eine Blattschutzfehlermeldung. (es funktioniert zwar auch, aber mit Fehlermeldung).
Der Code ist doch selbiger, warum einmal mit und einmal ohne Fehler?
Was übersehe ich denn hier?
Danke
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.EnableEvents = False
If Not Intersect(Target, Range("Y40:Y139")) Is Nothing Then
If Target = "¨" Then
Target = "þ"
Else
Target = "¨"
End If
'Auswahl der Berwertungsbereiche
'Markeiren welche Zeilen Kopiert werden sollen mittels Doppelklick
ElseIf Not Intersect(Target, Range("N30:N33")) Is Nothing Then
If Target = "¨" Then
Target = "þ"
Else
Target = "¨"
End If
If Target.Address(0, 0) = "N33" Then
If Range("N33") = "þ" Then
Range("N30:N32") = "þ"
Else
Range("N30:N32") = "¨"
End If
End If
'Auswahl für 5W über Menü (Wenn "alle" dann alle 3 Bereiche markieren))
Cancel = True
End If
Application.EnableEvents = True
End Sub

Anzeige
AW: Wenn in Zelle x dann
10.12.2020 11:36:42
ralf_b
ich sehe kein unprotect und protect
AW: Wenn in Zelle x dann
10.12.2020 11:42:53
ponny
Hi
..und trotzdem funktioniert es bei N30:N33 und bei Y40:Y139 funktioniert es nur mit einer Fehlermeldung.
"Die Zelle oder das Diagramm, die bzw. das Sie ändern möchten, befindet sich auf einem schreibgeschütztem Blatt. Um eine Änderung vorzunehmen, heben Sie den Schutz des Blatts auf. Möglicherweise werden Sie aufgefordert, ein Kennwort einzugeben."
sehe nur keinen Unterscheid?
danke
AW: Wenn in Zelle x dann
10.12.2020 11:45:35
ponny
Hi
..und trotzdem funktioniert es bei N30:N33 und bei Y40:Y139 funktioniert es nur mit einer Fehlermeldung.
Userbild
"Die Zelle oder das Diagramm, die bzw. das Sie ändern möchten, befindet sich auf einem schreibgeschütztem Blatt. Um eine Änderung vorzunehmen, heben Sie den Schutz des Blatts auf. Möglicherweise werden Sie aufgefordert, ein Kennwort einzugeben."
sehe nur keinen Unterscheid?
danke
Anzeige
ach ja....
10.12.2020 11:54:21
Werner
Hallo,
...und wir können das jetzt anhand des Bildchens sehen, woran es liegt?
Gruß Werner
AW: Wenn in Zelle x dann
10.12.2020 11:55:54
Werner
Hallo,
und ich dachte bei Alle (N33) soll der komplette Bereich Y40-Y139 markiert werden?
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.EnableEvents = False
ActiveSheet.Unprotect
If Not Intersect(Target, Range("Y40:Y139")) Is Nothing Then
Cancel = True
Target = IIf(Target = "¨", "þ", "¨")
End If
If Not Intersect(Target, Range("N30:N33")) Is Nothing Then
Cancel = True
Target = IIf(Target = "¨", "þ", "¨")
End If
If Target.Address(0, 0) = "N33" Then
Cancel = True
Range("N30:N32") = IIf(Target = "þ", "þ", "¨")
Range("Y40:Y139") = IIf(Target = "þ", "þ", "¨")
End If
ActiveSheet.Protect
Application.EnableEvents = True
End Sub
Gruß Werner
Anzeige
AW: Wenn in Zelle x dann
10.12.2020 12:07:03
ponny
Im Prinzip funktionirt es ja, und ist selbiges File, welches bereits online ist.
Gerne hier nochmals das File:
https://www.herber.de/bbs/user/142210.xlsm
Man soll eine VOrauswahl treffen können und auch zusätzlich in der Spalte Y händisch einzelne dazu anwählen können. Was auch klappt, jedoch mit einer Blattschutzfehlermeldung und bei N30:N33 ohne Fehlermeldung.
AW: Wenn in Zelle x dann
10.12.2020 12:17:07
Werner
Hallo,
wozu postet man dir eigentlich Code, wenn du ihn dann nicht benutzt?
Gruß Werner
AW: Wenn in Zelle x dann
10.12.2020 12:29:01
ponny
Hallo Werner,
weil ich 2 Versionen bekam und auch beide probiert hatte.
Und bei der von Ralph hängen geblieben bin, da ich für mein eigentliches File, (indem sich ja weit mehr Daten befinden) am wenigsten anpassen musste.
Ich muss auch jedesmal ein neues Testfile erstellen, damit ich ein Bsp hochladen kann, da ich aus Datenschutz leider nicht die originalfassung hochladen kann.
Und bez. dem Problem ist es ja unabhängig ob dieser oder dein Code, da es ja rein um den Blattschtz geht. Der mir so und so bei anderen Punkten auch noch Probleme bereitet, wie Bilder einfügen usw. :S aber das ist dann eine Baustelle zum Schluss.
Erst muss ich noch Daten von einer anderen Tabelle in diese Form übernhemen, welche nach Bearbeitung wieder exportiert werden. hoffe das bekomme ich ohne Hilfe hin :S :)
Jedoch wäre es nett zu wissen warum ich bei der einen Auswahl keinen Fehler bekomme und bei der anderen leider schon :S
danke
Anzeige
AW: Wenn in Zelle x dann
10.12.2020 13:30:25
ralf_b
Hallo Werner alias Ponny,
viel Köche verderben den Brei. Aber viele Wege führen nach Rom. Wessen Variante möchtest du den weiterverfolgen?
ich habe dir noch ein paar Sachen angepasst.
der Fehler bei der Auswahl in der X Spalte lag bei meinem Code am Cancel = true
Du kannst jetzt den Button "Ausführen" weglassen.
Die Änderungen werden übernommen sobald du in N30-N33 etwas änderst.
https://www.herber.de/bbs/user/142216.xlsm
AW: Wenn in Zelle x dann
10.12.2020 14:11:12
ponny
Hallo Ralf,
du bist der Beste :)
Wie geil ist, das.
Ich hab das auch mal so ähnlich probiert, aber mit "SelectionChange", aber dann wurde jeder Klick langsam.
Danke sehr kuhle Lösung. :) und zudem kann ich einen Button von der Anzeige entfernen und somit weniger Verwirrung :)
Darf ich dich bei einer weiteren Frage auch zur Hilfe bitten.
Jedoch sollte ich hier wohl einen neuen Beitrag öffnen.
Selbes Files, geht aber ums Kopieren von Zellen.
Das raus kopieren aus der erstellen Auswahl stelle ich mir noch recht einfach vor.
    For sRow = 40 To 139
If Cells(sRow, 25) = "þ"  Then
.Cells(tRow, 1) = Cells(sRow, 1) ' Fehler
tRow = tRow + 1
End If
Next sRow
habs aber noch nicht probiert, da ich erst die Daten aus der Tabelle davor "Ishikawa" aus den einzelnen Zellen in die Tabelle "Ishikawa (2)" zum Bewerten, kopieren möchte.
Wenn ich es mit Range kopiere, dann kopiere ich mir alle leeren Felder mit, was etwas unübersichtlich wird...
aber hier ist wohl ein eigener Betrag besser :)
Danke nochmals :)
Anzeige
AW: Wenn in Zelle x dann
10.12.2020 14:25:29
ralf_b
je besser die Problembeschreibung, desto besser die Lösung.
welcher Bereich soll wohin?
Welcher Bedingungen sind zu beachten. usw.
Beispieldatei zum Testen. Muß ja nicht deine ganze Mappe sein.
Wieso müssen die Daten zum Bewerten kopiert werden? Kann man die nicht auch mit einem Verweis
holen?
gruß
RB
AW: Wenn in Zelle x dann
10.12.2020 14:36:00
ponny
passt, erstelle gleich einen neuen Beitrag.
Verweis hatte ich auch schon in verwendung, jedoch wenn ich dann sortiere, dann passt das alles vonr und hinten nicht mehr zusammen, weil ich ja leerzweilen vermeiden möchte
danke
AW: Wenn in Zelle x dann
09.12.2020 20:30:59
GerdL
Moin,
meinst du sowas?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range, Zeile As Long
Application.EnableEvents = False
For Each Zelle In Intersect(Target, Range("X40:X139"))
Select Case Zelle.Value
Case 0 To 2: Zeile = 30
Case Is  7: Zeile = 33
End Select
Zelle.Offset(0, 1) = Range("N" & CStr(Zeile)).Value
Next
Application.EnableEvents = True
End Sub

Gruß Gerd
Anzeige
AW: Wenn in Zelle x dann
09.12.2020 20:54:18
ponny
Hi,
habe jetzt ein Bsp hochgeladen, vl hilft dies zum Verständnis. Meines schwindet schon langsam :))
Im markierten Bereich kann man die "Bereiche" auswählen. Aktuell habe ich die Möglichkeit "alle" hinzugefügt, jedoch kann ich jetzt die Bereich nicht mehr einzeln auswählen.
Aber zum Testen egal.
Wählt man dort mittel doppelklick "alle" aus und klickt dann auf den Button "Ausführen" hakt er die jeweiligen Zeilen in Spalte "Y" an.
https://www.herber.de/bbs/user/142196.xlsm
Nur eben leider bis ins Nirvana, oder Y 136...
Hier weiß ich nicht ganz warum er das macht.
lg

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige