Office: Else = do nothing?

Helfe beim Thema Else = do nothing? in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen! Ich habe leider überhaupt keine VBA-Grundkenntnisse, benötige jedoch für eine Exceltabelle ein paar Makros. Nun habe ich mit viel... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von PapierStudi, 20. Januar 2014.

  1. Else = do nothing?


    Hallo zusammen!

    Ich habe leider überhaupt keine VBA-Grundkenntnisse, benötige jedoch für eine Exceltabelle ein paar Makros. Nun habe ich mit viel Suchen und Experimentieren enen Code geschrieben, der soweit auch schonmal das tut was er soll. Allerdings gibt es am Ende der Prozedur noch ein paar Schwierigkeiten.
    Wenn in Spalte H (8) "0" eingetragen wird, soll in I-M ebenfalls eine 0 erscheinen. Wenn ich eine andere Zahl eintrage, soll er einfach nichts tun. Soweit so gut - das klappt erstmal. Wenn ich nun aber zuerst eine 0 in H eingetragen habe und das dann nachträglich ändere, dann bleibt die 0 in den anderen Spalten stehen. Was muss ich ihm sagen, damit er gegebenenfalls wieder leere Spalten anzeigt?

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column = 8 Then
    ThisRow = Target.Row
    If Target.Value = 0 Then
    Range("I" & ThisRow).Value = 0
    Range("J" & ThisRow).Value = 0
    Range("K" & ThisRow).Value = 0
    Range("L" & ThisRow).Value = 0
    Range("M" & ThisRow).Value = 0
    Else
    do nothing
    End If
    End If
    End Sub

    Vielleicht ist hierbei noch wichtig zu wissen, dass ich das erstmal in einer Experimentiertabelle ausprobiert habe. Der Code soll später in die echte Tabelle, an der sich in den Spalten I-M Gültigkeitslisten befinden. Diese sollen dann genutzt werden, wenn in Spalte H eine andere Zahl als 0 eingetragen wird. Daher so kompliziert. ;-)

    Lieben Gruß,

    PapierStudi

    :)
     
    PapierStudi, 20. Januar 2014
    #1
  2. Hi,

    das geht auch einfacher...
    Code:
    Vorallem aber... do ist ein Schlüsselwort für eine Schleife. do nothing geht also gar nicht! *wink.gif*
     
  3. Moin
    Code:
    editElse = do nothing? :mad: Ralf: Ich wuerde bei deinem Code Events ein/ausschalten. ;-)
    gruss hary
     
  4. Else = do nothing?

    Hi Hary,

    wäre eine Option... aber bei 5 Spalten, die alle nicht Spalte 8 sind? Trotzdem, gute Anregung!
     
  5. Super! Danke!
    In der experimentiertabelle läuft das schonmal einwandfrei. Nun habe ich nurr noch Schwierigkeiten dabei, es in meine echte Tabelle einzufügen.
    Wenn ich den Code einfach unten drunter einfüge, streikt er und sagt mir "Mehrdeutiger Name Worksheet_change".
    Könnt ihr mir nun noch dabei helfen ihn hier einzubauen? :-)

    Option Explicit

    '** Mehrfachauswahl über DropDown-Liste (Gültigkeitsprüfung)
    '** Einfügen im Code-Container des betreffenden Arbeitsblattes

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngBereich As Range
    Dim wert_old As Variant
    Dim wert_new As Variant

    ' Mehrfachauswahl im definierten Bereich durchführen
    Set rngBereich = Application.Union(Columns("C"), Columns("J:M"), Columns("AJ:AO"), Columns("BH"))

    ' Prüfung, ob mehr als 1 Zelle geändert wurde
    If Target.Count > 1 Then Exit Sub
    ' Prüfung, ob Zelle einen Wert enthält
    If Target.Value = "" Then Exit Sub
    ' Prüfung, ob Zelle im angegebenen Bereich
    If Application.Intersect(Target, rngBereich) Is Nothing Then Exit Sub
    ' enthält geänderte Zelle eine Gültigkeitsprüfung?
    On Error Resume Next
    If Application.Intersect(Target, Cells.SpecialCells(xlCellTypeAllValidation)) _
    Is Nothing Then Exit Sub
    On Error GoTo 0

    ' Daten in Zelle bearbeiten
    Application.EnableEvents = False

    wert_new = Target.Value
    Application.Undo
    wert_old = Target.Value
    Target.Value = wert_new

    If wert_old "" Then
    Target.Value = wert_old & ", " & wert_new
    End If

    Application.EnableEvents = True
    End Sub
     
    PapierStudi, 22. Januar 2014
    #5
  6. Moin
    Du musst auch nur den Teil einfuegen.
    Code:
    @Ralf: Dein Code wirft, ohne Events, einen Fehler raus.
     
  7. Und wo? ^^
     
    PapierStudi, 22. Januar 2014
    #7
  8. Else = do nothing?

    Moin
    Ich bau die Datei nicht nach, aber probier mal.
    Code:
    gruss hary
     
  9. An der Stelle ignoriert er den Code einfach nur...
     
    PapierStudi, 22. Januar 2014
    #9
  10. \@ Hary,

    kann es ein, dass Du meinen Code mit Papierstudies Code verwechselst?
    Ohne EnableEvents wird er ja, bedingt durch den verbundenen Bereich, exakt einmal mehr aufgerufen. Bin mir nicht sicher, ob das Ein- und Ausschalten der Events da einen tatsächlichen Gewinn bringt...

    @Papierstudy

    besagt nichts anderes, dass Du schon eine Prozedur dieses Namens hast. Es darf nur eine davon geben. Und zwar die für das betreffende Blatt. Solltest Du eine Prozedur mit diesem Code in einem anderen Modul haben, dann musst Du sie (die externe Prozedur) im "Worksheet_change" Ereignis des auslösenden Blatts aufrufen. Mit Übergabe des Blattnamens und der Zelladresse.
     
  11. Und noch eine Frage:

    Du schreibst:
    Cells(Target.Row, 9).Resize(1, 5).Value = IIf(Target = 0, 0, "")

    Bedeutet das, dass er nun ab Zeile 9 neu zählt und die darauffolgenden 5 Spalten wählt? Da ich nämlich weiter hinten noch Spalten habe, die auch noch darein sollen, frage ich mich nun wie ich die dann hinzufüge.
    Das beträfe dann die Spalten 42-47 und 57-60.

    Sieht das dann am Ende so aus?

    Cells(Target.Row, 9).Resize(1, 5).Value = IIf(Target = 0, 0, "")
    Cells(Target.Row, 42).Resize(1, 6).Value = IIf(Target = 0, 0, "")
    Cells(Target.Row, 9).Resize(1, 4).Value = IIf(Target = 0, 0, "")

    Vermutlich steht da nun totaler Schwachsinn. ^^
    Ich versuche nur das zu verstehen, um es später auch bearbeiten zu können. :-)
     
    PapierStudi, 22. Januar 2014
    #11
  12. \@ralf
    Was meinst du mit "Mit Übergabe des Blattnamens und der Zelladresse."?
     
    PapierStudi, 22. Januar 2014
    #12
  13. Else = do nothing?

    Moin
    Nein.
    @Ralf: Es wird auch eingetragen aber dann folgt siehe Bild im Anhang
    da ja das Change Ereigniss wieder gestartet wird.
    @Papierstudi
    Fast, die 9(also I) ist die Spaltennummer , insgesammt sind es 5 Spalten die erste Zelle wird mitgerechnet.
    Code:
    Glaube ist besser du laedst eine Bsp.-Mappe hoch.
    gruss hary
     
  14. \@ hary,
    ...hmmm... bei mir läuft er durch... grübel...

    @study,

    das externe modul kann ja nicht wissen was es verarbeiten soll. deshalb müssen der blattname und die zelle (oder alternativ auch die zeile) als paramter übergeben werden.

    Aufruf wäre dann so:

    Code:
    und die Prozedur im externen Modul sähe dann so aus:

    Code:
     
  15. Guten Morgen! :-)

    Also das ist meine aktuelle Datei:
    Dropbox - Error
    VBA-technisch ist sie bisher noch sehr einfach gehalten. Es gibt nur ein bearbeitetes Worksheet und den Code, der da drauf liegt, habe ich hier bereits gepostet.

    @hary
    Oh ja - natürlich 57. Da hab ich mich irgendwie vertippt. Aber freue mich deinen Code nun auch zu verstehen. *Smilie

    @Ralf
    Entschuldige bitte wenn ich dich irgendwo missverstehe - habe halt, wie gesagt, wenig Ahnung von VBA.
    Das einzige Modul, das ich derzeit schreibe / bearbeite, ist das Worksheet / Tabellenblatt der ersten Tabelle. Die gleichnamige Prozedur befindet sich auf dem selben Blatt.
    Da es bei dieser einen Tabelle bleiben wird, wollte ich die Prozeduren, die sich nur auf diese eine Tabelle beziehen sollen, einfach irgendwie auf diesem einen Worksheet unterbringen.
    Meinst du ich kann nur dann mehrere Prozeduren des gleihen Types auf einem Worksheet unterbringen, wenn ich sie auf einem anderen Blatt entsprechend definiere? Oder hast du einfach nur den Umfang meiner Arbeitsmappe überschätzt? *Smilie
     
    PapierStudi, 22. Januar 2014
    #15
