Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
348to352
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
348to352
348to352
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sheet.Name begrenzen

Sheet.Name begrenzen
07.12.2003 19:08:41
Lorenz K.
Hallo VBAler und Grüß Euch!
Mit dem folgenden Code werden alle Sheets in der befindlichen Mappe angesprochen außer des Activen.
Was ist zu machen um nur die in InStr angeführten, anzusprechen.



Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If InStr(1, "1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.", Sh.Name) <> 0 Then
Dim wks As Worksheet
Dim oPopUp As CommandBarPopup
Dim oBtn As CommandBarButton
On Error Resume Next
Application.CommandBars("Cell").Controls("wähle Blatt mit selben Bereich").Delete
On Error GoTo 0
Set oPopUp = Application.CommandBars("Cell").Controls.Add(msoControlPopup)
oPopUp.Caption = "wähle Blatt mit selben Bereich"
For Each wks In Worksheets
If wks.Name <> ActiveSheet.Name Then
Set oBtn = oPopUp.Controls.Add
With oBtn
.Caption = wks.Name
.OnAction = "GoToWks"
.Style = msoButtonCaption
End With
End If
Next wks
End If
End Sub


BasMain:
Sub GoToWks()
Dim iRow As Integer, iCol As Integer
Dim sRange As String
iRow = ActiveWindow.ScrollRow
iCol = ActiveWindow.ScrollColumn
sRange = ActiveCell.Address
Worksheets(CommandBars.ActionControl.Caption).Select
ActiveWindow.ScrollRow = iRow
ActiveWindow.ScrollColumn = iCol
Range(sRange).Select
End Sub


Danke und
Grüße Lorenz

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheet.Name begrenzen
07.12.2003 19:31:03
Ramses
Hallo Lorenz

ich verstehe die Frage nicht ganz in Zusammenhang mit dem Makro.
Was willst du genau erreichen ?

Gruss Rainer
AW: Sheet.Name begrenzen
07.12.2003 19:39:24
Lorenz K.
Mit genannten Code wird das ganze Arsenal von Sheets aufgerufen,
bzw. per BarPopup zur Auswahl angezeigt.
In meinem Fall möchte ich daß nur das Blatt 1. u. 2. u. 3. usw. bis 31.
zur Auswahl dargestellt wird.

Grüße Lorenz
AW: Sheet.Name begrenzen
07.12.2003 19:54:50
Ramses
Hallo

wenn ich es richtig verstanden habe, sollte es auch so gehen


Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim i As Integer
Dim oPopUp As CommandBarPopup
Dim oBtn As CommandBarButton
On Error Resume Next
Application.CommandBars("Cell").Controls("wähle Blatt mit selben Bereich").Delete
On Error GoTo 0
Set oPopUp = Application.CommandBars("Cell").Controls.Add(msoControlPopup)
oPopUp.Caption = "wähle Blatt mit selben Bereich"
For i = 1 To Worksheets.Count
If Worksheets(i).Name <> ActiveSheet.Name Then
Set oBtn = oPopUp.Controls.Add
With oBtn
.Caption = Worksheets(i).Name
.OnAction = "GoToWks"
.Style = msoButtonCaption
End With
End If
Next i
End Sub


Gruss Rainer
Anzeige
AW: Sheet.Name begrenzen
07.12.2003 20:32:18
Lorenz K.
Hallo Rainer!!

Leider sind noch immer alle Sheets des Workbooks bei der Auswahl im Popup sichtbar.
sonst Funzt`s einwandfrei.

Gruss Lorenz
AW: Sheet.Name begrenzen
07.12.2003 20:38:11
Ramses
Hallo

ich kapiere das immer noch nicht genau.
Ändere die Zeile

For i = 1 To Worksheets.Count

in

For i = 1 To 31

dann werden nur die Tabellen 1 - 31 angezeigt.
Oder was willst du genaut anzeigen...`?

Gruss Rainer
AW: Sheet.Name begrenzen
07.12.2003 21:00:15
Lorenz K.
Hallo Rainer!
mit der Änderung 1 To 31
wird zwar auf 31 Tabellen begrenzt, aber nicht auf die mit Sheet.Name ="1.", "2.",.. "3."
ebenso nicht auf "Tabelle1" "Tabelle2" .... "Tabelle31"

Grüsse Lorenz
Anzeige
Ich kapier immer weniger :-(
07.12.2003 21:09:20
Ramses
Hallo Lorenz

Wenn ich das richtig verstehe, willst du im PopUp nur die Namen der Arbeitsblätter mit den Bezeichnungen 1, 2,3, usw. bis 31,... oder heissen die auch noch anders ?
Sonst könntest du das so machen


   For i = 1 To 31
      If Worksheets(i).Name <> ActiveSheet.Name Then
         Set oBtn = oPopUp.Controls.Add
         With oBtn
            .Caption = "Tabelle" & 1
            ' oder so...
            '.Caption = i
            .OnAction = "GoToWks"
            .Style = msoButtonCaption
         End With
      End If
   Next i
 
     Code eingefügt mit Syntaxhighlighter 1.16



Gruss Rainer
Anzeige
AW: Ich kapier immer weniger :-(
07.12.2003 21:25:42
Lorenz K.
Hallo Rainer!
Das nicht kapieren liegt scheinbar an meiner schlecht formulierten Aufgabenstellung!
Aber nichts desto Trotz so funzts wie ich wollte!

For i = 1 To 31
If Worksheets(i).Name <> ActiveSheet.Name Then
Set oBtn = oPopUp.Controls.Add
With oBtn
.Caption = i & "."
.OnAction = "GoToWks"
.Style = msoButtonCaption
End With
End If
Next i

Grüsse und Danke
Lorenz
Merci :-))) Geschlossen. o.T.
07.12.2003 21:29:09
Ramses
...
AW: Sheet.Name begrenzen
07.12.2003 19:55:13
Otto Ecker
Hallo Lorenz,

nachfolgend eine etwas längere Ausführung:

Option Explicit

Dim cbcb As CommandBarComboBox

Sub MenuCombobox()
Dim existing As Boolean
Dim PersMenu As CommandBarControl
Dim i As Byte, i_Hilfe As Byte
i = Application.CommandBars(1).Controls.Count
i_Hilfe = Application.CommandBars(1).Controls(i).Index
' Popup-Menü vorbereiten
'Set PersMenu = Application.CommandBars(1).Controls.Add(Type:=msoControlButton, Id:=3, temporary:=True)  'Speichern
'prüfen ob die Blattliste schon besteht
For Each PersMenu In Application.CommandBars(1).Controls
If PersMenu.Tag = "Blattliste" Then
existing = True
PersMenu.Delete
End
End If
Next
' Listenfeld in die Symbolleiste »Neue Symbolleiste« eintragen
If Not existing Then
Set cbcb = Application.CommandBars(1).Controls.Add(Type:=msoControlDropdown, Before:=i_Hilfe, temporary:=True)
cbcb.Tag = "Blattliste"
cbcb.TooltipText = "Blattliste"
cbcb.OnAction = "SheetCombo_OnAction"
cbcb.DropDownWidth = 150
cbcb.DropDownLines = 20
End If
' Ereignis für Arbeitsmappenwechsel empfangen
Call b
End Sub


' Auswahl eines Blattnamen in der CommandBarComboBox

Sub SheetCombo_OnAction()
Dim cbcb As CommandBarComboBox
On Error Resume Next
Set cbcb = CommandBars.FindControl(Type:=msoControlDropdown, Tag:="Blattliste")
ActiveWorkbook.Sheets(cbcb.Text).Activate
End Sub



Sub b()
Dim i As Integer
Dim ws As Worksheet
For Each ws In Worksheets
For i = 1 To 31
If ws.Name = i &"." Then
cbcb.AddItem i&"."
End If
Next i
Next ws
End Sub


Gruß Otto
Anzeige
AW: Sheet.Name begrenzen
07.12.2003 20:29:18
Lorenz K.
Hallo Otto!
Bei "cbcb.AddItem i&"."" wird Anweisungsende erwartet(ist im Codefenster "rot")
mit dem restlichen funzts so wie im Original:
nämlich --> alle Sheets im Workbook werden angezeigt.
Gruss
Lorenz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige