Ir ao conteúdo
  • Cadastre-se

Jeff_Sandes

Membro Pleno
  • Posts

    90
  • Cadastrado em

  • Última visita

Tudo que Jeff_Sandes postou

  1. Tem uma forma de executar uma macro vba com base no estado da célula? Tentei fazer assim mas não está executando Private Sub Worksheet_Change() If Range("A1").Value = "vermelho" Then Range("A1:Z1").Interior.Color = RGB(255, 0, 0) ' Vermelho End If End Sub
  2. Tem um jeito simples de soltar um beep com uma frequência específica com uma duração específica em VBA? As formas que acho na internet usam o código muito extenso.
  3. Como adicionar uma ComboBox com opções prévias para seleção e usar essas opções no código como variáveis. um exemplo de código.
  4. Estou desenvolvendo uma macro VBA que usa DDE para comunicação com um software de automação (RSLinx Classic OEM), a macro possui um userForm com uma TextBox que o usuário digita uma hora, porém ao executar a macro a saída no software vira um número decimal do tipo String. Private Sub Validar_Click() Dim DDEItem As String Dim Rangetopoke1 As Range Dim horaColetaValue As String DDEChannel = Application.DDEInitiate(app:="RSLinx", topic:="MOAGEM") DDEItem = "Hora_coleta_lab" horaColetaValue = Format(Me.HoraDaColeta.Value, "hh:mm") Set Rangetopoke1 = ActiveSheet.Range("C1000000") Rangetopoke1.Value = horaColetaValue Application.DDEPoke DDEChannel, DDEItem, Rangetopoke1 Application.DDETerminate DDEChannel Unload LABORATORIO End Sub quando digito 00:00 no textbox o resultado final é 0 em string, se eu digitar 23:59 o resultado fica 0,999305555555556 o resultado no software final fica assim: tem alguma forma de manter a string original no resultado final via VBA ou é necessário fazer algum ajuste no próprio software?
  5. Ahhh! Agora entendi, o valor do TextBox vai escrever na célula e o valor da célula vai escrever no RangetoPoke
  6. tem como você escrever um exemplo? Estou tentando mas sempre dá erro de compilação, ainda sou iniciante no VBA
  7. Fiz assim, porém dá erro de objeto obrigatório. Private Sub Validar_Click() DDEChannel = Application.DDEInitiate(app:="RSLinx", topic:="MOAGEM") DDEItem = "PERDA_AO_FOGO" Set Rangetopoke.Value = LABORATORIO.TextBox_01.Value Application.DDEPoke DDEChannel, DDEItem, Rangetopoke Application.DDETerminate DDEChannel Unload LABORATORIO End Sub
  8. não foi declarado, a pena substituí para dar um exemplo com base no exemplo funcional acima.
  9. Estou tentando fazer um UserForm para coleta de dados e estou usando uma DDE(Dynamic Data Exchange) para fazer a comunicação entre a planilha e o software de comunicação, porém o modelo que o suporte do próprio software fornece é o seguinte: assim funciona Private Sub Validar_Click() DDEChannel = Application.DDEInitiate(app:="RSLinx", topic:="MOAGEM") DDEItem = "PERDA_AO_FOGO" Set Rangetopoke = Worksheets("Planilha1").Range("B3") Application.DDEPoke DDEChannel, DDEItem, Rangetopoke Application.DDETerminate DDEChannel End Sub porém eu gostaria de mudar o valor 'Rangetopoke' para o valor de um textbox como no exemplo abaixo (Não funcional): Private Sub Validar_Click() DDEChannel = Application.DDEInitiate(app:="RSLinx", topic:="MOAGEM") DDEItem = "PERDA_AO_FOGO" Rangetopoke = LABORATORIO.TextBox_01.Value 'LABORATORIO UserForm Application.DDEPoke DDEChannel, DDEItem, Rangetopoke Application.DDETerminate DDEChannel Unload LABORATORIO End Sub Nenhum erro apresenta porém não executa nada.
  10. Estou desenvolvendo uma aplicação em um software que é base VBA, tem um elemento que é uma Numeric Display, preciso que sempre que o número que apareça nessa Numeric Display for um numero primo, ele vai executar outra parte do código, tentei com uma função (Gerada pelo ChatGPT) e não funcionou (Como era de se esperar). Queria evitar uso de funções, pois o software é bem limitado e fácil de causar erros por problemas de compilação, segue o código abaixo. Private Sub Sekunden_Change() On Error GoTo ErrorHandler If Synchronizer(Sekunden.Value) Then ExecuteCommand "DataWrite" Else ExecuteCommand "DataRead" End If Exit Sub ErrorHandler: LogDiagnosticsMessage Err.Description, ftDiagSeverityError End Sub Function Synchronizer(ByVal Numero As Integer) As Boolean Dim i As Integer If Numero < 2 Then IsPrimo = False Exit Function End If For i = 2 To Int(Sqr(Numero)) If Numero Mod i = 0 Then IsPrimo = False Exit Function End If Next i IsPrimo = True End Function
  11. É possível criar uma Inputbox em VBA onde os caracteres digitados são mascarados com *** para evitar visualização da senha?
  12. alguém tem um 'projetinho' pronto em Swift com uma UI para autenticar usuário? algum exemplo de programa que só passa para a próxima tela se as condições inseridas forem verdadeiras
  13. Como simplificar esse trecho da macro? evitando repetições da mesma instrução sub teste() [Z10].Value = "0": [Z10].AutoFill [Z10:Z59], xlFillSeries [A9].Value = "0": [A9].AutoFill [A9:AX9], xlFillSeries [AY1].Value = "0": [AY1].AutoFill [AY1:AY59], xlFillSeries [AZ9].Value = "0": [AZ9].AutoFill [AZ9:BW9], xlFillSeries [B7].Value = "00:00": [B7].AutoFill [B7:B31], xlFillSeries [BQ1].Value = "1": [BQ1].AutoFill [BQ1:BT1], xlFillSeries end sub tentei pegar uma ideia no ChatGPT, mas mesmo a IA não deu uma resposta boa Sub FillSeriesAndTime() Dim Ranges As Variant Dim RowRange As Range Ranges = Array( _ [Z10:Z59], [A9:AX9], [AY1:AY59], _ [AZ9:BW9],[B7:B31], [BQ1:BT1]) For Each RowRange In Ranges RowRange.Cells(1, 1).Value = "0" RowRange.Cells(1, 1).AutoFill RowRange, xlFillSeries Next RowRange [B7].Value = "00:00" [B7].AutoFill [B7:B31], xlFillSeries [BQ1].Value = "1" [BQ1].AutoFill [BQ1:BT1], xlFillSeries End Sub achei interessante o uso de array, assim posso apenas alterar os elementos dentro da array, mas assim não funcionou, a variável 'RowRange' recebe o valor Nothing
  14. Deu certo! Só mudei o "00:00" para formato hora "hh:mm"
  15. percebi um erro e corriji, mas agora os valores não vem em formato de tempo Sub teste() Dim inicio As Integer contador = 14 For inicio = 1 To contador Cells(inicio, 58) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF01.SP_RZ"",""" & Range("BE" & inicio).Value & ":00"",0,"""",""previous"")" Cells(inicio, 59) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF02.SP_RZ"",""" & Range("BE" & inicio).Value & ":00"",0,"""",""previous"")" Cells(inicio, 60) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF03.SP_RZ"",""" & Range("BE" & inicio).Value & ":00"",0,"""",""previous"")" Cells(inicio, 61) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF04.SP_RZ"",""" & Range("BE" & inicio).Value & ":00"",0,"""",""previous"")" Cells(inicio, 62) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF05.SP_RZ"",""" & Range("BE" & inicio).Value & ":00"",0,"""",""previous"")" Next inicio End Sub tentei colocar Format mas mesmo assim o resultado dá FALSO Sub pregos() Dim inicio As Integer contador = 14 For inicio = 1 To contador Cells(inicio, 58) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF01.SP_RZ"",""" & Range("BE" & inicio).Value = Format(Time, "00:00") & ":00"",0,"""",""previous"")" Cells(inicio, 59) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF02.SP_RZ"",""" & Range("BE" & inicio).Value = Format(Time, "00:00") & ":00"",0,"""",""previous"")" Cells(inicio, 60) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF03.SP_RZ"",""" & Range("BE" & inicio).Value = Format(Time, "00:00") & ":00"",0,"""",""previous"")" Cells(inicio, 61) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF04.SP_RZ"",""" & Range("BE" & inicio).Value = Format(Time, "00:00") & ":00"",0,"""",""previous"")" Cells(inicio, 62) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF05.SP_RZ"",""" & Range("BE" & inicio).Value = Format(Time, "00:00") & ":00"",0,"""",""previous"")" Next inicio End Sub
  16. como fazer um loop o vba para inserir o valor das células dentro da fómula? tentei assim mas o vba ignorou os valores das células For inicio = 1 To contador Cells(inicio, 58) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF01.SP_RZ"",""" & Range("BF" & inicio).Value & ":00"",0,"""",""previous"")" Cells(inicio, 59) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF02.SP_RZ"",""" & Range("BG" & inicio).Value & ":00"",0,"""",""previous"")" Cells(inicio, 60) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF03.SP_RZ"",""" & Range("BH" & inicio).Value & ":00"",0,"""",""previous"")" Cells(inicio, 61) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF04.SP_RZ"",""" & Range("BI" & inicio).Value & ":00"",0,"""",""previous"")" Cells(inicio, 62) = "=PIArcVal(""\\AUT-FTV-HST-01\CALC_530BWF05.SP_RZ"",""" & Range("BJ" & inicio).Value & ":00"",0,"""",""previous"")" Next inicio na imagem mostra a coluna com as horas que deveriam entrar na fórmula
  17. caso eu precise mudar o formato das horas para 'HH:MM' e mudar a área onde o resultado seja deslocado, como faço? Tentei mudar os formatos e mover para a coluna AZ, mas não deu
  18. Tenho uma tabela com a combinação de produtos A,B,C,D e E, o momento em que os produtos foram adicionados estão organizadas em ordem vertical, porém não há a organização horizontal, estou tentando desenvolver uma macro VBA para organizar horizontalmente os dados dispostos nas células. Abaixo segue a imagem de como vem e como gostaria de desenvolver, à esquerda é como os dados vem e à direita é como deveriam estar, além de mostrar as combinações dos produtos em células separadas. Seria possível fazer essa análise célula a células deslocando que para baixo os valores que não correspondem a ordem horizontal?
  19. @Midori Funcionou perfeitamente !! Obrigado!!
  20. tenho uma planilha que está organizada da seguinte maneira, a primeira linha está preenchida de 0 a 23, localizada na célula B1 a Y1, na primeira coluna está preenchida de 0 a 59, localizada na célula A2 até a célula A61, no intervalo de células B2 a Y61 há números com valores aleatórios dentro das células, será possível criar uma macro capaz de percorrer a célula B2 até a célula Y61, o percurso deverá seguir a seguinte ordem B2, B3, B4, B5... ao chegar na célula B61, a macro deverá seguir para a coluna ao lado ,C, seguindo a mesma ordem até a célula Y61, analisando o valor dentro de cada célula e registrando se houve mudanças de valor entre a célula atual e a anterior, se houver mudança, a posição dessas mudanças deverá ser registradas em relação as linhas A2 a A61 e as colunas B1 a Y1, utilizando os números dispostos nelas, para formar a informação de hora e minuto dessa mudança( sendo horas colunas e minutos linhas), após identificar a posição de cada mudança, essas informações serão colocadas na coluna Z. no exemplo a cima temos a posição 6 e 15, coluna 6 e linha 15, significa dizer que às 06:15 houve uma mudança.
  21. @Wendell Menezes funcionou para os textos, mas como seria para os alinhamentos e fontes? Dá pra encaixar dentro do loop? @Wendell Menezes Consegui resolver, basta colocar os parâmetros.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!