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.

Problem mit Range Methode
#11
Hallo Frank,

nenne die Prozedur in
Private Sub Workbook_SheetActivate(ByVal Sh As Objekt)
um und lege sie statt hinter das Tabellenblatt hinter "DieseArbeitsmappe"-
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#12
wieso in Sheet_Activate?    die läuft nur einmal und nicht bei jedem Eintrag.

@FrankyHB 

die Prozedur funktioniert für alle Sheets außer Tabelle3.  Sofern dies andern Sheets auch gleich aufgebaut sind. d.h. in Spalte F wird der Urlaub markiert.
Antworten Top
#13
Ich habe die Prozedur jetzt in jedem Arbeitsblatt hinterlegt



Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub

    If Target.Column <> 6 Then Exit Sub

    Application.EnableEvents = False

    If Target.Value = "U" Then Target.Offset(, -1) = 8

    If Target.Value = "K" Then Target.Offset(, -1) = 7.8

    If Target.Value = "A" Then Target.Offset(, -1) = ""

    If Target.Value = "" Then Target.Offset(, -1) = ""

    Application.EnableEvents = True

End Sub





Es funktioniert !!!



Dafür schon mal vielen Dank an euch alle !



Jetzt bin ich am überlegen wie ich es hinbekomme wenn in Spalte 6 "A"  oder "" steht, das auch die Inhalte der Spalten B, C, und D gellöscht werden



mit

If Target.Value = "A" Then Target.Offset(, -1) = "" And Target.Offset(, -2) = "" And Target.Offset(, -3) = "" And Target.Offset(, -4) = ""

klappt es leider nicht.



bzw. wie ich diese Rechenoption in VBA umsetzen kann


=WENN(ODER(F6="u";F6="su");$H$3;WENN(UND(F6<>"";F6<>"A";F6<>"KuA_halb";F6<>"W");$D$4;WENN(G6<0;(C6-B6)*24-D6+24;(C6-B6)*24-D6)+WENN(F6="KuA_halb";$D$4/2;0+WENN(F6="W";$H$4))))


Lieben Gruss Frank
Antworten Top
#14
Hallo Frank

wie ich sehe hat es da viele Antworten gegeben.  Schaue gerade mal wieder ins Forum rein und habe auch eine Lösung parat.
Die 1. Variante dürfte dir bekannt sein, nur eine andere Schreibweise statt AND. Mit AND klappt das nicht!! Aber mit einzlenen Offsets.
Die 2. Variante benutzen VBA Fortgeschrittene weil die Schreibweise kürzer ist. Cells(Target.Row, 2) ist Spalte B in der Target Zeile.
Mit Resize(1, 3) erweitere ich den Bereich um 3  Spalten nach rechts. Das ist alles. Beides funktioniert. Jeztzt hast du freie Auswahl.

mfg Gast 123

Code:
'1.Variante so:
If target.Value = "A" Or target.Value = "" Then
   target.Offset(, -1) = ""
   target.Offset(, -2) = ""
   target.Offset(, -3) = ""
   target.Offset(, -4) = ""
End If


'oder 2.Variante so:
If target.Value = "A" Or target.Value = "" Then
   Cells(target.Row, 2).Resize(1, 3) = ""
End If

Nachtrag   Sorrry das ich dich nicht darauf aufmerksam gemacht habe die Punkt vor Range und Cells zu löschen. Das ist für Progammierer so selbstverständlich das ich nicht mehr daran gedacht habe dich als Anfänger darauf aufmerksam zu machen.  Die Formel ist mir zu hoch!
Antworten Top
#15
Das klappt leider nicht, es wird dennoch nur der Wert aus Spalte 5 gelöscht.
Antworten Top
#16
(12.01.2022, 15:17)FrankyHB schrieb: schlaue Sprüche sind hier nicht gefragt sondern Lösungen.
Dann nennen wir es doch einfach mal schlaue Lösungen …
Zitat:Wenn du nichts sinnvolles zu dem Problem beitragen kannst dann halte dich raus und stiehl nicht unsere Zeit.

Mit Verlaub:
Ich dachte immer, dass der Fragende die Zeit der Helfer "stiehlt".
Da die das aber freiwillig machen, sollte man es eher borgen nennen.
Borgen deshalb, weil ein Forum keine Einbahnstraße ist, sondern sicherlich auch von Dir bald wertvolle Tipps an andere Fragende gegeben werden.

Und jetzt zum Thema:
Statt eine simple Formel einzutragen, machst Du hier auf schlau und willst mit Macht VBA ins Spiel bringen.
Ich verrate Dir noch etwas:
Der Vorschlag von Klaus-Dieter war der einzig wirklich zielführende!
Mache eine Jahresliste, filtere sie bei Bedarf nach Monat und nutze Formeln, die auf TEILERGEBNIS() basieren!
(zur simpelsten WENN- oder VERWEIS-Formel schreibe ich erst gar nix, weil Du ja lieber durch Zellen iterierst)

Zitat:Alles klar?!

Das will ich doch hoffen!
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 2 Nutzer sagen Danke an RPP63 für diesen Beitrag:
  • shift-del, NobX
Antworten Top
#17
Hallo Gast 123,

vielen Dank nochmals, jetzt läuft es so wie gewünscht.

ich habe aber noch eine Frage, kann ich anstelle eines festen Wertes auch auf den Inhalt einer Zelle zugreifen?

If Target.Value = "U" Then Target.Offset(, -1) = 7.8

also etwa so

If Target.Value = "U" Then Target.Offset(, -1) = ("A2")

Gruss Frank
Antworten Top
#18
 Target.Offset(, -1) = ("A2")
 Target.Offset(, -1).value= [A2]
 Target.Offset(, -1).value = Range("A2").value
 Target.Offset(, -1).value= cells(2,1).value

Aber mal ganz ehrlich. Ich dachte du wärest über solche Fragen schon hinaus. 
Antworten Top
#19
Leider bin ich über solche Fragen noch nicht hinaus.

Aber an jeder Aufgabe wächst man ja bekanntlich  Smile

Aber vielen Dank nochmals.

Gruss Frank
Antworten Top
#20
(13.01.2022, 10:12)FrankyHB schrieb: Leider bin ich über solche Fragen noch nicht hinaus.

Aber an jeder Aufgabe wächst man ja bekanntlich  Smile

Ja klar: https://www.clever-excel-forum.de/Thread...#pid216752
Antworten Top


Gehe zu:


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