Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Worksheet Change

Worksheet Change
09.02.2015 15:43:49
Julian
Hallo zusammen,
habe ein Problem und komme nicht weiter.
Ich möchte gerne wenn folgende Werte in den Zellen stehen einen Button anzeigen bzw. ausblenden lassen.
1.1 Makro darf nur abgespielt werden wenn 1000 und 500 oder 250 oder 200 oder 125 oder 100 gegeben sind.
Mein Code.
If (Range("F2") = 1000) And (Range("F3") = 500) Then Call einblenden1
If (Range("F2") = 1000) And (Range("F3") = 250) Then Call einblenden1
If (Range("F2") = 1000) And (Range("F3") = 200) Then Call einblenden1
If (Range("F2") = 1000) And (Range("F3") = 125) Then Call einblenden1
If (Range("F2") = 1000) And (Range("F3") = 100) Then Call einblenden1
1.2 Befehl darf nur erfolgen wenn in F2 nicht 1000 und F3 nicht 500 oder nicht 250 oder nicht 200 oder nicht 125 oder nicht 100 steht.
Mein Code.
If Not (Range("F2") = 1000) And (Range("F3") = 500) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 1000) And (Range("F3") = 250) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 1000) And (Range("F3") = 200) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 1000) And (Range("F3") = 125) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 1000) And (Range("F3") = 100) Then ActiveSheet.Shapes("Mitteln1").Visible = False
2.1 Makro darf nur abgespielt werden wenn 2000 und 1000 oder 500 oder 400 oder 250 oder 200 gegeben sind.
Mein Code.
If (Range("F2") = 2000) And (Range("F3") = 1000) Then Call einblenden1
If (Range("F2") = 2000) And (Range("F3") = 500) Then Call einblenden1
If (Range("F2") = 2000) And (Range("F3") = 400) Then Call einblenden1
If (Range("F2") = 2000) And (Range("F3") = 250) Then Call einblenden1
If (Range("F2") = 2000) And (Range("F3") = 200) Then Call einblenden1
2.2 Befehl darf nur erfolgen wenn in F2 nicht 2000 und F3 nicht 1000 oder nicht 500 oder nicht 400 oder nicht 250 oder nicht 200 steht.
Mein Code
If Not (Range("F2") = 2000) And (Range("F3") = 1000) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 2000) And (Range("F3") = 500) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 2000) And (Range("F3") = 400) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 2000) And (Range("F3") = 250) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 2000) And (Range("F3") = 200) Then ActiveSheet.Shapes("Mitteln1").Visible = False
3.1 Makro darf nur abgespielt werden wenn 3000 und 1500 oder 1000 oder 750 oder 600 oder 500 oder 375 oder 300 gegeben sind.
Mein Code
If (Range("F2") = 3000) And (Range("F3") = 1500) Then Call einblenden1
If (Range("F2") = 3000) And (Range("F3") = 1000) Then Call einblenden1
If (Range("F2") = 3000) And (Range("F3") = 750) Then Call einblenden1
If (Range("F2") = 3000) And (Range("F3") = 600) Then Call einblenden1
If (Range("F2") = 3000) And (Range("F3") = 500) Then Call einblenden1
If (Range("F2") = 3000) And (Range("F3") = 375) Then Call einblenden1
If (Range("F2") = 3000) And (Range("F3") = 300) Then Call einblenden1
3.2 Befehl darf nur erfolgen wenn in F2 nicht 3000 und F3 nicht 1500 oder nicht 1000 oder nicht 750 oder nicht 600 oder nicht 500 oder nicht 375 oder nicht 300 steht.
Mein Code
If Not (Range("F2") = 3000) And (Range("F3") = 1500) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 3000) And (Range("F3") = 1000) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 3000) And (Range("F3") = 750) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 3000) And (Range("F3") = 600) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 3000) And (Range("F3") = 500) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 3000) And (Range("F3") = 375) Then ActiveSheet.Shapes("Mitteln1").Visible = False
If Not (Range("F2") = 3000) And (Range("F3") = 300) Then ActiveSheet.Shapes("Mitteln1").Visible = False
Der Code muss an 2 weiteren stellen ebenso funktionieren (F8/F9) (F14/F15)
Leider stoß ich bei diesem Problem an meine Grenzen. Funktioniert einfach nicht richtig.
Darum wende ich mich jetzt an das Forum, ich hoffe Ihr könnt mir helfen

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet Change
09.02.2015 17:47:59
fcs
Hallo Julian,
probier es mal wie folgt.
Gruß
Franz
    Dim bolEinblenden As Boolean
