Ir ao conteúdo
  • Cadastre-se

Mostrar valores contidos em células


Ir à solução Resolvido por Visitante,

Posts recomendados

  • 2 anos depois...
Em 02/01/2015 às 08:37, osvaldomp disse:

 



 

Sub CélulasParaMatriz()

  Dim MatrizX(), i As Long, AA As String

    MatrizX = Range("A1:A5").Value 'carrega na matriz os valores do intervalo

    [E1].Resize(5).Value = MatrizX 'insere em outro intervalo os elementos da matriz

      For i = 1 To 5

        AA = AA & MatrizX(i, 1) & vbLf 'carrega na variável "AA" todos os elementos da matriz

      Next i

   MsgBox AA 'exibe a variável "AA"

End Sub

 

E se precisar somente os dados de A1, A3, A5 no MsgBox?

 

Link para o comentário
Compartilhar em outros sites

@texwil, nesse caso você teria que separar as células com vírgula. Exemplo:

 

Sub CélulasParaMatriz()

Dim Matriz As Range, Cell As Range
Dim Body As String

Set Matriz = Range("A1,A3,A5")
    For Each Cell In Matriz
        Body = Body & Cell & vbLf
    Next
MsgBox Body, vbInformation, "Informação"
   
End Sub

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Perfeito.

Eu alterei para:

Sub CélulasParaMatriz()

Dim Matriz As Range, Cell As Range
Dim Body As String

Set Matriz = Range("A1,C1,E1")
    For Each Cell In Matriz
        Body = Body & Cell & vbLf
    Next
MsgBox Body, vbInformation, "Informação"
   
End Sub

 

E funcionou, é o que preciso.

Mas se precisar que essa macro seja ativada quando a célula da coluna F for igual a célula da coluna T, com 360 linhas?

 

Link para o comentário
Compartilhar em outros sites

@Wendell Menezes

 

Tentei dessa forma e de outras, não consegui acionar a macro quando F5 = T5, F5 e T5 são formulas. Pode ajudar?

Private Sub Worksheet_Calculate()

If Range("F5").Value = Range("T5").Value Then Call CelulasParaMatriz

End If
End Sub
Sub CelulasParaMatriz()

Dim Matriz As Range, Cell As Range
Dim Body As String

Set Matriz = Range("E5,F5,T5")
    For Each Cell In Matriz
        Body = Body & Cell & vbLf
    Next
MsgBox Body, vbInformation, "Informação"
 

Link para o comentário
Compartilhar em outros sites

Private Sub Worksheet_Calculate()
    If Range("F5").Value = Range("T5").Value Then Call CelulasParaMatriz
End Sub
Sub CelulasParaMatriz()

Dim Matriz As Range, Cell As Range
Dim Body As String

Set Matriz = Range("E5,F5,T5")
    For Each Cell In Matriz
        Body = Body & Cell & vbLf
    Next
MsgBox Body, vbInformation, "Informação"

End Sub

Anexo planilha de exemplo.

 

Pasta1.zip

Link para o comentário
Compartilhar em outros sites

@Wendell Menezes

A macro funciona legal, mas a chamada da macro não funciona, pode ajudar? A chamada da anterior não funcionou.

Preciso que a macro execute com disparo da coluna F quando for maior que as colunas T, AG, AT .

A coluna A é só para manter uma formula em F, no real F recebe externo.

Anexo planilha.

Mostrar valor de celula.xlsx

Link para o comentário
Compartilhar em outros sites

Assim?

 

Private Sub Worksheet_Change(ByVal Target As Range)

Dim c1 As Range, c2 As Range, c3 As Range

With Target
    Set c1 = Cells(.Row, 20)
    Set c2 = Cells(.Row, 33)
    Set c3 = Cells(.Row, 46)
    If .Row <= 360 And (Cells(.Row, 6) = c1 Or Cells(.Row, 6) = c2 Or Cells(.Row, 6) = c3) Then
        CelulasParaMatriz Range(c1.Address & "," & c2.Address & "," & c3.Address)
    End If
End With

End Sub

Function CelulasParaMatriz(ByVal Matriz As Range)

Dim Cell As Range
Dim Body As String

For Each Cell In Matriz
    Body = Body & Cell.Address(False, False) & " = " & Cell & vbLf
Next

MsgBox Body, vbInformation, "Informação"

End Function

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Wendell Menezes

Quase perfeito. Veja planilha em anexo.

Durante o dia posso fazer até três compras, a primeira registro nas colunas I e J, a segunda em V e W, e a terceira em AI e AJ, sempre em ordem decrescente de preço de compra respectivamente, ou seja, só vou para a próxima compra se estiver mais barato.

Em AU estipulo o percentual para preço de venda já calculado em T, AG, AT.

Para venda o sentido é inverso, ou seja primeiro vendo AI e AJ, depois V e W, e por último I e J.

Assim, a função da macro, tem de avisar quando atingir o menor preço das três compras, que seria da direita para a esquerda.

Do jeito que a macro está definida, só obtenho informação da primeira compra/venda.

Pode ajustar?

Mostrar valor de celula3.xlsx

Link para o comentário
Compartilhar em outros sites

Pessoal! Maravilha!! Com muita ajuda, principalmente do @Wendell Menezes, consegui ativar as macros.

Funcionou exatamente como preciso, segue abaixo.

Na caixa MsgBox que abre aparece as informações que preciso, mas aparece também a letra das colunas, tem como retirar as letras das colunas?

 

Private Sub Worksheet_Change(ByVal Target As Range)

Dim c1 As Range, c2 As Range, c3 As Range
Dim d1 As Range, d2 As Range, d3 As Range

With Target
    Set c1 = Cells(.Row, 20)
    Set c2 = Cells(.Row, 33)
    Set c3 = Cells(.Row, 46)
    Set d1 = Cells(.Row, 5)
    Set d2 = Cells(.Row, 6)
    
    Set d3 = Cells(.Row, 10)
    If .Row <= 360 And (Cells(.Row, 6) > c1) And (c1 > 0) Then
    CelulasParaMatriz Range(d1.Address & "," & d2.Address & "," & d3.Address)
    End If
    Set d3 = Cells(.Row, 23)
    If .Row <= 360 And (Cells(.Row, 6) > c2) And (c2 > 0) Then
    CelulasParaMatriz Range(d1.Address & "," & d2.Address & "," & d3.Address)
    End If
    Set d3 = Cells(.Row, 36)
    If .Row <= 360 And (Cells(.Row, 6) > c3) And (c3 > 0) Then
    CelulasParaMatriz Range(d1.Address & "," & d2.Address & "," & d3.Address)
    End If
End With
End Sub

Function CelulasParaMatriz(ByVal Matriz As Range)

Dim Cell As Range
Dim Body As String

For Each Cell In Matriz
    Body = Body & Cell.Address(False, False) & " = " & Cell & vbLf
Next

MsgBox Body, vbInformation, "Informação"

End Function
 

Link para o comentário
Compartilhar em outros sites

@ Wendell Menezes.

Funcionou a formatação, mas apareceu a letra da linha. Veja anexo.

Mas ficou melhor assim, pois além de informar o produto também informou a linha. ficou ordenado, de melhor visualização e localização.

E para guardar, sem a informação da linha, aceito a alteração, para uso futuro.

 

Feijão.png

Link para o comentário
Compartilhar em outros sites

@Wendell Menezes.

Necessito que a formula em Azul execute na macro.

Coluna 48 é um percentual negativo, a planilha é a mesma, pode ajudar?

 

Private Sub Worksheet_Change(ByVal Target As Range)

With Target
    Set c1 = Cells(.Row, 20)
    Set c2 = Cells(.Row, 33)
    Set c3 = Cells(.Row, 46)
    Set d1 = Cells(.Row, 5)
    Set d2 = Cells(.Row, 6)
    Set e1 = Cells(.Row, 8)
    Set f1 = Cells(.Row, 48)
    If .Row <= 360 And (d2 <= (e1 * f1 + e1)) Then
    CelulasParaMatriz Range(d1.Address)
    End If
    Set d3 = Cells(.Row, 10)
    If .Row <= 360 And (Cells(.Row, 6) > c1) And (c1 > 0) Then
    CelulasParaMatriz Range(d1.Address & "," & d2.Address & "," & d3.Address)
    End If
    Set d3 = Cells(.Row, 23)
    If .Row <= 360 And (Cells(.Row, 6) > c2) And (c2 > 0) Then
    CelulasParaMatriz Range(d1.Address & "," & d2.Address & "," & d3.Address)
    End If
    Set d3 = Cells(.Row, 36)
    If .Row <= 360 And (Cells(.Row, 6) > c3) And (c3 > 0) Then
    CelulasParaMatriz Range(d1.Address & "," & d2.Address & "," & d3.Address)
    End If
End With
End Sub

Link para o comentário
Compartilhar em outros sites

@Wendell Menezes.

Na verdade, a formula mencionada acima funciona, mas somente se forem digitados valores nas colunas F e AV.

Nesta macro, quando na coluna F "Row 6" digito um valor que definido num percentual negativo da coluna AV "Row 48" menor que da coluna H "Row 8", o MsgBox é ativado e visualizado o conteúdo da coluna E "Row 5".

Funciona perfeitamente.

Mas não funciona quando na coluna F recebe numa formula, através de um link externo, que é ativado por senha no início do expediente.

O que falta para que isso aconteça?

Ver anexo.

 

Dim d1 As Range, d2 As Range, d3 As Range
Dim e1 As Range, f1 As Range

Private Sub Worksheet_Change(ByVal Target As Range)

With Target    
    Set d1 = Cells(.Row, 5)
    Set d2 = Cells(.Row, 6)
    Set e1 = Cells(.Row, 8)
    Set f1 = Cells(.Row, 48)
    If .Row <= 360 And (d2 < (e1 * f1 + e1)) Then
    
    CelulasParaMatriz Range(d1.Address)
    End If    
End With
End Sub

Function CelulasParaMatriz(ByVal Matriz As Range)

Dim Cell As Range
Dim Body As String

For Each Cell In Matriz
    
    'Para que mostre linhas, valores e formate o MsgBox
    Body = Body & Cell.Row & " = " & Format(Cell, Cell.NumberFormat) & vbLf
    
Next

MsgBox Body, vbInformation, "Informação"

End Function

Mostrar valor de celula enviado.xlsx

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...