Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten Top
#2
Hi Felix,

(15.06.2016, 12: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.
Antworten 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
Antworten Top
#4
Hi,

(15.06.2016, 12: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
Antworten 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
Antworten 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
Antworten 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
Antworten 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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten 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.
Antworten Top


Gehe zu:


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