Registriert seit: 19.04.2016
Version(en): 2010
Hallo,
ich habe den Bereich K5:AAB5000. Dieser soll überwacht werden. Wenn in diesem Bereich etwas geschrieben oder eingefügt wird soll in Spalte I der jeweiligen Zeile "ja" geschrieben werden.
Dies habe ich so gelöst:
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("K5:AAB5000")) Is Nothing Then
Cells(Target.Row, 9) = ("ja")
End If
End Sub
Jetzt ist das Problem dabei, dass nur "ja" geschrieben wird, wenn man tatsächlich etwas mit der Hand eingibt. Wenn ich mehrere Werte gleichzeitig einfügen will, wird nur in die erste Zeile das "ja" geschrieben. die anderen bleiben leer.
Hätte jemand eine Lösung für dieses Problem?
Bei Rückfragen versuche ich so schnell wie möglich zu antworten.
Viele Grüße
Feliweb
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi Felix,
(15.06.2016, 13:18)FelixWeb schrieb: Hätte jemand eine Lösung für dieses Problem?
versuche mal dieses ungetestete Makro:
Code:
Option Explicit
Private Sub Zellen_voll()
Dim i as Integer
For i = 5 to 5000
If Range("K" & i & ":AAB" & i) <>"" Then
Cells(i, 9) = ("ja")
End If
Next i
End Sub
Makro starten, nachdem die Zellen ausgefüllt sind.
Registriert seit: 19.04.2016
Version(en): 2010
15.06.2016, 13:50
(Dieser Beitrag wurde zuletzt bearbeitet: 15.06.2016, 14:00 von FelixWeb.)
Hey Ralf,
danke für die schnelle Antwort.
Habe das
Option Explicit
Private
weggelassen, weil ich sonst das Makro nicht auswählen konnte.
Erhalte dann aber den Fehler:
Laufzeitfehler 13: Typen unverträglich
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi,
(15.06.2016, 13:50)FelixWeb schrieb: Erhalte dann aber den Fehler:
Laufzeitfehler 13: Typen unverträglich
vielleicht so?
Code:
Option Explicit
Sub Zellen_voll()
Dim i As Integer
For i = 5 To 5000
For Spalte = 2 To 703 ' Spalte B bis AAB
If Cells(i, Spalte) <> "" Then
Cells(i, 9) = ("ja")
End If
Next Spalte
Next i
End Sub
Wobei das Makro in jeder Zeile, in der in I was steht in I was eintragen wird!
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28
• FelixWeb
Registriert seit: 19.04.2016
Version(en): 2010
Hey Ralf,
das funktioniert vielen Dank.
Ich war irgendwie auf die Idee verseift, dass es mit einem Makro gehen muss, weil ich diese andere Lösung gefunden hatte und mir die direkte Version (also ohne das Makro auszulösen) sehr gefallen hat.
Durch deine Idee ist mir erst die wohl einfachste Variante eingefallen:
in I5
=WENN(ANZAHL(K5:AAB5)=0;"";"ja")
Aber trotzdem vielen Dank für deine Mühe, an diesem einfachen Beispiel konnte ich jetzt auch endlich mal richtig verstehen wie VBA-Schleifen funktionieren. War also doch für etwas gut :)
Viele Grüße
Felix
Registriert seit: 11.04.2014
Version(en): Office 2007
Auch Hallo,
es ist zwar gelöst, möchte aber meinen Vorschlag dennoch posten.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("K5:AAB5000")) Is Nothing Then
Application.EnableEvents = False
Cells(Target.Row, 9).Resize(Target.Rows.Count) = ("ja")
Application.EnableEvents = True
End If
End Sub
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 19.04.2016
Version(en): 2010
Hey Stefan,
danke für deinen Vorschlage. Ich habe es aus Interesse noch einmal ausprobiert, allerdings passiert gar nichts bei deinem Code?!
VG
Felix
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
16.06.2016, 16:44
(Dieser Beitrag wurde zuletzt bearbeitet: 16.06.2016, 16:45 von Käpt'n Blaubär.)
Hallo Felix,
Zitat:Ich habe es aus Interesse noch einmal ausprobiert, allerdings passiert gar nichts bei deinem Code?!
... und wo legst Du diese Makros ab, die so oder so ähnlich beginnen?
Zitat:Private Sub Worksheet_Change(ByVal Target As Range)
... und wieso bist Du der Auffassung, Du kannst da irgendwas einfach wegschneiden und dann laufen die Dinger trotzdem?
denn solche Aussagen machen neugierig
Zitat:Habe das
Option Explicit
Private
weggelassen, weil ich sonst das Makro nicht auswählen konnte.
Registriert seit: 19.04.2016
Version(en): 2010
ah ja, habs kapiert. Ich muss bei dieser Lösung das Makro gar nicht auslösen - es überwacht den Bereich ja ständig....
Habe ja gedacht, dass ich das Makro über Alt+F8 auswählen muss, mit dem anderen Kopf war es dort eben nicht, deshalb ich es gelöscht. Ich bin noch VBA-Anfänger und habe das in dem Moment übersehen. Such dann aber auch weiter selbst nach Lösungen. Ich nehme mal aus, dass auch bei den Lösungsvorschlägen auch mal Fehler vorkommen und habe deshalb rumprobiert...
Danke für den Code Stefan. Allerdings bleibe ich bei der Formel. Das Problem bei deinem Code ist, dass wenn man eine Eingabe gemacht hat und es anschließend wieder löscht, steht das "ja" immer noch da. Trotzdem Danke.