Ir ao conteúdo
  • Cadastre-se

Midori

Membro Pleno
  • Posts

    3.577
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. @Eli Almeidaa Não pode ser no início porque dentro do loop da opção seu programa pode chamar a opção 2 mais de uma vez.
  2. @GENECIOFICIAL Veja se assim resolve, =SE(NÚM.CARACT(A1)=16;"**** "&TEXTO(DIREITA(A1;12);"0000 0000 0000");ESQUERDA(A1;"3") &"*** ***"& DIREITA(A1;2))
  3. Essas variáveis devem ser iniciadas antes de entrar no loop da opção 2. Pode ser assim como fez.
  4. @Matheus Pincelli Fernades A lista pode ser privada e o código mais simples com iteração e sem essas condicionais. Você pode fazer um contador e acrescentar o quadrado dele na lista: lista.append(i ** 2).
  5. @Revolucao O código é só para abrir o formulário. O último só demonstrei como o formulário pode abrir com determinado registro da tabela selecionado. E aí teria que substituir a constante 10 por uma variável com o número da linha.
  6. @Revolucao No botão da sua planilha com o clique direito do mouse você vai ver no menu a opção "Atribuir Macro". Aí é só selecionar a sub com o código.
  7. Sub Formulario() [B4].CurrentRegion.Name = "Database" For I = 2 To 10 Call SendKeys("%(N)") Next I ActiveSheet.ShowDataForm End Sub
  8. @Revolucao É só copiar o bloco do loop/FOR e colar antes da linha ShowDataForm.
  9. @Revolucao O segundo é um trecho que você pode acrescentar numa sub. Onde tem 10 pode ser a linha da tabela que foi selecionada.
  10. @Revolucao Para exibir o formulário tem a função ShowDataForm, p.ex, Sub Formulario() [B4].CurrentRegion.Name = "Database" ActiveSheet.ShowDataForm End Sub Esse formulário é limitado e não tem muitos recursos para manipular via macro. Mas para selecionar um registro específico você pode tentar com SendKeys, p.ex para selecionar o décimo registro, For I = 2 To 10 Call SendKeys("%(N)") Next I ActiveSheet.ShowDataForm
  11. @GENECIOFICIAL Para usar a função como uma fórmula, cole o código no módulo e na entre com a fórmula, =RESULTADO(A4:J5) Function Resultado(Area As Range) As String Dim Celula As Range Dim Endr As String Dim Valr As String Resultado = "CONCLUSIVO" For Each Celula In Area.Rows(1).Cells If Celula.Value <= Celula(2).Value Then Endr = Endr & " " & Celula.Address(False, False) Valr = Valr & " " & Celula.Value Resultado = "DIVERGENTE - CÉLULA(S)" _ & Endr & " - VALOR(S)" & Valr End If Next Celula End Function
  12. @eliarde3 Para isso tem algoritmos como o desta página que usa o método recursivo, https://www.geeksforgeeks.org/print-all-possible-combinations-of-r-elements-in-a-given-array-of-size-n/ Deixei os elementos apenas numa coluna para facilitar, Dim Lin As Integer Sub GeraCombinacoes() Dim Elementos As Range Dim R As Integer Dim N As Integer Set Elementos = [A1:A20] R = 2 N = Elementos.Rows.Count - 1 Lin = 1 Call PrintCombination(Elementos, N, R) End Sub Sub PrintCombination(Elementos As Range, N As Integer, R As Integer) Dim Data As Variant ReDim Data(N) Call CombinationUtil(Elementos, Data, 0, N, 0, R) End Sub Sub CombinationUtil( _ Elementos As Range, Data As Variant, _ xStart As Integer, xEnd As Integer, Index As Integer, R As Integer) Dim J As Integer Dim I As Integer If Index = R Then For J = 0 To R - 1 [C:C].Cells(Lin, J + 1) = Data(J) Next J Lin = Lin + 1 Exit Sub End If I = xStart While I <= xEnd And xEnd - I + 1 >= R - Index Data(Index) = Elementos(I + 1) Call CombinationUtil(Elementos, Data, I + 1, xEnd, Index + 1, R) I = I + 1 Wend End Sub Este é o resultado com os 20 elementos e as combinações nas colunas C:D com 190 linhas,
  13. Para mais de uma ocorrência dessa condição, a fórmula pode exibir a lista de valores e endereços dessa forma, =SE(SOMA(SE(A4:J4<=A5:J5;1;0))>0;"DIVERGENTE - CÉLULA(S) " & UNIRTEXTO(" / ";VERDADEIRO;SEERRO(ENDEREÇO(4;SE(A4:J4<=A5:J5;TRANSPOR(LIN(INDIRETO("1:10")));""));"")) & " - VALOR(ES) " &UNIRTEXTO(" / ";VERDADEIRO;SE(A4:J4<=A5:J5;A4:J4;""));"CONCLUSIVO") A fórmula UNIRTEXTO não é compatível com todas as versões do excel. Mas se não há necessidade de prever multiplas ocorrências é possível resolver sem ela.
  14. @Sandro António Para especificar a quantidade de casas decimais tem a função Round. Esta é sintaxe, Round(expression, [ numdecimalplaces ]) O primeiro parâmetro recebe o valor no formato númerico e outro o número de casas.
  15. @mcoumiotis Veja se assim resolve, =C2:C10*D2:D10+SE(A2:A10="ALFA";E2:E10;-E2:E10)
  16. @Jeff_Sandes No exemplo tem duas mudanças, do 51,50 para 52,80 e depois do 52,80 para 51,50. Assim macro vai pegar os números das linhas 17 e 18. Sub Macro() Dim Area As Range Dim Linha As Long Dim Lin As Long Dim Col As Integer Set Area = [B2:Y61] For Col = 1 To Area.Columns.Count For Lin = 2 To Area.Rows.Count If Area(Lin, Col).Value <> Area(Lin - 1, Col).Value Then Linha = Linha + 1 [Z:Z].Cells(Linha).Value = _ Area(0, Col).Value & ":" & _ Area(Lin, 0).Value End If Next Lin Next Col End Sub
  17. @GENECIOFICIAL Veja se assim resolve, Sub Atualiza() Dim Area As Range Dim Conta As Integer Dim Linha As Long Dim Numero As Long Set Area = [B7:H207] For Linha = 1 To Area.Rows.Count Conta = _ WorksheetFunction.CountA( _ Area(Linha, 2).Resize(1, Area.Columns.Count - 1)) If Conta = Area.Columns.Count - 1 Then Numero = Numero + 1 Area(Linha, 1).Value = "Número " & Numero Else Area(Linha, 1).Value = "Incompleto" End If Next Linha End Sub Também para fazer só com fórmula. E fórmula com VBA iniciando o critério de countif em B6, Sub Atualiza2() [B7:B207].Formula = _ "=IF(COUNTA(RC[1]:RC[6])=6,""Número "" " & _ "&COUNTIF(R6C2:R[-1]C,""Número*"")+1,""Incompleto"")" [B7:B207].Value = [B7:B207].Value End Sub
  18. @alan neris É só remover as linhas desnecessárias. Se quer abrir o Edge e enviar comandos para o navegador, deixe as linhas do run até o último sendkeys.
  19. @Eli Almeidaa lst é uma lista com três elementos que também são listas. É só ver a condição de acordo com o valor dos elementos de cada uma.
  20. @Revolucao Com macro dá para adicionar o ComboBox nas novas linhas, mas a medida que novos controles são criados vai pesar no arquivo. Em vez do Combo coloque uma lista da Validação de Dados que será acrescentada automaticamente nas novas linhas da tabela.
  21. @Revolucao Para atualizar a lista ao selecionar a aba é no Activate e não SelectionChange como eu tinha comentado, Private Sub Worksheet_Activate() Call AtualizaNomes End Sub Cole essa Sub no mesmo módulo Rel_Cliente. Selecione qualquer outra aba e volte para Rel_Cliente para ativar o evento.
  22. @Jessica gomes A fórmula Hoje sempre retorna a data atualiza do dia. Se quiser fixar a data terá que digitar manualmente ou colar como valor.
  23. @Ismael Garcia Seu código pode ter outro loop para listar os objetos do formulário com o critério para pegar os ListBox, p.ex, For Each Controle In Me.Controls If TypeName(Controle) = "ListBox" Then ... End If Next Controle Aí é só usar a variável Controle em vez de Listbox1, 2, etc.
  24. @Revolucao Tem sim. Você pode escolher um dos eventos da planilha: Workbook_Open (executa ao abrir a planilha), SelectionChange (seleção da aba), etc.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!