Excel VBA-Editor - Kopieren von Zellen

Guten Morgen,
ich habe es jetzt etwas anders gemacht. Da ich dir Zeile ja Variablen zuweisen kann, habe ich einfach eine ''Aufmaß-Nr.'' dazu verwendet. Diese war sowieso schon in der Tabelle in Spalte A vorhanden und ist eine fortlaufende Zahl. Diese wird per Hand eingegeben und dann kopiert. Sie ist also in jeder Zeile vorhanden. Das ganze sieht dann so aus

Code:
'Aufmaß-Nr
        ThisWorkbook.Worksheets("Aufmaßanfrage").Range("I77").Copy
        lngLast = Workbooks("Aufmassdatei.xls").Worksheets("Aufmassdatei").Cells(Rows.Count, "A").End(xlUp).Row + 1
        Workbooks("Aufmassdatei").Worksheets("Aufmassdatei").Range("A" & lngLast).PasteSpecial Paste:=xlPasteValues

Greetz Chris
 
Da ich ja einen Button habe, der das Makro ausführt, würde ich diesen gerne nur für bestimmte Benutzer sichtbar machen. Ist das möglich? Alternativ ginge auch, dass nur bestimmte Benutzer die Berechtigung haben den Button zu betätigen. Könnte man ja vllt über den Benutzernamen in Excel machen oder?
Hat das schonmal jmd gemacht?
Habe es erst mit dem Blattschutz versucht, aber da sperrt er mir nur das Blatt und nicht den Button.

Greetz Chris
 
Hi,
habe den Benutzernamen ermittelt. Das sind immer so genannte "R-Nummern". Diesen Nummern könnte ich dann jetzt die Rechte zuordnen.
Habe das jetzt mal so versucht

Code:
Private Sub CommandButton1_Click()

If UserName.R885897 = "False" Then
Button.Enable = False

End If

Er sagt mir dann: "Fehler beim Kompilieren"
"Funktion oder Variable erwartet"

Irgendwas hab ich wieder falsch gemacht...

Greetz Chris
 
Also wenn der Excel-Benutzer zum Beispiel den "Namen" R885897 hat, dann musst du es so prüfen

Visual Basic:
If UserName = "R885897" Then
    Button.Enable = True
Else
    Button.Enabled = False
End If
 
Danke sehr. Das sieht gut aus. Und wo bring ich das in meinem Code unter.
Der Anfang sieht zur Zeit so aus

Code:
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
 
In Excel gibt es entweder die Prozedur "Worksheet_Activate()" oder "Workbook_Open()" und hier könntest du obigen Code reinschreiben.

Dann wird der Button bereits beim Öffnen der Datei bzw. beim Aktivieren der entsprechenden Tabelle gesperrt oder freigegeben.
 
Quasi ein neues Modul einfügen mit folgendem Code


Code:
Workbook_Open()
If UserName = "R885897" Then
    Button.Enable = True
Else
    Button.Enabled = False
End If

richtig?

Greetz
 
Nein!
Wenn du im VB-Editor bist, dann ist rechts das Projektfenster.
Dort klickst du entweder auf Arbeitsmappe oder auf Tabelle1 (oder so wie sie halt heißt). Dann kannst du die entsprechende Prozedur auswählen.

Auf dem Bild siehst du es besser (hier sind beide enthalten). Du suchst dir eine davon aus (ist eigentlich egal welche) und fügst den obigen Code/IF-Block ein.
 

Anhänge

  • vba-editor.jpg
    vba-editor.jpg
    140,8 KB · Aufrufe: 22
Okay verstanden. Danke.
Habe das jetzt gemacht und nun bringt er mir nen Laufzeitfehler '424' "Objekt erforderlich"

Code:
Private Sub Workbook_Open()
    
If UserName = "R885897" Then
    Button.Enable = True
Else
    Button.Enabled = False
End If
End Sub

Kann es sein, dass ich dem Button einen Namen zuordnen muss oder erkennt der das wenn ich nur Button schreibe?
 
Zurück