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.
  • Avatar do usuário
#64024
Boa tarde,

Tenho um ficheiro excel com duas folhas.

Pretendo proteger uma das folhas totalmente e isso consigo fazê-lo no entanto a outra folha tem macros....

não pretendo protegê-la na totalidade mas apenas algumas colunas que contêm as macros. Ao proteger essas colunas pretendo ocultar as fórmulas e não permitir que terceiros as modifiquem.

Quando seleciono as colunas e depois faço proteger a folha as macros deixam de funcionar.

Apenas voltam a contabilizar os dados quando retiro a proteção.

Há alguma forma de proteger parte da folha selecionando as colunas para as fórmulas estarem ocultas e não sejam modificadas por terceiros sem que as macros deixem de funcionar?

Deixo a baixo as macros que o meu ficheiro excel tem.

Se me puderem ajudar...

Obrigado




Public Function CountColors(rng As Range, color As Integer) As Integer
Dim rg As Range
Dim x As Integer

' Valor inicial
CountColors = 0

' Ciclo que irá percorrer todas as células definidas
For Each rg In rng

' Caso a cor interior (background) seja a escolhida
If rg.Interior.ColorIndex = color Then

' Incrementa o contador
x = x + 1

End If

Next

' Define que a função (valor a retornar) tem o valor de x
CountColors = x

End Function


----------------------------------------------------------

Public Function Boldsum(intervalo As Range) As Double

Dim Celula As Range

Dim Acumulador As Double


For Each Celula In intervalo

If Celula.Font.Bold And VBA.IsNumeric(Celula.Value) Then

Acumulador = Acumulador + Celula.Value


End If

Next

Boldsum = Acumulador

End Function

-------------------------------------------------

Function SumItalics(rSumRange As Range)
Dim rCell As Range
Dim vResult

For Each rCell In rSumRange
If rCell.Font.Italic Then
vResult = WorksheetFunction.Sum(rCell) + vResult
End If
Next rCell

SumItalics = vResult
End Function

-----------------------------------------------------
Function SOMACOR(qRange As Range, ByVal qCor$) As Double
Dim c As Range, xcolor&, xvalue#

Select Case qCor$
Case "VERMELHO"
xcolor& = 255

End Select

Contador = 0
For Each c In qRange
If c.Font.color = xcolor Then
Contador = Contador + 1
End If
Next

SOMACOR = Contador
End Function


-----------------------------------------



Function ContarCores(intervalo As Range, corInterior As Integer, corFonte As Integer) As Integer

Dim c As Range
Dim q As Integer
q = 0

Application.Volatile

For Each c In intervalo

If c.Interior.ColorIndex = corInterior And c.Font.ColorIndex = corFonte Then
q = q + 1
End If

Next c

ContarCores = q

End Function

-----------------------------------------
Function CONTAR_VERMELHO_NEGRITO(pRange)
Dim iCell As Range
Dim Result As Long

For Each iCell In pRange
If iCell.Value2 = 1 Then
If iCell.Font.color = vbRed And iCell.Font.Bold Then
Result = Result + 1
End If
End If
Next iCell

CONTAR_VERMELHO_NEGRITO = Result
End Function
#64028
Estimada @ritacruz a principio isto não deveria acontecer, pois proteger uma planilha não desativa o cálculo das fórmulas.
Para testar eu fiz um exemplo básico que mando em anexo.

Talvez seu excel está no mode de cálculo manual, pode ir no menu Formulas, na calculada , opções de cálculo, e deve ficar como automático.
Você não está autorizado a ver ou baixar esse anexo.
#64039
Obrigado pela sua resposta, no entanto fui ao menu fórmulas e o cálculo selecionado é o automático...
.
Envio em anexo o meu ficheiro.

O qwue pretendo é ocultar as fórmulas e bloquear todas as células desde a coluna RM à SK.

Para isso estou a fazer o seguinte:

seleciono a folha toda e com o botão direito do rato clico em formatar células, no menu proteção retiro a seleção de oculto e protegido.

em seguida seleciono as colunas RM à SK clico com o botão direito do rato, seleciono formatar células, no menu proteção seleciono protegido e oculto.

depois vou ao menu Rever, clico em proteger folha e seleciono as 3 primeiras opções.


Como se trata de uma folha de ponto qualquer pesssoa pode preencher os dias em que os colaboradores trabalham. Por dia o trabalhador pode fazer 2 turnos, as células são prenchidas com o numero 1 no caso de trabalhar.

Na coluna RP Antecipação/repetição tem a fórmula countcolors que deve contar as células amarelas.

Na coluna RQ deve contar o numero 1 de cor vermelha.

Se bloquear o acesso à colunas a contagem não é bem feita.

Desde já obrigado pela atenção
#64063
obrigado, agora eu vi, a planilha é gigante, poderia ser bem especifica, por exemplo, digitando o valor de 1 na celula GW24 deveria atualizar a fórmula da celula ... e isso não está acontecendo.
peço assim pois os testes que eu fiz todos funcionaram, não estou sabendo ainda replicar o seu problema.
#64064
Por exemplo:

No dia 16 o colaborador vai fazer o 1º turno e o 2º turno (sendo o segundo turno trabalho extraordinário).

Como o 1º turno é trabalho normal eu não vou colorir a célula apenas preencho com o numero 1, no entanto o 2º turno já é
trabalho extraordinário como tal vou preencher a célula com o numero 1 e vou colorir a amarelo.

A folha de ponto, neste caso o dia 16 é para ser editável por qualquer pessoa.

A coluna RM conta o turno normal e a coluna RP conta o trabalho extraordinário, ou seja, as células amarelas. Esta é uma situação que não funciona se eu bloquear as colunas que contêm as fórmulas.

A outra situação é a seguinte:

A coluna RM vai contar o turno normal, a coluna RQ vai contar todas as céculas que são amarelas e os numeros 1 têm cor vermelha (fonte).

Reduzi o mapa e estou a enviar outro.

Como é que se bloqueia da coluna RM à coluna RR sem que as macros deixem de funcionar automaticamente?

Obrigado
Rita Cruz
Você não está autorizado a ver ou baixar esse anexo.
#64069
fiz um primeiro teste aqui, com a planilha totalmente desbloqueada e ele já não funciona so de alterar a cor, eu tenho que manualmente ir na formula da RP, editar e recalcular, acredito que temos que fazer uma macro para forçar o cálculo.
#64070
oi Rita, consegui montar uma macro que força o recalculo das formulas, porém não consigo ainda ativar ela automaticamente quando é alterado uma cor, tem uma mágicas pra fazer isso
https://www.ozgrid.com/forum/index.php? ... r-changes/
alguém ja fez isso ?

Por enquanto, criar um botão para clicar em atualizar resolveria seu problema ?

vou ver se é parecido com este outro caso anexo que o cara consegue mapear o movimento do mouse ... talvez de certo
Você não está autorizado a ver ou baixar esse anexo.
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