Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#74231
Bom Dia Senhores.

Tenho uma macro que preciso deixa-la privada e ela precisa ser executada assim que a pasta de trabalho é aberta, logo não teria como inseri-la em um módulo, por isso a inserido no evento workbook open.

Uma das ações da macro é solicitar o nome do usuário por meio de um inputbox, mas esse inputbox deve aparecer pelo menos 1 segundo após a pasta de trabalho ser aberta, senão o registro não acontece pelos testes que fiz, pois a planilha que registra o nome está oculta “very hyden”, então quando a pasta de trabalho abre a planilha também é exibida e em seguida fica oculta novamente.

A pergunta é como fazer essa macro ser executada 1 segundo após a abertura da pasta de trabalho considerando que ela deve ser privada para que ela não seja exibida ao usuário?

Eu tentei a abordagem abaixo, mas não vai funcionar, pois em workbookopen não se coloca o nome da rotina. Observe que deixei em aspa simples.

Application.OnTime Now + TimeValue("00:00:01"), "RegistraDataHoraInicial"


'Private Sub RegistraDataHoraInicial()

On Error Resume Next
Dim lastRow As Long
Dim dataAtual As Date
' Inicializar a variável dataAtual com a data atual
dataAtual = Date
' Verificar se o nome do usuário já foi definido
If Not userDefined Then
Dim userName As String
' Se o nome do usuário não estiver definido, solicitar ao usuário que insira seu nome
userName = InputBox("Por favor, insira seu nome:", "Registro de Usuário")
' Armazenar o nome do usuário na pasta de trabalho
ThisWorkbook.Names.Add Name:="UserName", RefersTo:=userName
userDefined = True ' Marcar que o nome do usuário foi definido
End If
' Tornar a planilha "Login" visível
Sheets("Login").Visible = True
' Registrar entrada do usuário
With Sheets("Login")
If Err.Number <> 0 Then
MsgBox "Erro ao acessar a planilha ""Login"".", vbExclamation
Exit Sub
End If
' Encontrar a última linha preenchida na coluna B a partir da linha 2
lastRow = .Cells(.Rows.count, "B").End(xlUp).Row + 1
If lastRow < 2 Then lastRow = 2 ' Se a última linha for menor que 2, ajustar para 2
' Registrar o usuário na coluna A com o nome inserido pelo usuário
On Error Resume Next ' Ignorar erros caso o nome do usuário não exista
.Cells(lastRow, "A").Value = ThisWorkbook.Names("UserName").RefersToRange.Value
On Error GoTo 0 ' Retornar ao tratamento normal de erros
' Registra a data de entrada na coluna B
.Cells(lastRow, "B").Value = dataAtual
' Registrar a hora de entrada na coluna C
.Cells(lastRow, "C").Value = Format(Now, "hh:mm:ss")
End With
' Ocultar novamente a planilha "Login"
Sheets("Login").Visible = xlSheetVeryHidden
On Error GoTo 0
End sub
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord