• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

automatisch werkblad per gebruiker

Status
Niet open voor verdere reacties.

ricohard73

Gebruiker
Lid geworden
27 jun 2007
Berichten
23
Kan iemand mij helpen...

Ik probeer, met onderstaande programmering, dat er automatisch een werkblad wordt aangemaakt als het programma wordt gestart. De gebruikers zijn variabel.... maar hij blijft maar vastlopen.



Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim rij As Long
Application.DisplayAlerts = False
With Sheets(Application.UserName)
rij = .Range("A1000").End(xlUp).Row + 1
.Range("A" & rij).Resize(1, 4).Value = Array(Date, Time, Application.UserName, ThisWorkbook.Name)
End With
Application.SaveWorkspace
Application.DisplayAlerts = True
End Sub



Code:
Private Sub Workbook_Open()
With Sheets(Application.UserName)
rij = .Range("A1000").End(xlUp).Row + 1
.Range("A" & rij).Resize(1, 4).Value = Array(Date, Time, Application.UserName, ThisWorkbook.Name)
End With
Application.SaveWorkspace
Application.DisplayAlerts = True
End Sub
Code:
Sub BladAanmakenWigi()
Dim ws As Worksheet
Dim sSheetName As String
sSheetName = " Application.UserName " & ActiveSheet.Name
Set ws = ThisWorkbook.Sheets.Add(after:=ActiveSheet)
End Sub
 
Laatst bewerkt door een moderator:
Je geeft niet aan waar hij vastloopt, dus dit wordt lastig.


In de workbooks_open macro probeert de macro wel gelijk van een blad met als naam de gebruiker een waarde op te halen. Als dit blad niet bestaat (nieuwe gebruiker) werkt dit niet.

In de macro BladAanmakenWigi() wordt wel een nieuw blad aangemaakt maar je doet verder niets met de naam, de naam van het nieuwe blad wordt dus door excel bepaald, niet door de macro. Je krijgt trouwens wel een vreemde naam zo.

Ik zou even kijken bij de originele macro van WIGI, hij heeft dit vast niet zo gedaan.

edit:
waarom trouwens een nieuw topic ? zie http://www.helpmij.nl/forum/showthread.php?t=340873
 
Laatst bewerkt:
Hans,

Hij loopt vast bij
With Sheets(Application.UserName)

Ik heb de macro van WIGI aangepast
sSheetName = " Application.UserName " & ActiveSheet.Name

Ik begrijp je uitleg waarom hij vastloopt, echter weet ik niet hoe ik dit werkend kan krijgen.
Het komt er op neer dat ik per gebruiker een wordksheet wil toewijzen ( toewijzen) waarin het inlog en uitlog wordt geregistreerd.

Hieronder mijn eerste opzet. deze werkte wel, echter wanneer er meerdere gebruikers tegelijk bezig zijn krijg je een conflict op blad3. Is hier dan ook een andere oplossing voor?

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.DisplayAlerts = False
rij = Sheets("Blad3").Range("A1000").End(xlUp).Row + 1
Sheets("Blad3").Range("A" & rij) = Date
Sheets("Blad3").Range("B" & rij) = Time
Sheets("Blad3").Range("C" & rij) = Application.UserName
Sheets("Blad3").Range("D" & rij) = ThisWorkbook.Name
Application.SaveWorkspace
Application.DisplayAlerts = True
End Sub

Private Sub Workbook_Open()
rij = Sheets("Blad3").Range("B1000").End(xlUp).Row + 1
Sheets("Blad3").Range("E" & rij) = Date
Sheets("Blad3").Range("F" & rij) = Time
Sheets("Blad3").Range("G" & rij) = Application.UserName
Sheets("Blad3").Range("H" & rij) = ThisWorkbook.Name
End Sub
 
Je zal eerst moeten controleren of dit blad al bestaat, dit kan in een loop. indien blad niet bestaat, blad aanmaken.

Zou er zo uit kunnen zien:

Code:
Private Sub Workbook_Open()
    Dim BladGevonden As Boolean
    BladGevonden = False
    For Each blad In ActiveWorkbook.Sheets
        If blad.Name = Application.UserName Then
            With Sheets(Application.UserName)
                rij = .Range("A1000").End(xlUp).Row + 1
                .Range("A" & rij).Resize(1, 4).Value = Array(Date, Time, Application.UserName, ThisWorkbook.Name)
            End With
            BladGevonden = True
            Exit For
        End If
    Next blad
    If BladGevonden = False Then
        Call BladAanmakenWigi
         With Sheets(Application.UserName)
            rij = .Range("A1000").End(xlUp).Row + 1
            .Range("A" & rij).Resize(1, 4).Value = Array(Date, Time, Application.UserName, ThisWorkbook.Name)
        End With
    End If

Application.SaveWorkspace
Application.DisplayAlerts = True
End Sub

Sub BladAanmakenWigi()
    Dim ws As Worksheet
    Dim sSheetName As String
    sSheetName = Application.UserName
    Set ws = ThisWorkbook.Sheets.Add(after:=ActiveSheet)
    ws.Name = sSheetName
End Sub
 
Hans,

Helemaal te gek!!
Werkt super.

Thank you very much:thumb:
Je maakt er een behoorlijk puinhoop van hier. Je houd je niet aan de regels die hier gelden en al helemaal niet aan de regels die gelden op dit fotum. Voor het eerste kan ik je naar hier verwijzen. En voor het tweede naar de algemene regels van dit forum. Ergo, VBA code plaats je tussen de codetags. En twee keer een vraag plaatsen is niet toegestaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan