Anzeige
Archiv - Navigation
636to640
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
636to640
636to640
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehler in Kontextmenü

Fehler in Kontextmenü
20.07.2005 17:29:08
Heinz
Hallo Leute
Habe ein Makro für ein eigenes Kontextmenü mit der rechten Maustaste.
Die anzeige mit der rechten Maustaste passt.Nur wenn der Eintrag zb."Krank"erfolgen soll,wird ein Fehler "Laufzeitfehler 1004"gebracht.
Könnte mir Bitte jemand erklären wo der Fehler liegt ?
Danke & Gruß Heinz

Sub Krank1()
Application.ScreenUpdating = False
For Each rng In Selection
If rng.Row > 5 And rng.Row < 53 And rng.Offset(0, -10) <> "" Then rng.Value = "Krank"
Next
Application.ScreenUpdating = True
End Sub

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler in Kontextmenü
20.07.2005 17:39:36
Reinhard
Hi Heinz,
ich habe eine Vermutung, was passiert denn wenn du den Code startest wenn du in einer Spalte rechts von Spalte J stehst?
Gruß
Reinhard
AW: Fehler in Kontextmenü
20.07.2005 17:50:39
Heinz
Hallo Rainhard
Ich bin blöd,habe den Code von einer anderen Arbeitsmappe übernommen.In der Spalte "L" funkt.er tadellos.
Wie bringe ich in aber auf Spalte "D" ?
Gruß Heinz


AW: Fehler in Kontextmenü
20.07.2005 17:45:45
Volker
Hallo Heinz,
für alle Zellen links von Spalte K ergibt offset(0,-10) einen Fehler, weil er sich dann auf eine Spalte links von Spalte A bezieht.
Zur Abhilfe solltest du noch eine entsprechende Abfrage einfügen
If rng.column&gt10 and rng.Row &gt 5 And rng.Row &lt 53 And rng.Offset(0, -10) &lt&gt "" Then rng.Value = "Krank"
Vielleicht willst Du die Eingabe ja sogar auf Spalte K beschränken.
Dann muß es If rng.column=10 and....... lauten.
Gruß
Volker
Anzeige
AW: Fehler in Kontextmenü
20.07.2005 18:17:29
Heinz
Hallo Volker
Danke für Deine Hilfe.Funkt.Einwandfrei.
Ein anderes Problem wenn ich die die rechte Maustaste zb."Schicht 1" anwähle steht vorher ein groß und fettes "B".
Bei meiner forherigen Arbeitsmappe hat es gepasst für "Bringtag",wie kann ich diese Buchstaben ändern ?
Weisst Du da zufällig einen Rat ?
Nochmals herzlichen dank an
Rainhard & an Dich
Heinz
AW: Fehler in Kontextmenü
20.07.2005 18:34:38
Volker
Ich muß gestehen, dass ich keine Ahnung hab, wie man sich das Kontextmenü selber strickt.
Laß mich doch mal den Code sehen, dann kann ich dir ev. helfen und lern sogar noch was dabei.
Gruß
Volker
Anzeige
AW: Fehler in Kontextmenü
20.07.2005 18:41:27
Heinz
Hallo Volker
Gerne sende ich Dir den gewünschten Code.
Dim rng As Range

Sub EditContext()
On Error Resume Next
ResetContext
With Application.CommandBars("Cell")
Do While .Controls.Count > 0
.Controls(1).Delete
Loop
Set oBtn1 = .Controls.Add
Set oBtn2 = .Controls.Add
Set oBtn3 = .Controls.Add
Set oBtn4 = .Controls.Add
Set oBtn5 = .Controls.Add
Set oBtn6 = .Controls.Add
End With
With oBtn1
.BeginGroup = True
.Caption = "SCHICHT 1"
.OnAction = "Schicht11"
.FaceId = 81
End With
With oBtn2
.Caption = "SCHICHT 2"
.OnAction = "Schicht21"
.FaceId = 85
End With
With oBtn3
.Caption = "SCHICHT 3"
.OnAction = "Schicht31"
.FaceId = 90
End With
With oBtn4
.Caption = "REGIE"
.OnAction = "Regie1"
.FaceId = 95
End With
With oBtn5
.Caption = "URLAUB"
.OnAction = "Urlaub1"
.FaceId = 100
End With
With oBtn6
.Caption = "KRANK"
.OnAction = "Krank1"
.FaceId = 105
End With
End Sub


Sub ResetContext()
Application.CommandBars("Cell").Reset
End Sub


Sub Schicht11()
Application.ScreenUpdating = False
For Each rng In Selection
If rng.Row > 5 And rng.Row < 53 And rng.Offset(0, -3) <> "" Then rng.Value = "SCHICHT 1"
Next
Application.ScreenUpdating = True
End Sub


Sub Schicht21()
Application.ScreenUpdating = False
For Each rng In Selection
If rng.Row > 5 And rng.Row < 53 And rng.Offset(0, -3) <> "" Then rng.Value = "SCHICHT 2"
Next
Application.ScreenUpdating = True
End Sub


Sub Schicht31()
Application.ScreenUpdating = False
For Each rng In Selection
If rng.Row > 5 And rng.Row < 53 And rng.Offset(0, -3) <> "" Then rng.Value = "SCHICHT 3"
Next
Application.ScreenUpdating = True
End Sub


Sub Regie1()
Application.ScreenUpdating = False
For Each rng In Selection
If rng.Row > 5 And rng.Row < 53 And rng.Offset(0, -3) <> "" Then rng.Value = "REGIE"
Next
Application.ScreenUpdating = True
End Sub


