Wenn in Zelle C3 dann Msgbox

  • #1
E

Elhamplo

Aktives Mitglied
Themenersteller
Dabei seit
21.09.2005
Beiträge
26
Reaktionspunkte
0
Hi, ich mal wieder........

Ich hab ein Problem und ich schätze es wurde auch schon tausend mal bantwortet, aber ich habe nichts gefunden oder es hat nie geklappt.

Und zwar:

Ich möchte wenn in der Zelle C3 ein x steht das eine Msgbox aufgeht mit ja/nein möglichkeit und wenn man dann auf ja klickt das man in einem neuen Tabellenblatt auf die Zelle C5 kommt. Außerdem soll die Msgbox nicht auftauchen wenn man das x in Tabelle1 in Zelle C3 löscht.

Ich weiß leider nicht weiter.

Ich danke für Eure Mühe!!!!!!!!

Gruß

Elhamplo
 
  • #2
In den Code des Tabellenblatts folgenden Code eingeben:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Mldg, Stil, Titel, Antwort->

 If Target.Column = 3 And Target.Row = 3 Then ->wenn in C3 was geändert wird
 If Range(C3) = x Then
      Mldg = xxx_Blabla & Chr(10) & _
      xxx_Blabla & Chr(10) & _
      xxx_Blabla & Chr(10) & _
      xxx_Bla
      Stil = vbYesNo + vbCritical + vbDefaultButton2->Schaltflächen definieren.
      Titel = xxx_Meldungstitel->Titel definieren.
      Antwort = MsgBox(Mldg, Stil, Titel) ->Meldung anzeigen.
  If Antwort = vbYes Then->ab jetzt wird Ja ausgeführt
  Sheets(Tabelle2).Select
  Range(C5).Select
  Else
 End If
  Else
 End If
  Else->jetzt wird Nein ausgeführt
  Range(C3).Select
 End If
End Sub
Sollte so eigentlich funktionieren, aber bei Range(C5).Select krieg ich einen Fehler und weiß nicht warum. Wahrscheinlich nur irgend ein dummer Punkt oder Klammer, den ich übersehen hab, aber ich komm nicht drauf. Wenn ich Range(C5).Select weglasse, funktioniert es.

Tabelle2 muß noch durch den tatsächlichen Blattnamen ersetzt werden. Auch die Passagen, die mit xxx_ anfangen, durch sinnvolle Meldungen ersetzen.
 
  • #3
hi klexy

sorry wenn ich dir da reinpfusche aber dein Code geht, zumindest bei mir, nicht so ganz wie es Elhamplo wollte. Also wenn man auf nein klickt, geschieht gar nichts.

Ich habe ihn einwenig, basierend auf deiner Version, geändert... und so geht er.

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

'Hier kommt der Name der anderen Tabelle herein
Const c_tabelle = Tabelle2

Dim Mldg, Stil, Titel, Antwort

'wenn in C3 was geändert wird
If Target.Column = 3 And Target.Row = 3 Then

->Wenn C3 ein x steht dann wird diese Schlaufe ausgeführt
 If Range(C3) = x Then
 ->Message definieren
  Mldg = xxx_Blabla & Chr(10) & xxx_Blabla & Chr(10) & _
  xxx_Blabla & Chr(10) & xxx_Bla
  
 ->Schaltflächen definieren
  Stil = vbYesNo + vbCritical + vbDefaultButton2
  
 ->Titel definieren
  Titel = xxx_Meldungstitel
  
 ->Meldung anzeigen.
  Antwort = MsgBox(Mldg, Stil, Titel)
  
  If Antwort = vbYes Then->ab jetzt wird Ja ausgeführt
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
  Else->ab jetzt wird Nein ausgefürt
   ActiveSheet.Range(C3).Select
  End If
  
 End If
End If

End Sub

ich habe ihn noch einwenig grösser gemacht dass Elhamplo einwenig die zusammenhänge sieht ^^

mfg billy
 
  • #4
Hi.....

das ist schon so was ich suche. Ist auch sau geil......

Ich will wenn C3 oder C4 oder in C5.... bis C9 ein x steht das die msgbox aufgeht und in das neue Blatt wechselt und nicht dann immer auf C3 zurück geht. Außerdem wenn ich die Zellen C10 oder C11 oder....... bis C200 mit einem x makiere soll keine MSGBOX erscheinen.

Gruß

Elhamplo
 
  • #5
Elhamplo schrieb:
nicht dann immer auf C3 zurück geht.

wie darf ich das verstehn?

du meinst wenn man vom 1. tabellenblatt in C3 ein x macht, geht es ja auf die 2. tabelle. und wenn man dann in das 1. Tabellenblatt wechselt ist C3 logischerweise immer noch aktiv weil du dort zuletzt was geändert hast...

oder hab ich da was falsch verstanden?

mfg billy
 
  • #6
Hi.......

Denk, Denk, Denk........ Ich habs geraft!!!!!!

Noch eine Frage: Was muss ich machen wenn ich das gleich für die Zellen C4, C5, C6, C7... bis C15 und ab C16 soll keine nachricht mehr kommen beim Eintargen eines x - es.

Mfg Elhamplo

Sprry, aber ich bin so ein VBA Schwächling!!!!!!
 
  • #7
@ billy
bei nein soll ja gar nichts passieren.
Der Pferdefuß bei mir war Worksheets(c_tabelle).Range(C5).Select. Aber warum das so ist, kapier ich nicht.

@ Elhamplo
Das mit 4-15 bastel ich heute abend zurecht. Schöne Herausforderung für mich.
 
  • #8
