Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Arbeitsblatt als Variable
#1
Hallo Excel Forum !

Sitze seit ewiger Zeit vor einem Problem, hoffe einer weiss Rat.
Ich habe mit dem Makrorecorder ein Makro Aufgezeichnet, was den Inhalt Sortiert.
Den Code in meine Userorm Kopiert,so das er mit einem Button in der Userform Ausgeführt wird.
Es gibt vier Baugleiche Tabellen, deren Inhalt ich in der Userform über eine Listbox
Anzeigen lasse.
Was wenn die erste Tabelle Aktiviert ist auch Funktioniert, aber bei den anderen Natürlich nicht.

Habe Versucht (Anfängerlogik), mit einer Variable


Code:
Dim TabName As String
TabName = ActiveSheet.Name
Und in dem Code alle ("ML1R") mit ("TabName") Ausgetauscht.
Was nicht Funktioniert (Index auserhalb des gültigen Bereichs), vom rein Logischen her, hätte ich
gedacht das Klappt.
LG  Gerhard

Private Sub cmdDatenZeigen_Click()
   
Dim x As Integer

   Let x = Val(InputBox("Sheet (1-4):"))
   If (x = 1) Then
   ThisWorkbook.Worksheets("V_ML1R").Activate
   ElseIf (x = 2) Then
   ThisWorkbook.Worksheets("V_ML1L").Activate
   ElseIf (x = 3) Then
   ThisWorkbook.Worksheets("V_ML2R").Activate
   ElseIf (x = 4) Then
   ThisWorkbook.Worksheets("V_ML2L").Activate
   End If
       
lbxDaten.ColumnCount = 10
lbxDaten.RowSource = ("A4:J20")
   
End Sub


Private Sub cmdSortieren_Click()

   ActiveWorkbook.Worksheets("V_ML1R").ListObjects("Tabelle1").Sort.SortFields. _
       Clear
   ActiveWorkbook.Worksheets("V_ML1R").ListObjects("Tabelle1").Sort.SortFields. _
       Add Key:=Range("Tabelle1[[#All],[Bedarfsort]]"), SortOn:=xlSortOnValues, _
       Order:=xlAscending, DataOption:=xlSortNormal
   With ActiveWorkbook.Worksheets("V_ML1R").ListObjects("Tabelle1").Sort
       .Header = xlYes
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
   End With


End Sub
Antworten Top
#2
Hi

Versuch es mal so.

Code:
Dim TabName As String
TabName = ActiveSheet.Name
Und in dem Code alle ("ML1R") mit (TabName) Ausgetauscht.
also ohne " "

Gruß Elex
Antworten Top
#3
Hi Elex,
Im ersten Tabellenblatt Funktioniert es, in den anderen dieselbe Fehlermeldung. Der selbe Efekt wie vorher, ohne Variable. Als wenn keine Variable vorhanden ist.
Ist evtl. so auch nicht machbar.
Danke, LG
Antworten Top
#4
Hi

Erstmal ist mir nur der Syntaxfehler aufgefallen, der aber dein Problem wohl nicht gänzlich Lösen konnte.
 
Zitat:Ist evtl. so auch nicht machbar.
 
Um das zu beurteilen fehlen mir die Zusammenhänge. Welcher Code steht wo? Wie und von wo wird die Ausführung gestartet?
 
Evtl. Bsp.Datei bereitstellen.

Gruß
Antworten Top
#5
Hab mal eine Beispieldatei Angefügt, hoffe das es Hilfreich ist.


Angehängte Dateien
.xlsm   Beispieldatei_02.xlsm (Größe: 66,31 KB / Downloads: 5)
Antworten Top
#6
Hallo,

der Name des ListObj. ändert sich auch. Versuch es mal so.

Code:
Private Sub cmdSortieren_Click()

Dim TabName, ObjName As String

TabName = ActiveSheet.Name
ObjName = ActiveSheet.ListObjects(1).Name

    ActiveWorkbook.Worksheets(TabName).ListObjects(ObjName).Sort.SortFields. _
        Clear
    ActiveWorkbook.Worksheets(TabName).ListObjects(ObjName).Sort.SortFields. _
        Add Key:=Range("Tabelle1[[#All],[Bedarfsort]]"), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets(TabName).ListObjects(ObjName).Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • Foregner
Antworten Top
#7
@Elex
Super,Funktioniert, so wie Angedacht. ich versteh zwar noch nicht warum,Aber fang ja auch gerade erst an.
Herzlichen Dank

LG Gerhard
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste