Makro: Datenüberprüfung-Eingabemeldung

Betrifft: Makro: Datenüberprüfung-Eingabemeldung
von: NicSteel
Geschrieben am: 26.09.2020 18:36:44
Liebe Excelfreunde,
ich habe mal wieder ein Problem - es wäre nett, wenn ihr mir bei der Lösung helfen würdet ...
Hintergrund: Mein Datensatz besteht aus 1.000 Zeilen mit 60 Spalten. Die Zellfarbe einiger Zellen markiere ich mittels Makro (spielt jetzt keine Rolle). Dann verkleinere ich die Ansicht auf 10%, um anhand der Zellfarben irgendwelche Trends zu erkennen. Ich möchte dann mitten in den Datensatz klicken - und Information über genau diese Zelle erhalten. Diese Informationen befinden sich:
in der gleichen Zeile in Spalte C (Zeit)
in der gleichen Spalte in Zeile 5
in der gleichen Spalte in Zeil 6.
Im Forum habe ich gesucht und bin auf einen Hinweis von Hajo_Zi gestoßen. Der war sehr hilfreich: nämlich einfach die
"Datenüberprüfung mit Eingabemeldung" in einem Makro verwenden. Das habe ich dann mit einer for-Schleife getan und war auch erfolgreich (mit 10 Zeilen und 15 Spalten): Beim Klicken in eine Zelle werden alle Information richtig angezeigt.
Beim Start des Makros mit 60.000 Zellen hängt sich Excel aber auf!
Meine nächste Idee war: nicht alle 60.000 Zellen von vornherein mit dem Makro zu bearbeiten, sondern wirklich nur die gerade ausgewählte Zelle. Das mache ich mit dem
"Private Sub Worksheet_SelectionChange(ByVal Target As Range)" - Ereignis im Worksheet-Modul.
Aber das funktioniert nicht !
Die Datei habe ich hochgeladen:
https:// _
www.herber.de/bbs/user/140458.xlsm
Und hier der Code, vielen Dank schonmal:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim t As Long
Dim j As Long
Dim s As Long
Dim ersteZeit As Long
Dim letzteZeit As Long
Dim erstePlatte As Long
Dim letztePlatte As Long
ersteZeit = 7
letzteZeit = 20
erstePlatte = 1
letztePlatte = 4
'ausgeschlossener Bereich
If Target.Rows < ersteZeit Or Target.Rows > letzteZeit Then
If Target.Column < (5 * erstePlatte - 1) Or Target.Column > (5 * letztePlatte + 3) Then
Exit Sub
End If
End If
'aktiver Bereich
For t = ersteZeit To letzteZeit
For s = erstePlatte To letztePlatte
For j = (5 * s - 1) To (5 * s + 3)
If Target.Rows = t Then
If Target.Column = j Then
With Cells(t, j).Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop,_
Operator:= xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = "Information zur Zelle"
.ErrorTitle = ""
.InputMessage = vbCrLf & "Zeit: " & CDate(Cells(t, 3).Value) &_
vbCrLf & "Shelf: " & s & vbCrLf & "Position: " & Cells(5, j) &_
vbCrLf & "Thermoelement: " & Cells(6, j)
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End If
Next j
Next s
Next t
End Sub

Betrifft: AW: Makro: Datenüberprüfung-Eingabemeldung
von: Dieter Klemke
Geschrieben am: 26.09.2020 18:47:38
Hallo NicSteel,
du solltest "Target.Rows" durch "Target.Row" ersetzen, dann scheint es zu funktionieren.
Viele Grüße
Dieter

Betrifft: AW: Makro: Datenüberprüfung-Eingabemeldung
von: NicSteel
Geschrieben am: 26.09.2020 19:11:48
... Mensch Dieter:
Du bist ja echt 'ne Wucht !
Genau das wars - vielen Dank an dich.
Viele Grüße,
NicSteel

Betrifft: AW: Makro: Datenüberprüfung-Eingabemeldung
von: onur
Geschrieben am: 26.09.2020 18:54:21
Ich verstehe nicht, was dein Problem mit Datenüberprüfung zu tun hat!
Guckst du hier:
https://www.herber.de/bbs/user/140459.xlsm

Betrifft: AW: Makro: Datenüberprüfung-Eingabemeldung
von: NicSteel
Geschrieben am: 26.09.2020 19:21:00
Hallo onur,
mit der Funktionalität der
Datenüberprüfung können die verlinkten Infos angezeigt werden - zwar etwas umständlicher, dafür aber "schöner".
Dein Ansatz ist noch viel einfacher, super Tip mit der MsgBox !
Nachdem mich Dieter auf den Synthaxfehler hingewiesen hat, bleibe ich aber lieber bei meiner ursprünglichen Methode mit der der
Datenüberprüfung: hier muss ich nicht jedes mal mit dem "
ok-Button" die Infos wegklicken.
Also: vielen Dank auch dir !
NicSteel