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:
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
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
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
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
|