Página 1 de 1

VBA Inserir informação a partir de um critério

Enviado: 23 Jul 2016 às 11:41
por MarceloAdriano
Olá
Gostaria de solucionar uma questão no diário:
O caso é o seguinte: se a situação do aluno for Desistente ou Matricula Encerrada ou Remanejado; então as colunas das notas (campos a partir (C14:F14) terá que exibir a informação contida nas células (situação do Aluno) a partir da v14, abaixo, para tanto, terá que ser aplicada a formatação “Centralizar Seleção” para que os campos sejam expandidos nos campos das notas do aluno. Caso contrário, se não constar (no campo situação do aluno) deixar como está, ou seja, aparecendo as notas dos alunos.

Reforçando: Se o campo Situação do aluno estiver em branco - não seja executada a macro, caso contrário, contendo informação preencha os campos substituindo as notas pela informação contida no campo Situação do Aluno.

Desculpe-me, mas explicar com palavras, é complicado e espero ter feito entender o que eu desejo.
Segue as figuras ilustrativas bem como o exemplo do diário que estou trabalhando
Grato,
Marcelo Adriano
Fiz uma macro relativa (Crtl+k) que resolveu em partes, mas gostaria de aprimorar.
Macro relativa criada:
Sub Situação_Aluno()
' Situação_Aluno Macro
' Verifica a situação do aluno informando a mesma no Diário.
' Atalho do teclado: Ctrl+q
ActiveCell.Range("A1:D1").Select
With Selection
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.Select
ActiveCell.FormulaR1C1 = "=IF(RC[19]<>"""",RC[19],"""")"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

VBA Inserir informação a partir de um critério

Enviado: 23 Jul 2016 às 11:47
por MarceloAdriano
Segue as imagens ilustrativas:
Imagem
Imagem

Re: VBA Inserir informação a partir de um critério

Enviado: 25 Jul 2016 às 10:19
por alexandrevba
Bom dia!!

Eu não consegui abrir seu arquivo!
talvez ele esteja sobrecarregado ou com algum conflito.

Att

VBA Inserir informação a partir de um critério

Enviado: 25 Jul 2016 às 10:39
por MarceloAdriano
Olá
Segue o arquivo novamente, vê se agora deu certo?

Grato,
Marcelo Adriano

Re: VBA Inserir informação a partir de um critério

Enviado: 25 Jul 2016 às 12:47
por alexandrevba
Boa tarde!!

Tente isso
Código: Selecionar todos
Sub AleVBA_2625()

Dim rngToSearch As Range
Dim wks As Worksheet
Dim rngFound As Range
Dim WhatToFind As Variant
Dim iCtr As Long
Dim DestCell As Range
Dim iLoop As Long

Set wks = ActiveSheet
Set rngToSearch = wks.Columns(22)

WhatToFind = Array("Desistente", "Ausente", "Matricula Encerrada")

With rngToSearch
    For iCtr = LBound(WhatToFind) To UBound(WhatToFind)
        Set rngFound = .Cells(.Cells.Count)
            For iLoop = 1 To WorksheetFunction.CountIf(rngToSearch, WhatToFind(iCtr))
                    Set rngFound = .Cells.Find(What:=WhatToFind(iCtr), _
                    LookIn:=xlValues, LookAt:=xlWhole, After:=rngFound, MatchCase:=False)
            If Not rngFound Is Nothing Then
                rngFound.Cells.Offset(0, -19).Value = rngFound.Cells
            End If
        Next iLoop
    Next
End With

End Sub
Att

VBA Inserir informação a partir de um critério

Enviado: 25 Jul 2016 às 15:46
por MarceloAdriano
Olá Alexandrevba
Primeiramente Obrigado! Tá quase: faltou a formatação horizontal "CENTRALIZAR SELEÇÃO" para que não fique restrita a apenas uma célula e sim abranja subistituinto todas as notas dos alunos inativos. Se puder poderia limpar as células C e F dos respectivos alunos inativos antes da inclusão dos textos.
Mando um printe para tentar mlhor explicar:
Imagem
Imagem
Imagem

Re: VBA Inserir informação a partir de um critério

Enviado: 25 Jul 2016 às 17:20
por alexandrevba
Boa tarde!!

Use o gravador de macros e insira no código.

Ou chame essa macro por meio de comando CALL.

Att

VBA Inserir informação a partir de um critério

Enviado: 25 Jul 2016 às 23:37
por MarceloAdriano
Olá AlexandreVBA
Tente gerar a macro mas só aprimeira fica na formatação desejada...
Se puder acresentar para mim agradeço...
Grato,
Marcelo Adriano

VBA Inserir informação a partir de um critério

Enviado: 26 Jul 2016 às 12:53
por MarceloAdriano
Olá
Só para reafirmar a marcro que você fez esta funcionando, faltando apenas a inclusção da formatação horizontal "Centralizar Seleção" para que o texto fique alinhada e ocupando todos os espaços que antes eram destinadas as notas dos alunos frequentes...

Se puder incluir essa formatação de forma dinâmica agradeço
Grato,
Marcelo Adriano

Re: VBA Inserir informação a partir de um critério

Enviado: 27 Jul 2016 às 18:46
por MarceloAdriano
Ainda em aberto

Re: VBA Inserir informação a partir de um critério

Enviado: 01 Ago 2016 às 16:28
por alexandrevba
Boa tarde!!

Grave uma Macro, depois chame ela com o comando call!
Código: Selecionar todos
Sub Macro4()
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
End Sub
Código: Selecionar todos
Sub AleVBA_2625()

Dim rngToSearch As Range
Dim wks As Worksheet
Dim rngFound As Range
Dim WhatToFind As Variant
Dim iCtr As Long
Dim DestCell As Range
Dim iLoop As Long

Set wks = ActiveSheet
Set rngToSearch = wks.Columns(22)

WhatToFind = Array("Desistente", "Ausente", "Matricula Encerrada")

With rngToSearch
    For iCtr = LBound(WhatToFind) To UBound(WhatToFind)
        Set rngFound = .Cells(.Cells.Count)
            For iLoop = 1 To WorksheetFunction.CountIf(rngToSearch, WhatToFind(iCtr))
                    Set rngFound = .Cells.Find(What:=WhatToFind(iCtr), _
                    LookIn:=xlValues, LookAt:=xlWhole, After:=rngFound, MatchCase:=False)
            If Not rngFound Is Nothing Then
                rngFound.Cells.Offset(0, -19).Value = rngFound.Cells
                Call Macro4 'Eu sou a macro4 e vou entrar enção todavez que o loop rodar e passar por esta linha
            End If
        Next iLoop
    Next
End With

End Sub

VBA Inserir informação a partir de um critério

Enviado: 01 Ago 2016 às 17:56
por MarceloAdriano
Obrigado
Resolvido