bolEinblenden = False
Select Case Range("F2")
Case 1000
Select Case Range("F3")
Case 100, 125, 250, 200, 500
bolEinblenden = True
End Select
Case 2000
Select Case Range("F3")
Case 200, 250, 400, 500, 1000
bolEinblenden = True
End Select
Case 3000
Select Case Range("F3")
Case 300, 375, 500, 600, 750, 1000, 1500
bolEinblenden = True
End Select
End Select
If bolEinblenden = False Then
ActiveSheet.Shapes("Mitteln1").Visible = False
Else
Call einblenden1
End If

Anzeige
AW: Worksheet Change
10.02.2015 07:51:14
Julian
Guten Morgen Franz,
erstmal vielen Dank für deine Antwort.
Leider kann ich den Code nicht testen, da ich einen Laufzeitfehler bekomme.
"Das Element mit dem angegebenen Namen wurde nicht gefunden".
Wenn man die Datei öffnet muss man zuerst eine andere Schaltfläche betätigen, damit die Schaltfläche mit dem festen Namen eingefügt werden kann.
Nachstehend das Makro, dass zuerst ausgeführt werden muss.
Sub GSKürzen_1()
' GSKürzen_1 Makro
Range("B1").Select
Sheets("Layout").Select
Range("B1:K5").Select
Selection.Copy
Sheets("Kalkulation").Select
ActiveSheet.Paste
Range("B1").Select
With ActiveSheet.Buttons.Add(431.25, 117.75, 60, 30)
.OnAction = "abrunden1"
.Text = "Abrunden"
.Name = "Abrunden1"
End With
With ActiveSheet.Buttons.Add(493, 117.75, 60, 30)
.OnAction = "aufrunden1"
.Text = "Mitteln"
.Name = "Mitteln1"
End With
ActiveSheet.Shapes.Range(Array("abrunden1")).Select
Selection.OnAction = "abrunden1"
Selection.Characters.Text = "Abrunden"
With Selection.Characters(Start:=1, Length:=8).Font
.Name = "Calibri"
.FontStyle = "Standard"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
End With
ActiveSheet.Shapes.Range(Array("Mitteln1")).Select
Selection.OnAction = "aufrunden1"
Selection.Characters.Text = "Mitteln"
With Selection.Characters(Start:=1, Length:=8).Font
.Name = "Calibri"
.FontStyle = "Standard"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
End With
Range("D2").Select
ActiveSheet.Shapes("Mitteln1").Visible = False
End Sub

Mit deinem Code fügt mir das Makro die Schaltflächen nicht mehr ein.
Kannst du den Code so gestalten damit dieser nur bei diesem Makro "GSkürzen" funktioniert bzw. aktiviert?
Freue mich auf deine Antwort.
Wünsche einen angenehmen Tag.
MfG
Julian

Anzeige
AW: Worksheet Change
10.02.2015 08:42:20
fcs
Hallo Julian,
um die genaue Ursache und die notwendige Reparatur machen zu können bräuchte ich mehr Informationen, am besten eine Beispieldatei.
Vermutlich reicht es die Ereignismakros während der Ausführung vorübergehend zu deaktivieren.
füge zu Beginn
Application.EnableEvents = False
ein.
am Ende
Application.EnableEvents = True
Gruß
Franz

AW: Worksheet Change
10.02.2015 10:27:06
Julian
Hallo Franz,
du bist der Wahnsinn!
Funktioniert!
Vielen Vielen Dank!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige