Ir para o conteúdo
roger40

Arrays e ciclos

Mensagens Recomendadas

roger40

olá é o meu primeiro post .

ando em eng informatica na utad( universidade de tras os montes)e tive o meu 3 teste de vba que me correu muito mal.

o exame vai ser parecido com o teste por isso vou deixar aqui o enunciado do teste para resolverem ( claro que ninguem é obrigado a fazer tal).

agradeço a voça ajuda

antes de mais é presiso saberem que uma matriz par é uma matriz cuja soma das colunas e linhas é numero par( em baixo tem uma foto a explicar)

cdcds.th.png

Considere que uma matriz se designa por “matriz par” se é um conjunto de números organizados numa tabela quadrada em que a soma dos elementos de cada uma das linha e de cada uma das colunas dá sempre um número par, como vemos no exemplo da Figura 1:

Figura 1 – Programa Matriz Par

O objetivo do teste é construir uma macro, ativada com o atalho ctrl-m, que avalia a matriz 3x3 (cuja célula ativa é o canto superior esquerdo) é uma matriz par ou não. Se for, deve formatar toda a matriz com fundo de cor amarela, se não, deve formatá-la com fundo de cor vermelhacomo se pode ver na Figura 1.

O Programa é composto por 3 partes:

Parte 1 (35%)

Componha uma macro, chamada Matriz, com tecla de atalho ctrl-m, que leia a matriz 3x3, cujo canto superior esquerdo tem a “célula ativa”, para uma variável array 3x3 chamada “matriz3x3”.

(É obrigatório o usos de ciclos para a sua resolução.)

Parte 2 (30%)

Construa uma função chamada E_Par que verifique se o valor da soma dos elementos de cada linha e de cada coluna é par, e que retorne uma variável do tipo booleana (“verdadeiro” ou “falso”), consoante a matriz seja, ou não, par.

Deve chamar a função no fim da macro Matriz.

Parte 3 (35%)

Construa um procedimento, Formata_Par, que formate a referida matriz com linhas pretas e com fundo vermelho ou verde (como se vê na figura) consoante a matriz seja ou não par.

Este procedimento deve ser chamado no fim da macro Matriz, a seguir à chamada da função E_Par.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
edsudani

Olá Roger40.

O que segue abaixo é uma cópia do site de Jorge Paulino, um dos moderadores deste fórum.

Não consegui postar o link, pois ao testá-lo retornou erro. Por isso, na tentativa de te ajudar copiei e colei.

Espero que tenha alguma serventia para você.

Edison

ps:esperimente .

[ftp=ftp://vbtuga.blogspot.com/]http://vbtuga.blogspot.com/

[/ftp]

Os ciclos nas folhas de cálculo são bastante comuns quando se usa VBA. O objectivo é percorrer uma lista de valores e executar determinada acção ou validação enquanto este percorre todas as linhas ou colunas.

A execução de um ciclo simples pode ser feito da seguinte forma:

        Dim x As Integer

        For x = 1 To 100

            Cells(x, "A").Value = x

        Next

Isto irá escrever em todas as células da coluna A, da linha 1 à linha 100, um número sequencial. Mas este é um exemplo simples onde definimos onde começa e onde termina.

Para se fazer um ciclo numa lista de dados já existente, devemos sempre saber onde começar e onde terminar. Não tem lógica percorrer todas as linhas de uma folha de cálculo se estão apenas a ser utilizadas 20 ou 30.

Para se determinar a última linha usada em uma lista, devemos utilizar o seguinte método:

        Dim lastRow As Long

        lastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row

Isto é semelhante a seleccionar a ultima linha da coluna A e pressionar as teclas CTRL + UP ARROW, que fará saltar a selecção para a primeira célula com dados.

Só assim podemos saber com exactidão, qual a última linha utilizada, pois mesmo que existam linhas em branco na lista, todas as linhas serão percorridas.

No entanto, algumas considerações:

Caso existam várias colunas na lista, devemos definir a coluna que tem mais dados;

A variável utilizada para a última linha deverá ser do tipo Long e não Integer, pois uma variável do tipo Integer suporta apenas números até  32,768, sendo este inferior ao total de linhas disponível na folha de calculo.

Depois, é só utilizar a variável para limitar o ciclo:

        Dim lastRow As Long

        Dim x As Integer

        lastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row

        For x = 1 To lastRow

            Debug.Print(Cells(x, "A").Value)

        Next

Isto irá listar o valor de todas as células na coluna A. Para verificar qual a última coluna utilizada, o método é semelhante:

        Dim lastColum As Integer

        lastColum = Cells(1, Cells.Columns.Count).End(xlToLeft).Column

Mas existem outros métodos de verificar a última linha ou coluna utilizada, usando, por exemplo, o método SpecialCells:

        Dim lastCellRow As Long

        Dim lastCellColumn As Long

        ' Informação da ultima linha

        lastCellRow = ActiveSheet.Cells.SpecialCells(xlLastCell).Row

        ' Informação da ultima coluna

        lastCellColumn = ActiveSheet.Cells.SpecialCells(xlLastCell).Column

No entanto, existem vários registos de que este método não é fiável, e basta apagar algumas linhas para verificar que não o é, e por isso não é recomendado.

Existe ainda uma especial atenção para ciclos onde são eliminadas linhas ou colunas, onde o ciclo deverá ser efectuado do fim para o principio, ou seja, da última linha/colunas para a primeira. Deste modo, um ciclo para eliminar linhas, por exemplo, deverá ser feito da seguinte forma:

        Dim lastRow As Long

        Dim x As Integer

        lastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row

        ' Ciclo que irá percorrer da última para a primeira linha

        For x = lastRow To 1 Step -1

            ' Caso a célula esteja vazia

            If Len(Cells(x, "A").Value) = 0 Then

                Rows(x).Delete()

            End If

        Next

Estes são alguns exemplos simples de como fazer ciclos em células e como verificar qual a última linha ou coluna utilizada.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.