Wenn im Bereich etwas geändert wird, dann schreibe in Zelle (mit Einfügen)
#1
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
Top
#2
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.
Top
#3
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
Top
#4
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:
  • FelixWeb
Top
#5
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
Top
#6
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
Top
#7
Hey Stefan,

danke für deinen Vorschlage. Ich habe es aus Interesse noch einmal ausprobiert, allerdings passiert gar nichts bei deinem Code?!

VG

Felix
Top
#8
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.
Top
#9
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.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste