Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#13244
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
#13296
Bom dia!!

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

Att
#13308
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
#13318
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
#13326
Boa tarde!!

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

Ou chame essa macro por meio de comando CALL.

Att
#13367
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
#13619
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord