Excel VBA-Editor - Kopieren von Zellen

Ich Blödmann. Sorry mein Fehler.

Du musst es in die Worksheet_Activate-Prozedur schreiben. Da der Button ja in der Tabelle (Worksheet) enthalten ist, kann die Datei (Workbook) ihn ja gar nicht kennen. Deshalb auch der Fehler, Excel kaennt das Objekt an der Stelle ja noch gar nicht.
 
Habe ich jetzt auch mal gemacht. Ganz an den Anfang oder?
Sieht dann so aus.

Code:
Private Sub Worksheet_Activate()

If UserName = "R885897" Then
    Button.Enable = True
Else
    Button.Enabled = False
End If

End Sub



Private Sub CommandButton1_Click()
  
    Dim lngLast As Long
    
    If Trim(Range("G61").Value) = "" Or Trim(Range("I77").Value) = "" Then    'Zellen für Pflichtfelder <Datum> und <Aufmaß-Nr>
    MsgBox "Die Zellen 'Datum' und 'Aufmaß-Nr' müssen ausgefüllt werden.", vbOKOnly, "Fehler"    'Message Box
    
Else
    
    
    'Regionalzentrum
        ThisWorkbook.Worksheets("Aufmaßanfrage").Range("L15").Copy
        lngLast = Workbooks("Aufmassdatei.xls").Worksheets("Aufmassdatei").Cells(Rows.Count, "A").End(xlUp).Row + 1
        Workbooks("Aufmassdatei.xls").Worksheets("Aufmassdatei").Range("Q" & lngLast).PasteSpecial Paste:=xlPasteValues


Leider aber wieder Laufzeitfehler '424'
 
Ok und was fällt dir auf wenn du die Click-Prozedur deines Buttons anschaust?

Er heißt nicht einfach "Button" sondern "CommandButton1". Ändere im Code die Bezeichnung und du hast es geschafft!
 
Das hatte ich ja selber schon vorher mal ausprobiert. Aber dann konnte ich den Button garnicht mehr betätigen. Den UserName habe ich dann nochmal nachgeschaut obs vllt der falsche ist, aber es ist: R885897
 
Ich glaube das steckt wieder mal viel MS Logik dahinter.

Wenn ich die Variable "username" beim Eingeben komplett klein schreibe und die Zeile verlasse, dann wird das Wort automatisch in "UserName" umgewandelt.
Das bedeutet für mich Excel hat erkannt das es eine - nennen wir es mal Systemvariable ist.

Wenn man dann aber den Inhalt überprüft erhält man immer nichts zurück, kein Inhalt.

Erst wenn man den Code so ändert

Visual Basic:
Private Sub Worksheet_Activate()
'man achte auf Application vor dem Usernamen
If Applictaion.UserName = "R885897" Then
    CommandButton1.Enable = True
Else
    CommandButton1.Enabled = False
End If
 
End Sub

dann bekommt man etwas zurück und kann die Überprüfung vornehmen.

Gruß Thomas
 
Zuletzt bearbeitet:
Das Problem ist, dass ich das Makro erst immer ausführen muss damit es funktioniert. Es geht nicht wenn das Worksheet aktiviert wird.

Edit: Hatte nicht gelesen das du noch was geschrieben hattest. Werde es jetzt mal ausprobieren danke.

Greetz Chris
 
Geh mal her und gib irgendwo im VBA-Editor folgenden Code ein:

Visual Basic:
Sub test()
    Debug.Print "-" & UserName & "-"
    Debug.Print "-" & Application.UserName & "-"
End Sub

dann blende dir (sofern nicht sichtbar) das Direktfenster ein und drücke die F5-Taste.

Dann wird der Unterschied klar. Beim Ersten erhältst du nur "--" und beim Zweiten kommt dann z.B. "-R885897-".
 
Bekam leider immer noch einen Laufzeitefehler. Vllt war ich auch zu blöd es richtig einzutippen. Habe da aber jetzt noch was gefunden mit dem es geklappt hat.

Code:
Private Sub Workbook_Open()
    Worksheets("Aufmaßanfrage").CommandButton1.Visible = Environ("Username") = "R885897"
End Sub

Greetz Chris
 
Zurück