bom dia a todos,
caros eu uso o código abaixo para controle de alterações na planilha, porém quando chega num determinado número de células começa a dar erro na aplicação...dae eu limpo a planilha que registra as ocorrências e volta a funcionar...
Pergunta: Será que tem alguma coisa errada no código...se alguém puder me ajudar
Att
Option Explicit
'rotina para gravacao de log de alteracoes tem a funcao de capturar os nomes da maquina e usuario
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'rotina para gravacao de log de alteracoes
Dim wsLog As Worksheet, Rng As Range
Dim B, Comp_Name, UserName, Arquivo1 As String
Dim Comp_Name_B As String * 255
Dim lpBuff As String * 25
GetComputerName Comp_Name_B, 255
Comp_Name = Left(Comp_Name_B, InStr(Comp_Name_B, Chr(0)) - 1)
GetUserName lpBuff, 25
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
Set wsLog = Sheets("Log") 'pasta onde sera gravado o log de alteracoes
If Sh Is wsLog Then Exit Sub
Set Rng = wsLog.Range("A" & Rows.Count).End(xlUp).Offset(1)
With Rng
.Value = Now 'data
.Offset(, 1) = Sh.Name 'nome da pasta onde o dado foi alterado
.Offset(, 2) = Target.Address 'endereco da celula alterada
.Offset(, 3) = UserName 'nome do usuario logado no PC
.Offset(, 4) = Comp_Name 'maquina utilizada pelo usuario
If Target.Cells.Count > 1 Then
.Offset(, 5) = "Valores Alterados" 'alteracoes realizadas
Else
.Offset(, 5) = Target.Formula
End If
End With
End Sub
Postado : 30/01/2013 6:43 am