Pergunte aqui
0

MACRO - Colorir mapas ( Desenho - Formas)

perguntadas 2015-04-07 02:25:39 +0200

esta mensagem está marcada como wiki comunitário

Esta mensagem é um wiki. Qualquer pessoa com karma >75 é bem-vinda para a melhorar.

Boa Noite!

Estou com uma dificuldade em correlacionar uma macro, a ideia é que conforme eu tenha um valor na Célula, ( esta célula já identificada na hora que troque o valor e executar macro os desenhos mudem de cor.

no VBA é esse código:

Sub ColorirMapa ()

Dim Regiao AS Range
Dim Celula As String 

For Each Regiao In Range("Regiões") 
Celula = Cells(Regiao.Row, 3) 
ActiveSheet.Shapes(Regiao).Fill.ForeCollor = Range(Celula).Interior.Color 
Next Regiao

End Sub

fiz uma conversão no site

http://www.business-spreadsheets.com/...

e saiu esses codigos.

Sub ColorirMapa ()
Dim Regiao AS Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)
Dim Celula As String
For Each Regiao In Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)("Regiões")
Celula = Cells(Regiao.Row, 3)
ThisComponent.CurrentController.ActiveSheet.Shapes(Regiao).Fill.ForeCollor = Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)(Celula).Interior.Color
Next Regiao
End Sub

PORÉM ESTÂO AINDA DANDO ERRO DE SINTAXE no AS RANGE

Alguém pode me dar uma dica?

tenho um arquivo de teste

http://www.4shared.com/file/4Xuz8_9Sc...

valeww

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

0

respondidas 2015-04-13 17:28:50 +0200

imagem do gravatar de Grafeno

Olá,

A macro abaixo foi reescrita com os objetos e métodos suportados pela API UNO do Libreoffice:

REM  *****  BASIC  *****

Sub ColorirMapa
Dim oPlan As Object
Dim oPagDesenho As Object
Dim oRegioes As Object
Dim oRegiao As Object
Dim oCelula As Object
Dim oForma As Object

    'Planilha ativa
    oPlan = ThisComponent.getCurrentController.Activesheet
    'Página de desenho (Contém as formas - shapes)
    oPagDesenho = oPlan.getDrawPage
    'Intervalo Regiões
    oRegioes = oPlan.getCellRangebyName( "Regioes" )

    'Loop pelas células (Regiao) do intervalo Regioes
    For I = 1 To oRegioes.getRangeAddress().EndRow
        'Regiao
        oRegiao = oRegioes.getCellbyPosition( 0,I-1 )
        'Célula com referência a célula com a cor
        oCelula = oPlan.getCellbyPosition( 2,I )

        'Como a API UNO não suporta chamar a forma pelo
        'nome, é preciso fazer um loop por todas através
        'do seu índice (index)
        For J = 0 To ( oPagDesenho.Count - 1 )
            'Obter a forma pelo índice (index)
            oForma = oPagDesenho.getByIndex( J )
            'Verificar se o nome é mesmo da Regiao
            If oForma.Name = oRegiao.getString Then
                'Mudar a cor da forma
                oForma.FillColor = oPlan.getCellRangebyName(oCelula.getString).CellBackColor
                Exit For
            End If
        Next J
    Next I  
End Sub

Obs.: Note que não é possível declarar objetos específicos como Range. As variáveis foram declardas como "As Object" e, em seguida, iniciadas especificamente no decorrer do código.

....
ColorirMapa.ods (<< Arquivo Anexo)
....

Atte,
Grafeno

editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2015-04-07 02:25:39 +0200

Lidas: 1,740 vezes

Última atualização: Apr 13 '15