Ir ao conteúdo
  • Cadastre-se

Midori

Membro Pleno
  • Posts

    3.543
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. Não tem similar. Mas se o teste for simples, sem a necessidade de abrir um bloco, dá para fazer na mesma linha, p.ex, If X = 5 Then If Y = 5 Then MsgBox "X = 5 e Y = 5" Assim só acontece o teste do Y se X = 5.
  2. É só no teste do procedimento AtualizaDados. As linhas de EnableEvents não devem ser modificadas.
  3. A atualização só acontece para True. Aqui essa coluna está Boolean. Talvez o seu Excel esteja interpretando como String e se for esse caso coloque True entre aspas lá no código.
  4. Faça dois Ifs. Primeiro o teste dos Maps e depois o array, If (MapX >= 0 And MapX <= 9) And (MapY >= 0 And MapY <= 9) Then If LevelMap0(MapY, MapX) <> vbBlue Then End If End If
  5. Não fiz o registro do horário porque isso ainda não ficou muito claro. A tabela pode ter mais de um True com históricos variados, nesse caso como o horário deve ser registrado? Sub Eventos() Application.EnableEvents = True End Sub Private Sub Worksheet_Calculate() Application.EnableEvents = False Call AtualizaDados(Range("E5:E13,E18:E26"), 10) Application.EnableEvents = True End Sub Sub AtualizaDados(Dados As Range, Colunas As Integer) Dim Ultimo As Range Dim Sequencia As Range Dim Conta As Integer For Each Ultimo In Dados If Ultimo(, 0).Value = True Then Set Sequencia = Ultimo(, 2).Resize(1, Colunas) Conta = WorksheetFunction.CountA(Sequencia) If Conta <> 0 Then Conta = IIf(Conta < Colunas, Conta, Conta - 1) Set Sequencia = Ultimo(, 2).Resize(1, Conta) Sequencia.Offset(0, 1).Value = Sequencia.Value End If Ultimo(, 2).Value = Ultimo.Value End If Next Ultimo End Sub
  6. @Lucia Andrade A condição deve ser >= 0. Corrigi isso no código pouco depois (estava > 0).
  7. Pode efetuar a busca com Find, https://learn.microsoft.com/en-us/office/vba/api/excel.range.find Faça isso no evento Change e passe Target.Value para a função.
  8. @Lucia Andrade Por isso não consegue selecionar a planilha. Você criou a variável n do tipo Integer para receber o índice (valor numérico) e não o nome da planilha. Para o nome pode ser assim, Private Sub salvar_Click() If Me.CB_Cartao.ListIndex >= 0 Then Dim Aba As Worksheet Dim Lin As Long Set Aba = Sheets(Me.CB_Cartao.Text) Lin = Aba.Range("B" & Aba.Rows.Count).End(xlUp).Row + 1 Aba.Cells(Lin, 2) = Me.CAIXA_ID.Text Aba.Cells(Lin, 3) = Me.CB_Cliente.Text Aba.Cells(Lin, 4) = Me.TX_Data.Text Aba.Cells(Lin, 5) = Me.CB_Cartao.Text Aba.Cells(Lin, 6) = Me.TX_Compras.Text Aba.Cells(Lin, 7) = Me.TX_Valor_Parcelas.Text End If End Sub
  9. @Lucia Andrade Vai funcionar da mesma forma se for um índice válido, seja de uma constante como nesse teste, de uma variável ou do ComboBox. Quais valores numéricos adicionou no CB_Cartao?
  10. @Lucia Andrade O que não deu certo? A macro apresenta algum erro? Testei aqui e funcionou. Cole o código no módulo para fazer o mesmo teste. Os dados serão salvos na aba CARTÃO 3. Private Sub Teste() Dim lin As Integer, n As Integer 'If IsNumeric(CB_Cartao.Value) Then n = 5 'End If If n >= 1 And n <= Sheets.Count Then With Sheets(n) lin = .Range("B" & .Rows.Count).End(xlUp).Row + 1 .Cells(lin, 2) = "A" 'Me.CAIXA_ID.Text .Cells(lin, 3) = "B" 'Me.CB_Cliente.Text .Cells(lin, 4) = "C" 'Me.TX_Data.Text .Cells(lin, 5) = "D" 'Me.CB_Cartao.Text .Cells(lin, 6) = "E" 'Me.TX_Compras.Text .Cells(lin, 7) = "F" 'Me.TX_Valor_Parcelas.Text End With Else MsgBox "Índice inválido", vbExclamation End If End Sub
  11. @Lucia Andrade Faltou passar o valor do índice. Entendi que ele vem de um combo, então é só fazer isto antes do If, If IsNumeric(CB_Cartao.Value) Then n = CB_Cartao.Value End If Na atribuição da linha seu range está "B32" e deve ser só "B".
  12. @Lucia Andrade Atribuiu algum valor a variável n? Se sim, é um valor entre 1 e a quantidade de abas? Como ficou o seu código?
  13. @Ewerton de Miranda Não precisa selecionar a tabela, veja se o loop assim resolve, For a = 1 To qtd_tabelas Call doc.Tables(a).AutoFitBehavior(wdAutoFitWindow) Next a
  14. @Lucia Andrade Pode ser assim, If n >= 1 And n <= Sheets.Count Then With Sheets(n) lin = .Range("B" & .Rows.Count).End(xlUp).Row + 1 .Cells(lin, 2) = Me.CAIXA_ID.Text .Cells(lin, 3) = Me.CB_Cliente.Text .Cells(lin, 4) = Me.TX_Data.Text .Cells(lin, 5) = Me.CB_Cartao.Text .Cells(lin, 6) = Me.TX_Compras.Text .Cells(lin, 7) = Me.TX_Valor_Parcelas.Text End With Else MsgBox "Índice inválido", vbExclamation End If Obs: Veja que coloquei o ponto antes dos ranges, já que usou a instrução With.
  15. Isso pode acontecer se tentar rodar Atualiza manualmente (com F5, p.ex). Esse procedimento só deve ser chamado por outro que nesse caso é o Calculate. Tenta resolver só o primeiro range e se der certo aplique para outro. O segundo parâmetro é a quantidade de colunas usadas para salvar os dados. Assim vai até a coluna 16380 e é quase a quantidade limite de colunas da atual versão do Excel. Se quiser guardar o histórico sem depender desse limite, é melhor fazer por linhas e não colunas.
  16. O primeiro índice da planilha é 1. Aí a variável n só foi declarada e como não recebeu nenhum valor passar zero como argumento. Para evitar esse erro você pode testar antes se n é um índice válido.
  17. Qual macro não existe? Copiou o procedimento Atualiza e colocou o Calculate na planilha?
  18. Se a sua versão for a 365 poderá usar a fórmula ÚNICO e fazer assim, =MOD(CORRESP(A1;ÚNICO($A$1:$A$13);0);2) Dessa forma poderá usar a posição dos dados encontrados no array e aplicar a formatação nas posições ímpares.
  19. Salvou o arquivo como xlsm? Caso necessário, as configurações de segurança ficam no excel em opções > central de confiabilidade.
  20. Neste tópico teve uma questão parecida, https://www.clubedohardware.com.br/forums/topic/1606559-excel-copia-e-guarda-x-valores-entregues-pelo-rtd-real-time-data/ A mesma macro pode servir. No Calculate tenta editar o loop para o range dessa planilha.
  21. Os elementos são acrescentados no combo com o procedimento AddItem. É só fazer um para cada no Initialize do formulário.
  22. Pode mostrar um exemplo do que quer fazer?
  23. Veja se assim resolve, =SOMA((Tabela1[SITUAÇÃO]>="D")*(Tabela1[SITUAÇÃO]<="H")*(NÚM.CARACT(Tabela1[SITUAÇÃO])=1)*SUBTOTAL(9;DESLOC(C10;LIN(Tabela1[VALOR])-LIN(C10);0)))
  24. @joap avelino de sousa Isso pode ser feito com tabela dinâmica, é bem mais simples. Assim o campo GRH fica como filtro da tabela.
  25. ExportAsFixedFormat vai exportar todas as páginas da planilha. Se quiser imprimir certificados específicos, sua macro pode copiar só os nomes necessários. Se for de 1 a 10 serão os nomes da linha 1 até a 10. Para o outro caso será a linha 1 e 5.

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!