Jump to content

Problema com o comando .Address


Recommended Posts

Boa tarde

No desenvolvimento do código para a minha tese de Mestrado deparei-me com um problema no comando .Address e gostava de saber se o consigo ultrapassar ou se tenho de alterar o código de forma a que o comando possa funcionar como pretendo.

For k = 2 To Npacientes

    CelulaInicio = Cells(3 + (k - 1) * (Nturnos + 2), Ndias + 1 + DiaInicio(k)).Address
    CelulaFim = Cells((Nturnos + 2) + (k - 1) * (Nturnos + 2), Ndias + 1 + DiaInicio(k)).Address

    Worksheets("Exemplo").Cells(2 * k, (2 * Ndias) + 7) = "=SOMA(" & CelulaInicio & ":" & CelulaFim & ")"
    Worksheets("Exemplo").Cells(2 * k, (2 * Ndias) + 8) = "="
    
        If tipo1(k) = True Then
    
            Worksheets("Exemplo").Cells(2 * k, (2 * Ndias) + 9) = "1"
    
        Else
        
            Worksheets("Exemplo").Cells(2 * k, (2 * Ndias) + 9) = "2"
    
        End If
Next k

Ora, o que eu pretendo, o código faz. O problema é que ao escrever na célula pretendida a fórmula da soma insere os "$" para fixar as células, o que faz com que o Excel dê erro ao executar essa mesma fórmula.

Eu já pesquisei e vi que há forma de alterar a disposição do que é escrito através deste comando alterando o "Reference Style". A questão é que, como este comando se encontra dentro de um ciclo "For" e é alterado para cada valor de k, não consigo alterar o "Reference Style".

Há alguma forma de alterar essa formatação mesmo com os índices relativos às linhas e colunas a serem variáveis?

Muito obrigado desde já!

PS- só para terem uma noção de tudo o que está no código: Ndias=5 e Nturnos=10

 

Link to post
Share on other sites
manuel antonio
Em 13/07/2017 às 12:22, TiagoA disse:

 


    CelulaInicio = Cells(3 + (k - 1) * (Nturnos + 2), Ndias + 1 + DiaInicio(k)).Address
    CelulaFim = Cells((Nturnos + 2) + (k - 1) * (Nturnos + 2), Ndias + 1 + DiaInicio(k)).Address

    Worksheets("Exemplo").Cells(2 * k, (2 * Ndias) + 7) = "=SOMA(" & CelulaInicio & ":" & CelulaFim & ")"
    Worksheets("Exemplo").Cells(2 * k, (2 * Ndias) + 8) = "="
    
    

Ora, o que eu pretendo, o código faz. O problema é que ao escrever na célula pretendida a fórmula da soma insere os "$" para fixar as células, o que faz com que o Excel dê erro ao executar essa mesma fórmula.

Eu já pesquisei e vi ...

 

Se pesquisaste, sabes que não é possível somar localizações , que é o que parece que estás a fazer. As somas, fazem-se com valores e como tal parece-me que o Address não está aí a fazer nada. Foste poupado no código que inseriste e como tal não se percebe bem o que pretendes.

Como as somas se fazem com valores é lógico que a tua soma deverá fazer-se desta forma: 

"celulainicio.value + celulafim.value"

pesquisa por soma de valores de células, verás que encontras centenas de códigos e é só escolher o que mais se adequar ao teu caso.

 

Edited by manuel antonio
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.