Office: automatisch ein X in die Zelle setzen

Helfe beim Thema automatisch ein X in die Zelle setzen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo! Rechtsklicke den Tabellenreiter des entsprechenden Blatts und wähle "Code anzeigen". Kopiere den Code ins Codefenster rechts oben. Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Totte1987, 19. Mai 2008.

  1. schatzi Super-Moderator

    automatisch ein X in die Zelle setzen


    Hallo!

    Rechtsklicke den Tabellenreiter des entsprechenden Blatts und wähle "Code anzeigen".
    Kopiere den Code ins Codefenster rechts oben.
     
    schatzi, 26. Mai 2008
    #16
  2. sushi1982 Neuer User
    so und nun möchte ich noch gern, dass ich das auf jedes eingerahmte kästchen anwenden kann. hab ´n excel-dokument erzeugt, bei dem ich auf der linken und rechten seite kästchen anklicken möchte, aber auf der rechtenseite geht gar nix und links nur jedes zweite kästchen und nur bis zur zeile 10.
    sehr seltsam...
     
    sushi1982, 26. Mai 2008
    #17
  3. schatzi Super-Moderator
    Hallo!

    überhaupt nicht seltsam, denn das war ja die Vorgabe beim ursprünglichen Problem:
    Wenn es auf alle Zellen angewendet werden soll, dann lass die If-Abfrage weg:
    Code:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Cancel = True
      Select Case Target
        Case Is = "": Target = "x"
        Case Is = "x": Target = ""
        Case Else: Cancel = False
      End Select
    End Sub
    (oder je nachdem, welchen Code du dir ausgesucht hast.)
     
    schatzi, 26. Mai 2008
    #18
  4. automatisch ein X in die Zelle setzen

    Hätte den Code gerne so, dass ich entweder in der Zeile "D" oder in der Zeile "E" ein X setzen kann. In beiden Zeilen ist es nicht möglich gleichzeitig ein X zu setzen.

    Sitze schon seit einer Stunde dran und komme nicht weiter. Hoffe es kann mir jemand helfen. :-(
     
    chillerkiller, 16. Januar 2009
    #19
  5. miriki Erfahrener User
    Du hast den Parameter "Target", der die Eigenschaften "Row" und "Column" hat. Mit einer passenden IF-Abfrage läßt sich der Bereich einschränken, in dem die Aktion ausgeführt wird. Also z.B. etwas in der Art:
    Code:
    if (target.column=4) or (target.column=5) then
      [aktion]
    endif
    Doch, möglich schon... ;-) Aber Du meinst: Nicht erlaubt? (Ich gehe übrigens mal davon aus, daß Du eigentlich "Spalten" meinst, oder?) Ok, dann ist es also bei "[aktion]" eine Abfrage, ob in der jeweils anderen Spalte bereits ein "X" gesetzt ist. Frage ist nur, was soll passieren, wenn dort eins steht? Zwei Möglichkeiten:
    a) Nichts - eben weil in der anderen Spalte schon ein "X" steht
    b) Das "X" in der anderen Spalte wird gelöscht und in der aktuellen gesetzt

    Die Aktion für b) würde also irgendwie in der Art aussehen:
    Code:
    y1=target.row
    x1=target.column
    select case x1
      case 4: x2=5
      case 5: x2=4
    end select
    cells(y1,x2).clearcontents
    cells(y1,x1).value="X"
    Jetzt wird mit jedem Doppelklick ein "X" in der Zelle gesetzt und ggf. das "X" in der anderen Zelle gelöscht.

    Und jetzt noch das "Umschalten", wenn in der aktuellen bereits ein "X" steht... Dann aber auch wieder die Frage: Wenn das aktuelle "X" gelöscht wird, was passiert in der anderen Spalte? Soll es dann dort gleich wieder gesetzt werden, oder bleibt es dort auch leer? Ich gehe mal von ersterem Fall aus:

    Die letzten beiden Zeilen von eben werden dann zu etwas in der Art:
    Code:
    s=trim$(cells(y1,x1).value)
    if (s="") then
      cells(y1,x2).clearcontents
      cells(y1,x1).value="X"
     else
      cells(y1,x1).clearcontents
    endif
    Alles zusammen müßte es also irgendwie so aussehen:
    Code:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
      dim x1 as long
      dim x2 as long
      dim y1 as long
      dim s as string
    
      x1=target.column
      if (x1=4) or (x1=5) then
    
        select case x1
          case 4: x2=5
          case 5: x2=4
        end select
        y1=target.row
        s=trim$(cells(y1,x1).value)
        if (s="") then
          cells(y1,x2).clearcontents
          cells(y1,x1).value="X"
         else
          cells(y1,x1).clearcontents
          'cells(y1,x2).value="X"
        endif
    
      endif
    
    End Sub
    Und wenn das "X" beim Löschen doch in der jeweils anderen Spalte gleich wieder gesetzt werden soll, nimm einfach das Kommentar-Zeichen ' aus der Zeile vor dem "endif" wieder raus.

    ungetested, aber ich bin erstmal ganz zuversichtlich... ;-)

    Gruß, Michael
     
  6. Klasse, das funktioniert genau so wie ich es mir vorgestellt habe. Vielen Dank!

    Nur noch eine Frage: Aus optischen Gründen würde ich gerne zwei Zellen verbinden und dann in dieser gemeinsamen Zelle ein X setzen. Allerdings bekomme ich hier eine Fehlermeldung.
     
    chillerkiller, 16. Januar 2009
    #21
  7. miriki Erfahrener User
    schatzi wird jetzt bestimmt etwas im Grundtenor "verbundene Zellen sind böse" schreiben wollen, und das nicht ganz zu unrecht.

    Aber letztendlich kann eine verbundene Zelle über die Adresse "links oben" angesprochen werden. target.column bzw. .row sollten auch die linke obere Zell-Adresse zurückliefern, meine ich.

    Wenn Du also die Zellen B5 und C5 verbunden hast, dann sollte die Gesamt-Zelle trotzdem weiter über B5 angesprochen werden können. Im VBA wäre das dann cells(5,2).

    Wo genau tritt denn die Fehlermeldung auf? Klick im Fehlermeldungs-Fenster einfach auf "Debuggen" und sag die Zeile, die dann gelb eingefärbt ist.

    Gruß, Michael
     
  8. automatisch ein X in die Zelle setzen

    Hoffe das hilft dir weiter. Habe nicht B5 mit C5 verbunden, sondern D9 mit D10 zum Beispiel. ;-)

    Code:
    Cells(y1, x2).ClearContents
     
    chillerkiller, 16. Januar 2009
    #23
  9. miriki Erfahrener User
    Ich habe den Verdacht, daß x2 in dem Moment einen ungültigen Wert hat.

    In dem "select case ..." wird ja abgeprüft, ob der Doppelklick in Spalte (x1) 4 oder 5 passiert, um denn die "Gegen"-Spalte in x2 zu setzen.

    Normalerweise(!) dürfte in x1 nur der Wert 4 oder 5 stehen, weil die äußerste IF-Abfrage einen Durchlauf in den inneren Bereich bei allen anderen Werten verhindert.

    Code:
      if (x1=4) or (x1=5) then 
    
        select case x1 
          case 4: x2=5 
          case 5: x2=4 
        end select 
    
        [...]
    
      endif
    Hast Du an der IF- oder der CASE-Geschichte etwas an den Werten 4 bzw. 5 geändert? Wenn ja, vielleicht nur an einer, nicht aber an beiden Zeilen?

    Gruß, Michael
     
  10. Sorry das ich mich jetzt erst wieder melde. Aber war das Wochenende nicht da.

    Nein ich habe nichts geändert. Habe es komplett von dir übernommen. :-(
     
    chillerkiller, 19. Januar 2009
    #25
  11. miriki Erfahrener User
    Ok, ich habe es mal nachgestellt. Wenn du D9:D10 verbindest, gibt es eine Fehlermeldung, ja. Das ClearContents geht nicht bei verbundenen Zellen, war mir bislang gar nicht aufgefallen.

    Ändere das
    Code:
    clearcontents
    in den 2 Zeilen ab in
    Code:
    value=""
    die Zellen sind dann zwar nicht wirklich "leer", sondern haben einen leeren String als Inhalt. Das dürfte für Deine Belange aber keinen Unterschied machen.

    Beachte aber, wenn Du z.B. D9:D10 verbunden hast, daß Du zwingend auch E9:E10 verbunden haben mußt. Sonst hättest Du 2 "X" in Spalte E, die zu einem "X" in Spalte D gehören.

    Gruß, Michael
     
  12. Klappt wunderbar! Vielen Dank für die Hilfe. Super Forum hier.
     
    chillerkiller, 20. Januar 2009
    #27
Thema:

automatisch ein X in die Zelle setzen

Die Seite wird geladen...
  1. automatisch ein X in die Zelle setzen - Similar Threads - automatisch Zelle

  2. Datum fortlaufend für ein Monat automatisch erstellen

    in Microsoft Excel Hilfe
    Datum fortlaufend für ein Monat automatisch erstellen: Hallo ich muss jeden Monat mehrere dieser Blätter ausfüllen und das Datum mühselig eintragen. Das Blatt ist gesperrt, nur die Zelle neben den Wochentagen kann ausgefüllt werden und der Zeitraum...
  3. Wert einer Zelle neben einer anderen Zelle automatisch anzeigen

    in Microsoft Excel Hilfe
    Wert einer Zelle neben einer anderen Zelle automatisch anzeigen: Hallo! Ich stehe vor einer Herausforderung und hoffe auf deine Unterstützung: Mein Excel-Problem sieht folgendermaßen aus: In meiner Datei habe ich zwei Registerkarten, R1 und R2. Auf R1...
  4. Excel Zellen automatisch zusammenführen

    in Microsoft Excel Hilfe
    Excel Zellen automatisch zusammenführen: Hallo zusammen, stehe vor folgendem Problem. ich erhalte aus einer Datenbank eine Excel Datei mit ca. 300-400 Zeilen und bis zu 30 Spalten. in einer Spalte stehen Anweisungen. Nur leider bekomme...
  5. Datum nach Eingabe automatisch in Zelle einfügen

    in Microsoft Excel Hilfe
    Datum nach Eingabe automatisch in Zelle einfügen: Hallo Spezialisten, ich habe hier einen Code gefunden, der für mich fast perfekt ist. Private Sub Worksheet_Change(ByVal Target As Range) 'Quelle: Ransi If Intersect(Target, Range("A1:A10"))...
  6. Text automatisch in benutzerdefinierte Zelle integrieren

    in Microsoft Excel Hilfe
    Text automatisch in benutzerdefinierte Zelle integrieren: Hallo zusammen, ich habe eine mehrseitiges Excel-Tabellenkalkulation zum Kalkulieren und zum Erstellen von Angeboten erstellt. Nun Möchte ich, dass der in einer Zelle im Tabellenblatt eingetragene...
  7. Zellen automatisch in ein neues Blatt kopieren wenn

    in Microsoft Excel Hilfe
    Zellen automatisch in ein neues Blatt kopieren wenn: Hallo zusammen, ich habe eine Tabelle (Tabelle1) in der regelmäßig neue Kunden eingetragen werden. Kd.-Nr. / Kundendaten / Flyer erhalten / etc. In der Spalte (Flyer erhalten) wird "ja"...
  8. Zelle automatisch mit Inhalt aus anderer Zelle füllen

    in Microsoft Excel Hilfe
    Zelle automatisch mit Inhalt aus anderer Zelle füllen: Hi, ich arbeite erst seit kurzem intensiv mit Excel und nach langem im-Internet-suchen komme ich nicht mehr weiter. Essentiell möchte ich einen Zelleninhalt in eine andere Zelle schreiben,...
  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