Microsoft Excel

Herbers Excel/VBA-Archiv

Per Formel oder VBA Bedingung schaffen.


Betrifft: Per Formel oder VBA Bedingung schaffen. von: Micha
Geschrieben am: 16.09.2019 17:33:20

Hallo,

habe eine kleine Beispieldatei beigefügt.Dort ist hoffentlich alles klar erklärt.
Alle Werte werden per Doppelklick eingetragen.
Grundsätzlich möchte ich, wenn in Spalte "B" einen Wert erhalten hat, kann in der danebenliegende Zelle in Spalte "C" kein Wert mehr eingegeben werden.
Beispiel: in Zelle B5 steht ein Wert, dann kann in Zelle C5 kein Wert eingetragen werden.
Steht in Zelle C5 ein Wert, kann in Zelle B5 nichts eingetragen werden.
Das gilt für die gesamte Spalte "B" und "C".
(Also: entweder oder!; jedoch nicht Beides)
Kann ich das per Formel lösen oder muss ein VBA Code her?
Ich bitte um Unterstützung und bedanke mich im Voraus
Gruß
Micha

https://www.herber.de/bbs/user/132057.xlsm

  

Betrifft: AW: Per Formel oder VBA Bedingung schaffen. von: 1713356.html
Geschrieben am: 16.09.2019 18:05:04

Hi Micha

Es geht darum in deinem Code Range("B5") und Range("C5") durch eine variable Zeile zu ersetzen.

Alternative zu Range ist Cells:
Cells(Zeilennummer, Spaltennummer)

Zum Beispiel Range("B5") ist das Gleiche wie:
Cells(5, 2)

Dito aber mit variabler Zeilennummer:
Cells(Target.Row, 2)

Müsste die Auswahl nicht Y-Chromosom WAHR/FALSCH lauten? :)

cu
Chris





Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
   
       If Not Intersect(Target, Range("B5:B391")) Is Nothing Then
       Target = IIf(Target = "Y", "", "Y")
       Cancel = True
       End If
       
   'Hier wird die Eingabe "Y" verhindert
   '#################################
       If Range("C5") = "X" Then
          Range("B5").ClearContents
   
       End If
      
   
   ' Per Doppelklick wird in Spalte "B" ein "X" (weiblich) geschrieben
   
       If Not Intersect(Target, Range("C5:C391")) Is Nothing Then
       Target = IIf(Target = "X", "", "X")
       Cancel = True
       End If
   
   'Hier wird die Eingabe "X" verhindert
   '#################################
        If Range("B5") = "Y" Then
           Range("C5").ClearContents
       End If
    
   
   End Sub

  

Betrifft: AW: Per Formel oder VBA Bedingung schaffen. von: 1713369.html
Geschrieben am: 16.09.2019 19:26:47

Hallo Chris,

leider habe ich nicht viel Ahnung von VBA.
Könntest Du mir bitte den Code zusenden? Habe versucht
Deinen Vorschlag zu realisieren, jedoch ohne Erfolg.
Bitte nicht an B5 oder C5 orientieren.
Entweder ist in Spalte B irgendwo ein "Y" oder in Spalte C ein "X".
Beides nebeneinander soll nicht funktionieren.
Ps. Es handelt sich um eine Mitgliederliste in der ich über X bzw. Y
anzeigen möchte, ob das Mitglied weiblich (X) oder männlich (Y) ist.

Gruß
Micha

  

Betrifft: AW: Per Formel oder VBA Bedingung schaffen. von: 1713370.html
Geschrieben am: 16.09.2019 19:33:21

Hi Micha

Keine Angst, der Code explodiert nicht, wenn du was änderst. ;)

Probiere mal...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
 
     If Not Intersect(Target, Range("B5:B391")) Is Nothing Then
     Target = IIf(Target = "Y", "", "Y")
     Cancel = True
     End If
     
 'Hier wird die Eingabe "Y" verhindert
 '#################################
     If Cells(Target.Row, 3) = "X" Then
        Cells(Target.Row, 2).ClearContents
 
     End If
    
 
 ' Per Doppelklick wird in Spalte "B" ein "X" (weiblich) geschrieben
 
     If Not Intersect(Target, Range("C5:C391")) Is Nothing Then
     Target = IIf(Target = "X", "", "X")
     Cancel = True
     End If
 
 'Hier wird die Eingabe "X" verhindert
 '#################################
      If Cells(Target.Row, 2) = "Y" Then
         Cells(Target.Row, 3).ClearContents
     End If
 
 End Sub

cu
Chris
  

Betrifft: AW: Per Formel oder VBA Bedingung schaffen. von: 1713379.html
Geschrieben am: 16.09.2019 23:40:00

Hi Chris,

vielen Dank für die Hilfe.
Es funktioniert so wie ich es mir vorgestellt habe.
Prima!

Gruß
Micha

Beiträge aus dem Excel-Forum zum Thema "Per Formel oder VBA Bedingung schaffen."