Noch eine Zwischenfrage:
Werden die x nach der Erstellung und dem Wechsel auf Tabelle2 gleich gelöscht, oder kann ein x in C4 (Tabelle1) noch vorhanden sein wenn man ein neues in C5 (Tabelle1) macht oder in C5 (Tabelle1) etwas ganz anderes reinschreibt?

Und soll jedes Mal in C5 (Tabelle2) gewechselt werden?

Das mit dem Wechsel in C3 (Tabelle1) ist nur die Option für kein x. Das mach ich wieder weg. Das war nur zum Verständnis der Funktionalität des vbYesNo.
 
  • #9
Hallo,

@ all

Sorry das ich mich erst jetzt melde, hatte aber keine gestern keine Zeit mehr. Sorry!!!

@ billy

Danke für den Code. Nachdem ich den Code kopeiert habe und die Zellen geändert habe ging das auch mit den anderen Zellen. Ist zwar VBA-Technisch nicht die beste Lösung aber es klappt. Danke nochmals für Deine Hilfe.

@ klexy

Danke das Du noch einen Code schreiben willst. Sorry bin echt ne Flasche was VBA angeht. Vor ein paar Wochen wusste ich gradmal das es Wenn-Formeln gibt.

Mit dem x ist das so: Auf Tabelle 1 wird das x eingetragen und die MsgBox soll geöffnent werden. Bei ja soll man auf die Tabelle2 in Zelle C5 kommen immer. Das x soll in Tabelle 1 aber stehen bleiben und nicht gelöscht werden. Danke für Deine Hilfe.

Gruß Elhamplo
 
  • #10
Nur nicht hetzen!

Außerdem ist noch kein Meister vom Himmel gefallen, sondern höchstens mal auf die Schnauze.

Das Makro ist ja einigermaßen ausführlich kommentiert. Wenn du dich da mal eine Stunde dransetzt und versuchst, nachzuvollziehen was da passiert, kannst du viel lernen und diesen oder jenen Baustein später mal variieren oder ganz ungeniert in andere Makros kopieren.
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

'Hier kommt der Name der anderen Tabelle herein
Const c_tabelle = Tabelle2

'Elemente der Meldung festlegen
Dim Titel, Mldg, Stil, Antwort
 ->Titel definieren
  Titel = xxx_Meldungstitel
 ->Text definieren
  Mldg = xxx_Blabla & Chr(10) & _
  xxx_Blabla & Chr(10) & _
  xxx_Blabla & Chr(10) & _
  xxx_Bla
 ->Schaltflächen definieren
   ->(vbDefaultButton1 heißt, daß Ja aktiviert ist)
   ->(vbDefaultButton2 heißt, daß Nein aktiviert ist)
  Stil = vbYesNo + vbCritical + vbDefaultButton1
  
'wenn in C3 was geändert wird
If Target.Column = 3 And Target.Row = 3 Then

->Wenn C3 ein x steht dann wird diese Schlaufe ausgeführt
 If Range(C3) = x Then
 
 ->Meldung anzeigen.
  Antwort = MsgBox(Mldg, Stil, Titel)
  
  If Antwort = vbYes Then->ab jetzt wird Ja ausgeführt
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
 ->Wenn es diese Zelle (C3) war, dann dann müssen die anderen Schleifen nicht mehr durchlaufen werden.
 ->Deshalb soll von hier direkt ans Ende gegangen werden.
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C4 was geändert wird
If Target.Column = 3 And Target.Row = 4 Then
 If Range(C4) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C5 was geändert wird
If Target.Column = 3 And Target.Row = 5 Then
 If Range(C5) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C6 was geändert wird
If Target.Column = 3 And Target.Row = 6 Then
 If Range(C6) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C7 was geändert wird
If Target.Column = 3 And Target.Row = 7 Then
 If Range(C7) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C8 was geändert wird
If Target.Column = 3 And Target.Row = 8 Then
 If Range(C8) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C9 was geändert wird
If Target.Column = 3 And Target.Row = 9 Then
 If Range(C9) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C10 was geändert wird
If Target.Column = 3 And Target.Row = 10 Then
 If Range(C10) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C11 was geändert wird
If Target.Column = 3 And Target.Row = 11 Then
 If Range(C11) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C12 was geändert wird
If Target.Column = 3 And Target.Row = 12 Then
 If Range(C12) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C13 was geändert wird
If Target.Column = 3 And Target.Row = 13 Then
 If Range(C13) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C14 was geändert wird
If Target.Column = 3 And Target.Row = 14 Then
 If Range(C14) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

'wenn in C15 was geändert wird
If Target.Column = 3 And Target.Row = 15 Then
 If Range(C15) = x Then
  Antwort = MsgBox(Mldg, Stil, Titel)
  If Antwort = vbYes Then
   Sheets(c_tabelle).Select
   Worksheets(c_tabelle).Range(C5).Select
GoTo EndeÄpfel
  End If
 End If
End If

EndeÄpfel:
End Sub
 
  • #11
Hey klexy,

Danke für den Code funst. Sorry das ich mich erst jetzt melde, hatte keine Zeit mehr, Sorry!!

Hab das so änlich mit dem anderen Code gemacht. Danke das Du das so gut kommentierst hast. Danke.

DANKE NOCHMAL AN EICH BEIDEN FÜR DIE TOLLE HILFE ( an einen Ahnungslosen)!!!!

MFG

Elhamplo
 
Thema:

Wenn in Zelle C3 dann Msgbox

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.836
Beiträge
707.957
Mitglieder
51.488
Neuestes Mitglied
elkhse
Oben