Thema:

Else = do nothing?

Die Seite wird geladen...
  1. Else = do nothing? - Similar Threads - Else nothing

  2. Power Query - nested if statement - Klammern

    in Microsoft Excel Hilfe
    Power Query - nested if statement - Klammern: Hallo zusammen, kann mir jemand beantworten, in welchen Fällen bei nested if statements in Power Query Klammern notwendig sind und wann nicht? Beispiel: if [Number] > 0 then "Positive" else (if...
  3. If-Then-Else...Verständnisfrage zu Kriterium String > Zahl

    in Microsoft Access Hilfe
    If-Then-Else...Verständnisfrage zu Kriterium String > Zahl: Hallo, ich habe eine Funktion erstellt. Diese wird mit Werten gefüttert, generell Zahlen als String und "echte" Strings. Damit ich mit den Zahlen Vergleiche anstellen kann wandele ich diese mit...
  4. IF THEN ELSE mit mehr als 2 Anweisungen nach Prüfung

    in Microsoft Excel Hilfe
    IF THEN ELSE mit mehr als 2 Anweisungen nach Prüfung: Hallo, kann mir bitte jemand weiterhelfen, ich möchte bei folgendem Skript folgende Dinge tun: 1. mindestens 2 Bedingungen zur Prüfung (das sollte mit "And" klappen?) 2. dann auch mehr als 2...
  5. Kombinationsfeld sperren od. freigeben wenn Bedingungen erfüllt (if then else ...)

    in Microsoft Access Hilfe
    Kombinationsfeld sperren od. freigeben wenn Bedingungen erfüllt (if then else ...): Guten Abend liebe Forumsmitglieder Ich habe ein Kombinationsfeld Namens: "KatFKAuswahl" wo ich eine Liste an Auswahlmöglichkeiten in einem Formular (Namens: frm_Personen) habe. Damit man eine...
  6. "If...Then...Else"-Makroblock

    in Microsoft Access Tutorials
    "If...Then...Else"-Makroblock: "If...Then...Else"-Makroblock Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr... Weniger...
  7. Bedingung Wert vorhanden und anderer Wert nicht vorhanden

    in Microsoft Excel Hilfe
    Bedingung Wert vorhanden und anderer Wert nicht vorhanden: Hallo Zusammen, ich möchte ein Makro erstellen, dass in bestimmten Zellen nach einem Wert (Text) sucht und wenn dieser Text gefunden wird nach einem anderen Wert sucht. Wenn der zweite Wert...
  8. Wenn Dann Bedingung, Wenn wert in C3 vorhanden dann füge 1 in A3 ein usw...

    in Microsoft Excel Hilfe
    Wenn Dann Bedingung, Wenn wert in C3 vorhanden dann füge 1 in A3 ein usw...: Wenn Dann Bedingung, Wenn wert in E2 vorhanden dann füge 1 in A3 ein usw... Moin Moin, Ich bin noch VBA Neuling, und habe mich einer sehr komplexen Liste gewidmet. Das Problem was ich habe,...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden