Mein lieber terres,
warum deklarierst du ein Worksheet-Objekt mit Public-Anweisung doppelt?
Es ist im Geltungsbereich deines VBA Projekts bereits öffentlich!
Um ein Sheet direkt anzusprechen ändere im Editor seinen Codenamen

Gleiches kannst du auch über eine Prozedur erledigen:
1 2 3 4 5 6 7 8 9 10 | Sub Codenames()
Dim sheet As Object
Set sheet = ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets( "roh_wert" ).CodeName)
sheet.Name = ActiveWorkbook.Sheets( "roh_wert" ).Name
Set sheet = ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets( "wert_gueltig" ).CodeName)
sheet.Name = ActiveWorkbook.Sheets( "wert_gueltig" ).Name
End Sub
|
Willst du unbedingt einen Ersatz für "Globale Variable", dann code in einem allgemeinen Modul so
1 2 3 4 5 6 | Public Property Get MyRoh() As Worksheet
Set MyRoh = ThisWorkbook.Sheets( "Tabelle6" )
End Property
Public Property Get MyGueltig() As Worksheet
Set MyGueltig = ThisWorkbook.Sheets( "Tabelle7" )
End Property
|
und irgendwo die zuweisende Prozedur
1 2 3 4 5 6 7 8 9 | Sub Get_asd_Klicken()
Dim t As Long
t = 3
With MyRoh
.Range( "A" & t).Copy MyGueltig.Range( "B" & t + 2)
End With
End Sub
|
Jetzt hast du aber noch lange nicht das von dir deklamierte Set
Dazu benötigst du eine eigene Klasse - zum Bleistift clsWshSet

dann lautet dein Modul-Code in etwa so
1 2 3 4 5 6 7 8 9 | Sub cls_asd_Klicken()
Dim t As Long
Dim oWshSet As New clsWshSet
t = 9
oWshSet.ShRoh.Range( "A" & t).Copy oWshSet.ShGueltig.Range( "B" & t)
End Sub
|
Der ganze Schmäh ist auch nicht von mir, den findest du überall im Netz und auch jetzt in diesem Forum.
LG woswasi
|