Notifications
Clear all

Informar endereço.

17 Posts
4 Usuários
0 Reactions
3,083 Visualizações
(@ojm356)
Posts: 27
Eminent Member
Topic starter
 

Boa tarde!

Poderiam me ajudar, como informo o endereço de uma célula que esta em outro Sheet em uma formula no VBA?

 
Postado : 04/11/2014 12:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!
Se poder detalhar melhor sua dúvida.

Sub AleVBA_13413()
Worksheet("Plan2").Range("A1").Formula = "=Plan1!A1"
End Sub

Att

 
Postado : 04/11/2014 12:36 pm
(@ojm356)
Posts: 27
Eminent Member
Topic starter
 

Boa tarde, não esta funcionando. segue um exemplo abaixo.

o texto em negrito é o endereço que gostaria de informar a celula.

Option Explicit

'C(n, p) = n! / ((n-p)! * p!)
'lPermutações a ser definido, seria o 'p' da fórmula acima
Const lPermutações As Long = Worksheet("Plan 1").Range("A1").Formula = "A1"

Dim r As Long

Dim v(1 To 1

 
Postado : 05/11/2014 1:35 pm
(@rlm)
Posts: 0
New Member
 

Creio ser melhor reformular sua pergunta, pelo seu exemplo ficou 1/2 confuso

 
Postado : 05/11/2014 2:57 pm
(@ojm356)
Posts: 27
Eminent Member
Topic starter
 

Certo, vou tentar ser mais explicito.

este código esta em sheet plan 1, pois todas as combinações possíveis serão geradas na plan 1, mas a informação que será uma variável esta na em outro Sheet (Plan2) na célula "D6". Ou seja se eu colocar um numero funciona, mas toda vez que tenho de mudar tenho de alterar no código, e gostaria que fosse informado o valor que esta na célula que citei de exemplo.

 
Postado : 05/11/2014 3:07 pm
(@ojm356)
Posts: 27
Eminent Member
Topic starter
 

Segue o código abaixo. o numero 6 esta em negrito é este valor que quero alterar para que busque de uma célula que esta em outro Sheet. Tipo o resultado deste código esta e tem de aparecer no Sheet 01 e a variável esta no Sheet 02.

'C(n, p) = n! / ((n-p)! * p!)
'lPermutações a ser definido, seria o 'p' da fórmula acima
Const lPermutações As Long = 3

Dim r As Long

Dim v(1 To 10)

Sub Teste()
Dim lElementos As Long

'Popula vetor de elementos
v(1) = Range("A1")
v(2) = Range("B1")
v(3) = Range("C1")
v(4) = Range("D1")
v(5) = Range("E1")
v(6) = Range("F1")
v(7) = Range("G1")
v(8) = Range("H1")
v(9) = Range("I1")
v(10) = Range("J1")

'C(n, p) = n! / ((n-p)! * p!)
'lElementos seria o 'n' da fórmula acima
lElementos = UBound(v) - LBound(v) + 1

'Contador de linhas para uso no Excel:
r = 2

'Limpa Planilha ativa
'Cells.Delete

'Inicia recursão:
Combinação lElementos, lPermutações, 1
End Sub

Sub Combinação(n As Long, p As Long, k As Long, Optional s As String)
If p > n - k + 1 Then Exit Sub
If p = 0 Then
'Para visualizar o resultado de uma combinação no Excel:
r = r + 1
Cells(r, "A").Resize(1, lPermutações) = Split(s, "|")
'Se quiser visualizar o resultado na Janela de Verificação imediata, use:
Debug.Print s
Exit Sub
End If
'Recorre novamente:
Combinação n, p - 1, k + 1, s & v(k) & "|"
'Recorre novamente a partir do elemento anterior:
Combinação n, p, k + 1, s
End Sub

 
Postado : 05/11/2014 4:22 pm
(@edcronos)
Posts: 1006
Noble Member
 

ola, o ideal seria postar uma planilha de exemplo com dados explicando oq vc pretende
pelo visto vc copiou a macro de alguma pagina usando o tradutor online e isso alterou as linhas de comando

existe muitas maneiras de se fazer as coisas no excel mas primeiro é importante entender oq vc quer exatamente.

 
Postado : 05/11/2014 5:06 pm
(@ojm356)
Posts: 27
Eminent Member
Topic starter
 

Copiei sim, mas gostaria que fosse adaptada para que todas as combinações aparecessem na plan 02 e que os código fosse captados da plan 01.

Desde já lhe agradeço pela ajuda.

 
Postado : 05/11/2014 5:25 pm
(@edcronos)
Posts: 1006
Noble Member
 

desculpe, mas esse exemplo não ajudou
o certo é ter dados comparáveis aos que vc vai ter na planilha original, até as posições
e em seguida fazer um exemplo de onde e como esses dados tem que aparecer

se é para adaptar a macro poste o endereço da pagina de onde vc copiou para que se tenha uma melhor ideia do que ela faz

 
Postado : 05/11/2014 6:01 pm
(@ojm356)
Posts: 27
Eminent Member
Topic starter
 

A macro esta dentro da plan 2 e é para pegar os dados da plan 01, estou procurando o site, pois não foi eu que pegou, tenho no e-mail de meu serviço mas utilizo outilook então esta na minha maquina na empresa.

 
Postado : 05/11/2014 6:38 pm
(@edcronos)
Posts: 1006
Noble Member
 

mas mesmo assim falta os dados para saber oq tem que fazer com oq

na macro

Const lPermutações As Long = 3

Const torna o valor da variavel em algo permanente

se vc quer tornar a variavel flexível e de acordo com o valor da celula não vai poder usar essa definição de variavel.
para isso vc deve definir uma variavel publica e definir seu valor no inicio da macro principal de atribuição

Public lPermutações As Long
sub nome()
lPermutações=Worksheet("Plan 1").Range("A1").Formula = "A1"
...
end sub

mas está confuso oq vc pretende, pelo menos para mim

 
Postado : 05/11/2014 7:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
(@edcronos)
Posts: 1006
Noble Member
 

vc falou que tinha tentado assim
lPermutações=Worksheet("Plan 1").Range("A1").Formula = "A1"
mas não dari certo eu nem tinha reparado

Const lPermutações As Long = Worksheet("Plan1").Range("A1").Value

desse modo a variavel vai ser definida com o valor da celula A1 da plan1

pelo visto a macro gera combinações de valores e vc quer definir esses valores na própria planilha para gerar combinações possíveis dos números que vc escolher.

mas por mais que eu faça um monte de macros malucas que apenas eu entendo, faço com o esboço da planilha em mente
se puder liberar algo para eu ter uma noção de como vai ficar os dados

 
Postado : 05/11/2014 7:48 pm
(@edcronos)
Posts: 1006
Noble Member
 

levei um tempo para entender o funcionamento da macro e oq vc queria mas acho que consegui

Dim lPermutações As Long
Dim r As Long
Dim v(1 To 10)

Sub Teste()
    Dim lElementos As Long
    lPermutações = Sheets("Plan1").Range("A1").Value
    For csd = 1 To 10
    v(csd) = Sheets("Plan2").Cells(1, csd).Value
Next
    lElementos = UBound(v) - LBound(v) + 1
    r = 2
    Combinação lElementos, lPermutações, 1
End Sub

Sub Combinação(n As Long, p As Long, k As Long, Optional s As String)
    If p > n - k + 1 Then Exit Sub
    If p = 0 Then
        r = r + 1
     Cells(r, "A").Resize(1, lPermutações) = Split(s, "|")
        Debug.Print s
        Exit Sub
    End If
    Combinação n, p - 1, k + 1, s & v(k) & "|"
    Combinação n, p, k + 1, s
End Sub

ainda não sei se entendi muito bem
mas em A1 da Plan1 coloca o numero maximo de colunas que vai ter as combinações
ainda tenho que entender mais coisas da macro, mas acho que basicamente era isso que vc estava querendo

 
Postado : 05/11/2014 8:28 pm
(@ojm356)
Posts: 27
Eminent Member
Topic starter
 

Boa noite,

Senhores agradeço muito pela vossa ajuda, vou dar uma melhorada na planilha a assim que possível eu lhe enviares a vocês, muito obrigado mesmo.

Tenham um bom fim de semana.

uma pergunta.

devo deixar como resolvido e abro um novo tópico, ou deixo assim como esta e logo que possível posto a planilha neste tópico?

 
Postado : 06/11/2014 7:52 pm
Página 1 / 2