Sub Urlaub1()
Application.ScreenUpdating = False
For Each rng In Selection
If rng.Row > 5 And rng.Row < 53 And rng.Offset(0, -3) <> "" Then rng.Value = "URLAUB"
Next
Application.ScreenUpdating = True
End Sub


Sub Krank1()
Application.ScreenUpdating = False
For Each rng In Selection
If rng.Row > 5 And rng.Row < 53 And rng.Offset(0, -3) <> "" Then rng.Value = "KRANK"
Next
Application.ScreenUpdating = True
End Sub

Anzeige
Face-ID
20.07.2005 18:52:54
Gerhard
Hallo Heinz,
sieh mal in deine Mailbox oder in der Recherche unter Face ID
gruss
Gerhard S.
AW: Face-ID - D A N K E
20.07.2005 18:57:31
Heinz
DANKE an alle,die mir immer so zur Seite stehen ,mit meinen Problemen.
Ich hoffe das ich es eines Tages nur annähernd so lerne wie Ihr !!
Gruß Heinz
AW: Fehler in Kontextmenü
20.07.2005 18:58:46
Klaus
Hallo Volker,
diese Buchstaben sind in Wirklichkeit kleine Bildchen, die du in deinem Code über FaceId angibst.
.FaceId = 81 verknüpft deinen Kontexteintrag mit dem Bild vom Buchstaben B.
.FaceId = 80 wäre dann Buchstabe A und .FaceId = 82 wäre C usw.
Dies geht bis zur Nummer 105 = Z.
Unter .FaceId = 80 geht es weiter mit Nummern (.FaceId = 79 entspricht 9 usw.)
Das es eigentlich Bilder sind merkst du, wenn du z.B. die Nummer .FaceId = 69 eingibst. Es erscheint nun vor deinem Eintrag ein Monitorbildchen.
Gruß Klaus
Das es eigentlich Bilder sind
Anzeige
schäm...
20.07.2005 19:10:53
Volker
war ich wohl etwas voreilig.
Wenn's dem Esel zu wohl wird, geht eben auf's Eis.
Danke für den Tip
Volker
AW: Fehler in Kontextmenü
20.07.2005 19:06:54
Volker
Stimmt, Gerhard hat Recht.
Die Face-ID der Buttons in dem Code ist nichts anderes als der ASCII-Code des entsprechenden Buchstabens in Dezimalschreibweise.
65 entspricht "A", 66 entspricht "B" .... 90 entspricht "Z"
Im übrigen vielen Dank für den nützlichen Code. Man lernt doch nie aus.
Hab noch blöd aus der Wäche geschaut, weil ich erst nicht wußte, wie man das ürsprüngliche Menü wieder herbekommt.
Aber Application.CommandBars("Cell").Reset tut's
Sollte man vielleicht in die Workbook.Close einbauen.
Viele Grüße
Volker
Anzeige
AW: Fehler in Kontextmenü
20.07.2005 20:16:41
Reinhard
Hallo Heinz,
mein Code ist kürzer, nur in die Sub tt() wird nie gesprungen, k.A. warum, deshalb Frage wieder offen
Gruß
Reinhard

Sub EditContext()
On Error Resume Next
ResetContext
With Application.CommandBars("Cell")
Do While .Controls.Count > 0
.Controls(1).Delete
Loop
Set oBtn1 = .Controls.Add
Set oBtn2 = .Controls.Add
Set oBtn3 = .Controls.Add
Set oBtn4 = .Controls.Add
Set oBtn5 = .Controls.Add
Set oBtn6 = .Controls.Add
End With
For n = 0 To 5
Call tt(n)
Next n
End Sub
Sub tt(ByVal n As Integer)
Texte = Array("Schicht11", "Schicht21", "Schicht31", "Regie1", "Urlaub1", "Krank1")
buchs = Array(81, 85, 90, 95, 100, 105)
With Application.CommandBars("Cell").Controls("oBtn" & n + 1)
If n = 0 Then .BeginGroup = True
.Caption = UCase(Left(Texte(n), Len(Texte(n) - 1))) & " " & n + 1
.OnAction = Texte(n)
.FaceId = buchs(n)
If n >= 3 Then .Caption = UCase(Left(Texte(n), Len(Texte(n) - 1)))
End With
End Sub
Sub ResetContext()
Application.CommandBars("Cell").Reset
End Sub
Sub Schicht11()
Call ttt(0)
End Sub
Sub Schicht21()
Call ttt(1)
End Sub
Sub Schicht31()
Call ttt(2)
End Sub
Sub Regie11()
Call ttt(3)
End Sub
Sub Urlaub1()
Call ttt(4)
End Sub
Sub Krank1()
Call ttt(5)
End Sub
Sub ttt(ByVal n As Integer)
Application.ScreenUpdating = False
For Each rng In Selection
If rng.Row > 5 And rng.Row < 53 And rng.Offset(0, -3) <> "" Then
If n < 3 Then rng.Value = UCase(Left(Texte(n), Len(Texte(n) - 1))) & " " & n + 1
If n >= 3 Then rng.Value = UCase(Left(Texte(n), Len(Texte(n) - 1)))
End If
Next
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Fehler in Kontextmenü
20.07.2005 21:05:20
Nepumuk
Hallo Reinhard,
da sind ein paar Fehler drin.
1. With Application.CommandBars("Cell").Controls(n + 1)
2. .Caption = UCase(Left(Texte(n), Len(Texte(n)) - 1)) & " " & n + 1
3. If n &gt= 3 Then .Caption = UCase(Left(Texte(n), Len(Texte(n)) - 1))
In der Entwurfsphase würde ich keine On Error - Anweisung benutzen.
Gruß
Nepumuk
Excel & VBA – Beispiele
Wiedermal merci :-) o.w.T.
20.07.2005 21:19:41
Reinhard
Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige