Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

roger40

Arrays e ciclos

Recommended Posts

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.

Share this post


Link to post
Share on other sites
roger40

se souberem algum tuturial ou exercicos sobre arrays ciclos etc ( a materia que estou a dar) podem postar

Share this post


Link to post
Share on other 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.

Share this post


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

×

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.