Ir para conteúdo
Fórum Script Brasil

Alyson Ronnan Martins

Membros
  • Total de itens

    830
  • Registro em

  • Última visita

Posts postados por Alyson Ronnan Martins

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

     

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

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

     

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

  5. 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! 😊

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

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

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

  9. @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!


     

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

     

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

     

  12. Quando você abre o link não aparece esse botão?
    image.thumb.png.e387939cc14365bad0316c5cc7b7a719.png

    Só "logar" sua conta da microsoft

    image.png.28b07b044083862c3253607886231f55.png

    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

  13. @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.
    image.png.7a550f71b5db0ee72a8990109da07c52.png

     

    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

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

×
×
  • Criar Novo...