Ir ao conteúdo

Midori

Membro Pleno
  • Posts

    3.601
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. Está demorando por causa dos loops. Você pode substituir por algo assim, Sub UltimaLinha() Dim WksControle As Worksheet Dim UltLinha As Long Set WksControle = ThisWorkbook.Worksheets("CONTROLE") UltLinha = WksControle.Range("B3").End(xlDown).Row + 1 MsgBox UltLinha End Sub Veja que a macro já identifica a última linha em branco, usando o mesmo recurso do Ctrl+Down a partir de B3.
  2. Pode ser assim. Quando o formulário for chamado o Combo receberá os itens. Private Sub UserForm_Initialize() Me.ComboBox1.RowSource = "A1:A10" End Sub
  3. Para enumerar é usar a propriedade ListIndex, Private Sub ComboBox1_Click() Range("A1") = UserForm1.ComboBox1.ListIndex + 1 End Sub
  4. 1) Sugiro que crie você crie uma Macro só com as condicionais. Aí é só atribuir essa Macro ao botão. Por exemplo, Sub MostrarFormulario() Select Case Range("A1") Case Is = 1: UserForm1.Show Case Is = 2: UserForm2.Show Case Is = 3: UserForm3.Show End Select End Sub
  5. Midori

    exercicio - strings

    Usei o FOR/loop como contador para percorrer todas as letras da frase digitada. A variável i é apenas um índice da posição de cada letra da frase. O if é a condição para verificar na tabela ASCII se as letras estão entre 97 e 122. Veja que na tabela ASCII essas são as letras minúsculas. Por tanto se alguma letra estiver nesse intervalo, é feito decremento em 32: frase -= 32. Exemplo. O código decimal ASCII do a é 97 e do A é 65. Logo, para converter a para A é só tirar 32.
  6. Já tentou executar sem as instruções On Error? Se for algum erro ficará mais fácil identificar o problema. Ou então tente colocar o "Set OutlookMail... / Set OutlookMail = Nothing" dentro do For.
  7. Altere o For para iniciar na linha 3 e remova o adicional 2. For i = 3 To 6 If Exemplo1.Range("F" & i).Value <> "Ok" Then With OutlookMail ...
  8. Você pode usar uma variável para atribuir o valor da linha. Para algo mais complexo depende dos valores das colunas, se seguir alguma lógica a implementação será mais fácil. For Each var_inserir In Worksheets("ADD STAFF").Range("G3:G20") If var_inserir = "NEW" Then L = var_inserir.Row Sheets("Workers").Range("B6:D6").Insert Shift:=xlDown 'insere uma linha no intervalo indicado Worksheets("ADD STAFF").Range("F" & L & ":E" & L & ",C" & L).Copy Sheets("Workers").Range("B6:D6") End If Next var_inserir
  9. Como ficou seu código após alterar para PasteSpecial? Se a macro anterior estava funcionando e você só fez essa adaptação, devia funcionar.
  10. Só para testar coloquei uma instrução para gerar apenas 3 linhas (Exit For). Sub Main() Dim WkCopia As Worksheet Dim WkNova As Workbook Dim L As Integer Set WkCopia = ThisWorkbook.ActiveSheet For L = 3 To WkCopia.Range("B2").End(xlDown).Row Set WkNova = Workbooks.Add WkCopia.Range(L & ":" & L).Copy WkNova.ActiveSheet.Cells(1) If L >= 5 Then Exit For Next L End Sub
  11. Segue uma macro que copia o range B12:AL14 de todas as Plans de Boletim. Para testar insira um módulo na planilha Boletim. A partir daí você pode ir adaptando. Sub Main() Dim Boletim As Worksheet Dim Unir As Worksheet Dim Area As Range Dim L As Integer L = 1 Set Unir = Workbooks.Add.ActiveSheet For Each Boletim In ThisWorkbook.Worksheets Set Area = Boletim.Range("B12:AL14") Area.Copy Unir.Cells(L, 1) L = L + 2 Next Boletim End Sub
  12. Com essa fórmula não tem a compensação no resultado. =se(cont.se(g10:n10;"<1,5")=0;"aprovado";"reprovado")
  13. @Julio Oviedo Testou com a fórumula CONT.SE?
  14. Você pode usar o cont.se para verificar se há algum resultado < 1,5 =SE(CONT.SE(G10:N10;"<1,5")=0;"APROVADO";"REPROVADO") adicionado 2 minutos depois Assim se tiver por exemplo uma nota 1,4 e outra 1,6 o resultado será aprovado.
  15. Com a propriedade CurrentRegion fica mais fácil copiar todo conteúdo, mas para isso a tabela não pode ter linhas ou colunas em branco. Insira um módulo na planilha e teste a macro abaixo. Sub Main() Dim Area As Range Dim Pasta As Workbook Set Area = Range("B2").CurrentRegion Set Pasta = Workbooks.Add Area.Copy Pasta.ActiveSheet.Range("B2") End Sub
  16. Colocando em ordem: U = {-5, -2, 0, 1, 1/2, 3/4, 2, 10/3, 4} Veja que há elementos fracionários pertencente aos racionais.
  17. Se tivesse colocado no módulo como comentei acima, já teria resolvido.
  18. O resultado da fórmula é de acordo com a descrição do problema.
  19. No print a macro está no módulo Plan1 e não no módulo que comentei acima.
  20. É só usar as fórmulas lógicas/condicionais. Segue um exemplo. =SE(OU(A1=1;A1=-1);"APROVADO";SE(OU(A1>1;A1<-1);"REPROVADO";""))
  21. Crie um módulo padrão (tipo Modulo 1, 2, etc) e coloque a macro nele. Isso deve resolver.
  22. Cole como valor, por exemplo: Range("A1:B1").Copy Range("A2:B2").PasteSpecial xlPasteValues
  23. É só colocar no módulo da planilha que a atualização será automática. Quanto a quantidade de linhas, pode ser alterado assim ou deixar automático
  24. Com macro dá para resolver isso, Aí o valor de B1 será atualizado apenas se a coluna 3 até a linha 5 for alterada. Private Sub Worksheet_Change(ByVal Target As Range) Dim Valor As String If Target.Column = 3 And Target.Row < 6 Then Valor = Target.Value Application.EnableEvents = False Range("B1") = Valor Application.EnableEvents = True End If End Sub
  25. Teste essa macro, é só substituir no módulo Plan2. Private Sub Worksheet_Change(ByVal Target As Range) Dim C As Range With Target If .Column = 3 Then For Each C In Target C.Offset(0, -1) = UCase(Format(C.Value, "MMMM")) C.Offset(0, -2) = IIf(C.Value = "", "", Year(C.Value)) Next C End If End With End Sub

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!