Ir para conteúdo
Fórum Script Brasil

Alyson Ronnan Martins

Membros
  • Total de itens

    830
  • Registro em

  • Última visita

Tudo que Alyson Ronnan Martins postou

  1. Bom dia @biza já tentou usar a tabela dinâmica para resolver seu problema? Estou abaixo enviando a tabela dinâmica com o mesmo exemplo: 222312-agregar-dados-em-vba-excel.xlsx
  2. Pelo que entendi, você deseja replicar os dados do primeiro dia para os outros 30 dias do mês, alterando apenas a data. Seu código atual já parece fazer isso. No entanto, notei que você está incrementando a data apenas na primeira linha de cada conjunto de dados copiado. Se você deseja que a data seja incrementada para todas as linhas copiadas, você deve remover a condição If j = 1 Then e sempre incrementar a data, como mostrado abaixo: For j = LBound(dataValues, 1) To UBound(dataValues, 1) ' Incrementar a data inicial dataValues(j, 1) = celDataInicial.Value + i Next j
  3. Opa @Robson Luís Vi seu post no fórum e da para copiar sim, porém precisa saber como esta planejando fazer essa "cópia" teria uma planilha exemplo e aumentar um pouquinho a descrição do que está pensando?
  4. Boa tarde @Samuel Carlos Ribeiro. Também tive esse tipo de problema quando a base de informações do list é muito grande, pesquisei muito na microsoft e na epoca e hoje não consegui solucionar e sim contornar o problema. Não sei qual a sua necessidade para utilizar o additem em campos do List. Eu recomendaria mudar para a propriedade RowSource, já que você esta adicionando todas as colunas (praticamente). Olha o código exemplo: Sub CarregaListBox() Dim wb As Workbook Dim sh As Worksheet Set wb = ThisWorkbook Set sh = wb.Sheets("clientes") wb.Activate sh.Activate lins = sh.Range("A1048576").End(xlUp).Row With ListBox1 ' Define a propriedade RowSource para o intervalo desejado na planilha .RowSource = sh.Range("A1:M" & lins).Address End With Set wb = Nothing Set sh = Nothing End Sub Link da microsoft: Como resolver erro em tempo de execução 380 não foi possível definir a - Microsoft Community
  5. Boa noite @otavio Braga Imagino que utilizando o array (lista) de dados seja o mais adequado para o que esta precisando, olha o exemplo abaixo que coloquei: Sub teste() ' Usando um array Dim valores(1 To 5) As Integer ' Atribuindo valores valores(1) = 10 valores(2) = 20 valores(3) = 30 valores(4) = 40 valores(5) = 50 ' Iterando sobre o array Dim i As Integer For i = 1 To 5 MsgBox valores(i) Next i End Sub
  6. Boa noite @Pedro Queiroz. Eu utilizo a funcionalidade do Excel para definir os locais "confiáveis" para meu código assim ele não fica aparecendo mensagens. Abre opções -> central de compatibilidades Configurações Depois vai em locais confiáveis e ativa permitir locais de rede e adicione o local que você quer:
  7. @buscheric boa tarde, mandei um solicitação. Quem sabe consigo te auxiliar melhor se você fizer um documento laudo "errado" com dados fictícios para simular e tentar criar algo que funcione. Caso não tenha o arquivo é complicado descrever um código preciso, só posso pensar em uma lógica que possa funcionar. Abraço.
  8. @ricardoweb084 ai foi bem além de onde eu teria ido. kkkk Pelo que lembro, sendo isso a algum tempo, você pode olocar o formulaário em modo "modal" fazendo com que ele não mostre a barra de título, mesmo colocando um menu(popup) ao aperta o botão direito do mouse. Claro que não vi seu código para entender porque isso está acontecendo. Mesmo assim fico muito feliz de ter ajudado (mesmo que por pouco tempo) é assim mesmo. Hoje estou procurando soluções para criar aplicações um pouco fora do VBA devido a falta de funcionalidades/conhecimento. Qualquer coisa pode chamar ai.
  9. Boa noite @juliosonic. Seu código HTML parece estar correto em termos de SEO. Você tem as tags de título e meta corretas, incluindo og:title, og:site_name, twitter:title e outras tags importantes para SEO. No entanto, se o Google está mostrando o URL do seu site em vez do nome do site nos resultados da pesquisa, pode ser devido a alguns motivos possíveis12: Google ainda não indexou as alterações: Se você fez alterações recentemente no seu site, pode levar algum tempo para o Google rastrear e indexar essas alterações. Problemas de rastreamento ou indexação: Verifique se o Google pode rastrear e indexar seu site corretamente. Você pode usar a ferramenta Google Search Console para isso. Inconsistências nos sinais: Certifique-se de que o nome do seu site seja consistente em todo o seu site e em todas as suas tags de título e meta. Problemas com o arquivo sitemap.xml: Verifique se o seu arquivo sitemap.xml está atualizado e listando todas as páginas corretamente. Se você já verificou todos esses pontos e o problema persiste, pode ser útil entrar em contato com o suporte do Google ou consultar um especialista em SEO para obter ajuda adicional. Lembre-se de que a otimização para mecanismos de pesquisa pode levar algum tempo para produzir resultados, então tenha paciência. Espero que isso ajude! 😊
  10. Boa noite @Diego Braga, não se ainda é possível restaurar se tiver com esse erro. Tenta instalar em uma máquina local e fazer o "restaure" dentro dessa máquina para validade algum erro no servido que esta restaurando.
  11. Boa noite @ricardoweb084 eu recomendaria deixar sem borda e criar o próprio botão de fechar.
  12. Opa boa noite. Pelo que eu entendi precisa escolher um modelo dependendo do usuário correto? Se sim você usar esse dado para abrir o modelo que deseja. Esse seria um exemplo: If rgFoco.Columns("AF").value = "Laudo novo" Then 'Define qual constante vai utilizar (novo) else 'Defini qual constante vai utilizar (antiga) end if Você também pode dublicar a procedure btGerarLaudo_Click e criar ele olhando para a nova constante que aponta para o laudo. Dessa maneira você teria dois botões sendo um para o laudo antigo e outro para o laudo novo.
  13. Boa noite @Bruno Rafael do carmo izzo A palavra Brasil deveria estar em aspas simples: NASCIONALIDADE VARCHAR(20) DEFAULT 'BRASIL'
  14. Boa tarde. @buscheric Deve ser rasuaveklment simples devido já ter um modelo criado. Você tem o documento novo com os "Bookmarks" , (referências para o VBA fazer a inclusão de dados do excel)? Caso já tenha feito a primeira coisa que vai fazer é definir a posição do novo modelo: Const modeloUS = "C:\Anima\Modelo Laudos\Laudo Abdominal.dotx" Pelo que entendi esse código acima é o modelo atual então vai criar o novo modelo exemplo: Const modeloUS = "C:\Anima\Modelo Laudos\Laudo Abdominal.dotx" Const modeloBR = "C:\Anima\Modelo Laudos\Laudo Abdominal2.dotx" Assim que for respondendo, vamos te ajudando a continuar.
  15. Eu tentei no meu computador em casa mais o office atualizou e nem eu sei usar na versão mais recente. kkkk Segue o comando que tenho para fazer conexão com banco de dados do access: 'Criado por Alyson Ronnan Martins 'Data: 2021/11/12 'Utilizar a referência: Microsoft ActiveX Data Objects 6.1 Library Public db As ADODB.Connection Public rs As ADODB.Recordset Public Const DB_PATH As String = "C:\DB\" Public Const DB_NAME As String = "database.accdb" Public Sub cConnectOpen() On Error Resume Next Set db = New ADODB.Connection Dim Caminho As String Caminho = DB_PATH & DB_NAME If Dir(Caminho) = "" Then MsgBox "Não foi encontrador o banco de dados!" & Chr(13) & _ "Solicitar o suporte da verificar o caminho abaixo:" & Chr(13) & _ DB_PATH & DB_NAME, vbCritical, _ "Erro crítico!" Application.Quit End If With db .ConnectionString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};" & _ "ReadOnly=0;" & _ "DBQ=" & Caminho & ";" & _ "DefaultDir=" & DB_PATH '& _ "Uid=Admin;Pwd=;" .Open End With 'Exemplo de fazer consulta 'Set rs = db.Execute("SELECT * FROM TABELA") 'rs.Close: Set rs = Nothing End Sub Public Sub cConnectClose() On Error Resume Next db.Close Set db = Nothing End Sub Agora para consultar os dados você cria um procedimento para executar uma consulta: sSQL = "SELECT * " & _ "FROM [nome tabela] " & _ Set rs = New ADODB.Recordset rs.Open sSQL, db, adOpenDynamic, adLockReadOnly retornoSQL = rs.EOF If retornoSQL = False Then Do Until rs.EOF Sheets("Planilha1").Cells(x + 1, 1).Value = rs.Fields("") Sheets("Planilha1").Cells(x + 1, 2).Value = rs.Fields("") Sheets("Planilha1").Cells(x + 1, 3).Value = rs.Fields("") Sheets("Planilha1").Cells(x + 1, 4).Value = rs.Fields("") Sheets("Planilha1").Cells(x + 1, 5).Value = rs.Fields("") rs.MoveNext x = x + 1 Loop end if @Domingos Oliveira Avalia se consegue entender e utilizar.
  16. Boa tarde @Domingos Oliveira Precisa mesmo ser VBA? O import do EXCEL já traz as informações e é possível fazer SQL na hora de trazer as informações do ACCESS.
  17. Boa tarde @ricardoweb084 Quando você pressiona botão F8 vai continuar até chegar na linha que esta gerando o erro de execução. Já fez esse procedimento?
  18. @Albino Sergio Boa noite. Em que momento ou em que processo vai dispara o comando para criar a "aba" nova?
  19. @leonidlo costa boa noite. Parece que o problema está na forma como você está usando a função AutoFilter e a tentativa de filtrar números como se fossem texto. Se a coluna 1 contém códigos de itens e você deseja filtrar por números, pode ser necessário ajustar a forma como você configura o critério de filtragem. Aqui está uma versão modificada do seu código que tenta lidar com números: Private Sub txtlist_Change() If txtlist.Value <> "" Then ' Verifica se o texto inserido é um número If IsNumeric(txtlist.Value) Then ' Se for um número, filtra a coluna 1 com critério numérico ActiveSheet.ListObjects("estoque").Range.AutoFilter Field:=1, Criteria1:=CLng(txtlist.Value) Else ' Se não for um número, filtra como texto ActiveSheet.ListObjects("estoque").Range.AutoFilter Field:=1, Criteria1:= _ "=*" & txtlist.Value & "*", Operator:=xlAnd End If Else ' Se o campo estiver vazio, remove todos os filtros ActiveSheet.ListObjects("estoque").Range.AutoFilter Field:=1 End If End Sub Essa versão do código primeiro verifica se o texto inserido na TextBox é um número usando a função IsNumeric. Se for um número, o filtro é aplicado usando o valor convertido para inteiro (CLng). Se não for um número, o filtro é aplicado como antes, tratando-o como texto. Espero que isso ajude a resolver o problema!
  20. Se você deseja adaptar o código para selecionar apenas as colunas H até R em vez da linha inteira, você pode ajustar a maneira como o intervalo é tratado. Aqui está a versão adaptada do seu código: Sub DeleteRows() ' Update by 20211217 Dim rng As Range Dim InputRng As Range Dim DeleteRng As Range Dim DeleteStr As String Dim xTitleId As String Dim xArr Dim xF As Integer Dim xWSh As Worksheet On Error Resume Next xTitleId = "Excluir apostas" Set rng = Application.Selection Set InputRng = Application.InputBox("Range :", xTitleId, rng.Address, Type:=8) If InputRng Is Nothing Then Exit Sub DeleteStr = Application.InputBox("Delete Text", xTitleId, Type:=2) Set xWSh = InputRng.Worksheet For Each rng In InputRng ' Verifica se a célula contém o texto a ser excluído If rng.Value = DeleteStr Then ' Se DeleteRng ainda não foi definido, define-o como a célula atual If DeleteRng Is Nothing Then Set DeleteRng = rng.Offset(0, 7).Resize(, 10) ' Ajusta para selecionar da coluna H até R Else ' Caso contrário, une DeleteRng com a nova célula Set DeleteRng = Application.Union(DeleteRng, rng.Offset(0, 7).Resize(, 10)) End If End If Next ' Exclui as células selecionadas If Not DeleteRng Is Nothing Then DeleteRng.Delete End If End Sub As alterações foram feitas na linha: Set DeleteRng = rng.Offset(0, 7).Resize(, 10) Essa linha ajusta DeleteRng para começar da coluna H (Offset(0, 7)) e se estender até a coluna R (Resize(, 10)). Isso garante que somente as colunas desejadas sejam selecionadas para exclusão. Certifique-se de testar o código para garantir que ele atenda aos seus requisitos.
  21. Boa tarde @andersonrich Como não tenho uma base de dados para testar meu código olha se esse código resolveu o que precisa: Function BuscaVertical(intervalo As Range, palavra As String) As Variant Dim c As Object Dim a() As Variant Dim posicao As Long posicao = 0 ' Redimensiona o array para garantir espaço suficiente ReDim a(1 To 1) For Each c In intervalo.Cells If palavra = c.Value Then ' Redimensiona o array para armazenar o novo valor encontrado posicao = posicao + 1 ReDim Preserve a(1 To posicao) a(posicao) = palavra End If Next c BuscaVertical = a End Function
  22. Quando você abre o link não aparece esse botão? Só "logar" sua conta da microsoft Uma melhoria no código da alteração da planilha: Option Explicit 'Obrigado declarar o tipo de cada variável Public amountLines As Integer 'Linhas atuais na planilha Public isConfirmExclude As Boolean 'Variavel para confirmar se pode excluir a linhas Private Sub Worksheet_Change(ByVal Target As Range) 'A cada alteração na planilha é verificado se a quantidade de linha aumentou ou diminuiu Dim currentLines As Integer 'Declarado as linhas atuais Const COLUMN_BASE As String = "A" 'Coluna base para contar as linhas 'Pega o numero da ultima linha com base na na Coluna currentLines = ActiveSheet.Cells(Rows.Count, COLUMN_BASE).End(xlUp).Row If currentLines < amountLines Then 'Caso tenha diminuido a quantidade de linhas isConfirmExclude = False frmConfirmExclude.Show 'Caso não tenha sido autorizado e vai desfazer a alteração If Not isConfirmExclude Then Application.Undo currentLines = currentLines + 1 Else currentLines = currentLines + 1 End If End If amountLines = currentLines End Sub @Eduardonada
  23. @Eduardonada Bom dia. Seu problema realmente precisou de uma lógica e pode ser que já até tenha resolvido ai kkkk Vamos lá: Na planilha1 do meu teste eu coloquei um variável para contar a quantidade de linhas existentes, também coloquei uma variável pare saber se está sendo autorizada a exclusão de linhas atuais (ou diminuição do total de linhas). Option Explicit 'Obrigado declarar o tipo de cada variável Public amountLines As Integer 'Linhas atuais na planilha Public isConfirmExclude As Boolean 'Variavel para confirmar se pode excluir a linhas Depois coloquei o evento a cada alteração acontecer na planilha ele chamar um formulário para saber se pode excluir ou não: Private Sub Worksheet_Change(ByVal Target As Range) 'A cada alteração na planilha é verificado se a quantidade de linha aumentou ou diminuiu Dim currentLines As Integer 'Declarado as linhas atuais Const COLUMN_BASE As String = "A" 'Coluna base para contar as linhas 'Pega o numero da ultima linha com base na na Coluna currentLines = ActiveSheet.Cells(Rows.Count, COLUMN_BASE).End(xlUp).Row If currentLines < amountLines Then 'Caso tenha diminuido a quantidade de linhas isConfirmExclude = False frmConfirmExclude.Show 'Caso não tenha sido autorizado e vai desfazer a alteração If Not isConfirmExclude Then Application.Undo End If End If amountLines = currentLines End Sub Agora chegou a parte do formulário. Foi criado um formulário passando apenas uma senha 123 para casa realmente a alteração esteja confirmada. Foi construído um código que vai alterar a variável isConfirmExclude caso o código pode ser excluído (lá da planilha1). Apenas quando a senha for digitada certa. Private Const PASSWORD As String = "123" 'Senha padrão para validação Private Sub btnConfirmar_Click() If txtPass.Value = PASSWORD Then Planilha1.isConfirmExclude = True 'Libera a alteração Unload frmConfirmExclude 'Fecha o formulário Else Planilha1.isConfirmExclude = False 'Priobindo a alteração End If End Sub Private Sub UserForm_Activate() Planilha1.isConfirmExclude = False 'Só por garantia que o valor vai ser falso quando abrir End Sub Claro que pode ficado difícil de imagina então estou colocando o código abaixo: Link(planilha onedrive): Eduardonada - UserForm por exclusão.xlsm
  24. Bom dia @Maria Monica Loiola tenta usar esse código abaixo: Function crit(duration) As String Dim resultado As String Select Case duration Case Is < 21 resultado = "P1" Case Is <= 42 resultado = "P1 OU P2" Case Is <= 63 resultado = "P2 OU P3" Case Is <= 126 resultado = "P3 OU P4" Case Is <= 252 resultado = "P4 OU P5" Case Is <= 504 crit = "P5 OU P6" Case Is <= 756 resultado = "P6 OU P7" Case Is <= 1008 resultado = "P7 OU P8" Case Is <= 1260 resultado = "P8 OU P9" Case Is < 2520 resultado = "P9 OU P10" Case Else resultado = "P10" End Select crit = Replace End Function Como você fitou que a base de dados é muito grande, ficar fazendo "formulas" para retornar valores vai fazer seu código ficar lento ainda. O mais aconselhado é fazer um procedimento que percorrer sua base de dados e preencher der acordo com o que deseja. Funciona igual a uma formula porém vai fazer sozinho
  25. Bom dia @Eduardonada O que esta pensando em "encontrar" é o índice para ser excluído ou a senha, ficou meio confuso seu texto.
×
×
  • Criar Novo...