Jump to content

Search the Community

Showing results for tags 'vba'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Comunidade
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Apresentação de Projectos de Programação
    • Downloads
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Pascal
    • Python
    • Bases de Dados
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica e Automação Industrial
    • Matemática
    • Software de Contabilidade e Finanças
    • Dúvidas e Discussão de Programação
  • Outras Áreas
    • Notícias de Tecnologia
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website


GitHub


LinkedIn


Twitter


Facebook

  1. Ola galera, tudo bem? Eu gostaria de saber se é possível ou alguém sabe se é possível fazer com o VBA, e conseguiria me ajudar com uma macro com esse arquivo que eu estou tentando fazer: Na coluna "J" eu tenho que colocar BITREM, BITREM2, CARRETA e CARRETA2. Quando colocado essa informação nesse coluna ele alimenta a Gestão visual nas colunas T:X. As fórmulas na Gestão Visual funcionam assim: * "Bitrem" deve ter até 40 paletes com até 23 toneladas. (Podendo ser apenas de uma cidade, ex: Sumaré ou Itapetininga). * "Bitrem2" deve ter até 60 paletes com até 16.1 toneladas. (deve ser da mesma cidade do Bitrem) * "Carreta" deve ter até 60 paletes com até 23 toneladas. (Podendo ser apenas de uma cidade, ex: Sumaré ou Itapetininga). * "Carreta2" deve ter até 60 paletes com até 23 toneladas. (Podendo ser apenas de uma cidade, ex: Sumaré ou Itapetininga). Que eu gostaria de fazer é uma macro para colar as informações de BITREM, BITREM2, CARRETA e CARRETA2 nessa sequência e verificar se as condições acima não passam do limite especificado, se for passar, ele muda para fazer uma colagem na sequência. Ex: se estiver colando o BITREM e passar de 40 paletes ou passar do peso de 23 toneladas, ele pula para completar informações novas no Bitrem2, onde ele utiliza a Coluna J e vai colando novas informações até preencher todos itens da lista, assim checando os campos que estão faltando. É possível fazer uma macro dessa forma com o excel? Att,
  2. Private Sub CBPesquisar_Click() On Error GoTo Erro Dim pesquisa As String pesquisa = InputBox("Digite Critério da Pesquisa!", "PESQUISAR") Dim linha As Double linha = 1 With Folha1 Do linha = linha + 1 If .Cells(linha, 2).Value = pesquisa Or .Cells(linha, 3).Value = pesquisa Or .Cells(linha, 4).Value = pesquisa Or .Cells(linha, 5).Value = pesquisa Or Cells(linha, 6).Value = pesquisa Or Cells(linha, 7).Value = pesquisa Or Cells(linha, 8).Value = pesquisa Or Cells(linha, 9).Value = pesquisa Or Cells(linha, 10).Value = pesquisa Or Cells(linha, 11).Value = pesquisa Or Cells(linha, 12).Value = pesquisa Then TId = .Cells(linha, 2).Value TNome = .Cells(linha, 3).Value TNif = .Cells(linha, 4).Value TMorada = .Cells(linha, 5).Value TPostal = .Cells(linha, 6).Value TLocal = .Cells(linha, 7).Value TNasc = .Cells(linha, 8).Value TCivil = .Cells(linha, 9).Value TProf = .Cells(linha, 10).Value TContato = .Cells(linha, 11).Value TMail = .Cells(linha, 12).Value Exit Sub End If Loop Until .Cells(linha, 2).Value = "" MsgBox "Não Encontrado!", vbInformation, "PESQUISA" End With Exit Sub Erro: MsgBox "Erro!", vbCritical, "ERRO" End Sub Como posso fazer para esta pesquisa não ser sensível a maiúsculas e acentos? Obrigado
  3. Boas Um problema complexo para o meu nivel de conhecimento Fotografia do formulário e folha de excel para ajudar a compreensão Eu introduzo valores na caixa de texto 252, 253 , 255, 256 and 267 e elas retornam valores na folha4.range(a2:e2) depois click no commandbutton8 e tenho uma macro que armazena os valores na folha5.$a:$e 1- como configuro a textbox 253,255,256 e 257 para ter valores de moeda 2- como fazer para que os valores dessas textbox que estão a ser mostrados sejam apagados apos carregar no commandbutton8 apos terem sido armazenados na folha5 Private Sub TextBox252_Change() Folha4.Range("a2").Value = TextBox252 End Sub Private Sub TextBox253_Change() Folha4.Range("b2").Value = TextBox253 End Sub Private Sub TextBox255_Change() Folha4.Range("c2").Value = TextBox255 End Sub Private Sub TextBox256_Change() Folha4.Range("d2").Value = TextBox256 End Sub Private Sub TextBox257_Change() Folha4.Range("e2").Value = TextBox257 End Sub Private Sub TextBox258_Change() Folha5.Range("h2").Value = TextBox258 End Sub Private Sub CommandButton8_Click() Call grava End Sub 3- a Combobox1 está a mostrar os valores armazenados na folha5 quando clico em commandbutton8 mas apenas os últimos valores antes de carregar o formulário, como fazer para ele mostrar os valores recentemente inseridos quando clico no button8 4- Quando clico commandbutton9 queria que agarra-se nos valores que selecionei na combobox1 e os ponha na folha5.range(h2:L2) que retorna os valores na textbox262, 261 , 260, 259 Private Sub ComboBox1_Change() End Sub Private Sub CommandButton9_Click() Me.TextBox262.Text = Folha5.Range("i3").Text Me.TextBox260.Text = Folha5.Range("j3").Text Me.TextBox261.Text = Folha5.Range("k3").Text Me.TextBox259.Text = Folha5.Range("l3").Text End Sub Outra questão, é possivel por o formulário a maximizar ou a fazer scroll? como? visto que em monitores com menos resolução não aparece todo? Obrigado antecipadamente desculpem a newbice
  4. Private Sub TextBox1_change() Folha2.Range("K5").Value = TextBox1 End Sub Private Sub TextBox10_Change() If CheckBox1 = True Then UserForm1.TextBox10 = Folha2.Range(L5).Value Else UserForm1.TextBox10 = Folha2.Range(P5).Value End If End Sub Boas, estou a iniciar me a programar alguns formularios em vba... mas... percebo muito pouco disto.... lol desculpem a franqueza. tenho uma text box onde insiro um valor (textbox1) e ao inserir o valor nessa text box e, eu queria que foste mostrada na text box 10 um valor de uma célula e que não desse para alterar. Grato pela atenção dispensada Tiago Duarte
  5. Boa tarde. Será que me podem ajudar nesta questão? Tenho um listbox a selecionar o Listindex e a exibir a imagem do ficheiro correspondente de acordo com a variável LB1 de um ciclo For ... Next. Apesar de o ciclo incluir a linha de código Me.ListBox2.Selected(LB1) = True o Listbox perde aleatoriamente a seleção e só volta a exibir a ultima linha do ciclo. Sabem dizer-me se há forma de evitar que o Listbox perca a seleção? Grato.
  6. Boa noite. Será que me podem ajudar nesta questão? Tenho um listbox a selecionar o Listindex e a exibir a imagem do ficheiro correspondente de acordo com a variável LB1 de um ciclo For ... Next. Apesar de o ciclo incluir a linha de código Me.ListBox2.Selected(LB1) = True o Listbox perde aleatoriamente a seleção e só volta a exibir a ultima linha do ciclo. Sabem dizer-me se há forma de evitar que o Listbox perca a seleção? Grato.
  7. Boas, estou com um problema para o qual não encontro solução. Tenho um formulário com 3 botões (FormMenu) que quando carrego num deles (por exemplo Consultar/Alterar) executa o seguinte código: Private Sub CmdBtConsultarAlterar_Click() VarTipoMovimento = 3 Me.Hide FormMenuConsulta.Show End Sub Todos os botões executam esta rotina, apenas muda a VarTipoMovimento para 1 ou para 4 conforme o botão carregado for Instaurar ou Movimentar O Formulário FormMenuConsulta.Show tem mais 3 botões para se consultar por nº da base de dados, nº do processo ou por nome, e cada botão corre uma sub-rotina para encontrar a linha no excel que contém os dados. até aqui tudo bem, sempre que carrego num dos botões deste último Formulário eles fazem o pretendido, consultar a folha de excel e retornar a respectiva linha O problema é quando neste formulário faço o Terminate dele ou seja quando carrego na cruz no canto superior direito ele volta-me para o FormMenu correndo o seguinte código: Private Sub UserForm_Terminate() Me.Hide FormMenu.Show End Sub Aqui é que reside o problema, quando no FormMenu faço o click no Botão Movimentar outra vez, indo para o formulário FormMenuConsulta, os seus botões não funcionam (simplesmente não fazem nada, como não tendo neles código) nem o Terminate ficando o programa suspenso. Espero que me tenha feito entender, agradecendo qualquer ajuda.
  8. marlonwg

    ItextSharp

    Alguém trabalha com ITEXTSHARP.dll que trabalha com códigos de barras que possa auxiliar estou com uma duvida ?
  9. Boas, Percebo pouco de programação e acabo muito por usar numa base tentativa/erro mas faltam-me as bases de VBA. Pretendo com base no valor de uma célula esconder ou mostras linhas ocultas e que seja dinâmico....O que acontece no código é que o mesmo só é executado quando abro a janela do VBA. Executei os seguintes pontos: > abri o Visual Basics atravês do Developer; > executei modulo na sheet que pretendo; > código: Private Sub Worksheet_Change(ByVal Target As Range) If "$A$13" = "Not Ok" Then Rows("15:100").Hidden = True Else Rows("15:100").Hidden = False End If End Sub > gravei Sucede que quando mudo a célula A13 o excel não está dinâmico. Alias quando corro o run no próprio VBA pede-me para gravar o nome da Macro e dá entender que crio uma nova... Espero ter sido claro. Obrigado.
  10. Boa tarde, Estou a tentar resolver uma questão e pesso ajuda aos amigos. Gostaria de inserir uma variável dentro de uma pesquisa sql, alguém pode me ajudar? Segue o código Sub Consultar() Dim cn As Object 'Variável de conexão com o Access Dim rs As Object 'Variável de consulta de registro no Access (Record Set) Dim strSql As String 'Variável de código SQL Dim strConnection As String 'Variável de conexão com a aplicação Access Dim sh_capa As Worksheet 'Variável da aba "Capa" Dim i, j As Long Application.DisplayAlerts = False 'Desabilitar os alertas Application.ScreenUpdating = False 'Desabilitar a atualização de tela 'Salvar a planilha ActiveWorkbook.Save 'Configura a variável com a aba "Capa" Set sh_capa = Sheets("Capa") 'Realiza a conexão com a aplicação Access Set cn = CreateObject("ADODB.Connection") 'Código de conexão com o Access desejado strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source = \\CARLOS_GOMES\Users\Public\Excel com BD\Tesouraria IPB\Consultas bd\Aula 4 - Banco de dados.accdb" 'Variável para pesquisa de acordo com ano Dim Ano_Anterior As Double Dim Ano_Atual As Double Ano_Anterior = Plan1.Cells(1, 1).Value Ano_Atual = Plan1.Cells(2, 1).Value 'Código SQL de consulta strSql = "SELECT tbl_vendas.Ano, tbl_vendas.Mês, tbl_vendas.Auxiliar, tbl_vendas.Vendedor, tbl_vendas.[Código 1], tbl_vendas.[Código 2], tbl_vendas.Produto, tbl_vendas.Preço " & _ "FROM tbl_vendas WHERE tbl_vendas.Mês = 12 And tbl_vendas.Ano = Ano_Anterior Or tbl_vendas.Mês = 1 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 2 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 3 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 4 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 5 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 6 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 7 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 8 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 9 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 10 And tbl_vendas.Ano = Ano_Atual or tbl_vendas.Mês = 11 And tbl_vendas.Ano = Ano_Atual;" 'Abre a conexão com o access desejado cn.Open strConnection 'Executa a consulta no access através do código SQL preenchido na variável strSql Set rs = cn.Execute(strSql) 'Copiar para o Excel as informações resultantes da consulta no Access i = 0 If Not (rs.EOF And rs.BOF) Then 'Verifica se existem alguma informação na consulta 'Conta quantas linhas existem no Banco de Dados j = 0 Do While sh_capa.Cells(5 + j, "B").Value <> "" j = j + 1 Loop 'Apaga o banco de dados no excel sh_capa.Range("B5:I" & j + 6).ClearContents rs.MoveFirst Do Until rs.EOF = True 'Roda linha a linha até chegar no Fim do Arquivo (EOF = End of File) 'Colocar o nome dos campos inseridos na tabela do Access sh_capa.Cells(5 + i, "A").Value = rs("Ano") sh_capa.Cells(5 + i, "B").Value = rs("Mês") sh_capa.Cells(5 + i, "C").Value = rs("Auxiliar") sh_capa.Cells(5 + i, "D").Value = rs("Vendedor") sh_capa.Cells(5 + i, "E").Value = rs("Código 1") sh_capa.Cells(5 + i, "F").Value = rs("Código 2") sh_capa.Cells(5 + i, "G").Value = rs("Produto") sh_capa.Cells(5 + i, "H").Value = rs("Preço") 'Pula de linha no Access rs.MoveNext 'Pula de linha no Excel i = i + 1 Loop 'Avisa ao usuário que as informações foram copiadas 'MsgBox i & " Registros copiados com sucesso!" 'Else 'Avisa ao usuário que nada foi copiado 'MsgBox "Nenhum informação disponível!" End If 'Fecha todas as conexões com o Access Set rs = Nothing cn.Close Set cn = Nothing End Sub Muito grato!!!
  11. Olá! Tenho uma planilha de centro de custos aparentemente simples que ao mesmo tempo, dado a quantidade de dados, acaba ficando um pouco complexa sua análise por isso, minha necessidade é criar formas alternativas de somar esses centros de custos em suas mais variadas categorias e subcategorias baseadas no período inicial e período final. Vou explicar como funciona a planilha e qual minha dificuldade e espero poder contar com o apoio da comunidade a encontrar uma fórmula de solução. Exemplo: LINHA 1 estão cadastrados os CÓDIGOS LINHA 2 estão cadastrados as DESCRIÇÕES LINHA 3 estão cadastrados as CATEGORIAS LINHA 4 estão cadastrados as SUB-CATEGORIAS COLUNA A estão cadastrados o PERIODO (Meses) COLUNA CO retorna o TOTAL das RECEITAS dos CENTRO DE CUSTO naquele período COLUNA CQ retorna o TOTAL das DESPESAS dos CENTRO DE CUSTO naquele periodo ANALISANDO CENTRO DE CUSTOS Minha necessidade é uma fórmula (ou codigo VBA) que retorne na célula G440 a SOMATORIA de todas as RECEITAS (Categorias que estão na linha 3) COMUNS (Sub-Categorias que estão na linha 4) lançadas no período inicial C440 e período final D440. Encontrando esse código o mesmo deverá ser aplicado nas linhas e colunas retornando as somas das demais. Feito isso, criarei uma tabela dinâmica que me permita explorar mais as análises dos números. Deixo anexo, a planilha em questão. https://docs.google.com/spreadsheets/d/1DvuSN34rWWV7YrNYg9FueUvt2h4QNQwo/edit?usp=sharing&ouid=109509961137052622741&rtpof=true&sd=true Conto com a ajuda de vocês. Obrigado. Guilherme Santos
  12. Olá. Por favor me ajudem. Preciso mudar os títulos da ListView e não consigo. Após nomear os títulos com .ColumnHeaders.Add Text:="Nome", Width:=100........ (Etc), eu nunca consigo trocar ou excluir esses títulos. Caso eu tente limpar ListView1.Clear.... ao carregar de novo, os títulos SOMAM, ou seja, aumentam em quantidade, um título após o outro. Enfim, como apgar os títulos, modificá-los ou mesmo excluí-los?
  13. tenho uma planilha de vendas que tem um range de linhas (10 à 15), sendo q na linha 16 tenho Totais de algumas colunas. Quero INSERIR e EXCLUIR Linhas em qualquer local deste range sem alterar os Totais. Como fazer isso no VBA?
  14. Boa Tarde Arranjei há cerca de 1 ano, um emprego para melhorar alguma folhas de excel, que faziam a gestão dos recursos humanos, logística, entre outras coisas da empresa. Na altura tudo se baseava em Excel, pelo que, numa situação provisória, foi preciso melhorar os processos já existentes. Neste momento através do VBA, já se consegui incrementar bastantes funções e automatismos, no entanto, tudo ainda se baseia 100% em ficheiros excel colocados no Onedrive. Isto trás imensos problemas ao nível de multi-utilizadores, bem como da estabilidade das bases de dados em folhas de excel. Agora que tudo funciona, mais ou menos bem e de forma estável, foi-me proposto passar para uma segunda fase, usando uma linguagem de programação mais sólida. E aqui deparo com alguns problemas. Programei bastante quando ainda se utilizava programas de bases de dados que hoje já pouco se usa, por isso, vejo-me na necessidade de escolher uma via, que me seja confortável e que não me exija ter de aprender uma ou mais linguagens de raíz. Neste momento estou confortável com a sintaxe VBA e estou a dar uma olhada para o MySQL, que apesar de ser novo para mim, o conetio de base de dados e relacionamentos, não me é novo. Sei que neste momento de crise, não gostaría de perder esta oportunidade de emprego, por isso peço a vossa ajuda para poder saber qual o melhor caminho a tomar, nas seguintes escolhas: 1ª Qual a linguagem e a base de dados que me permita desenvolver um novo programa, com a menor curva de aprendizagem possível e semelhante ao VBA que já utilizo hoje em dia ?. 2º Penso que o ideal sería o PHP que permite utilização online, mas sería uma aprendizagem do zero e bastante dificil nesta altura em que continuo a ter de dar apoio ás folhas de Excel 3º A principal necessidade será a capacidade do programa poder ser usado por mais de 1 utilizador, que podem não estar no mesmo espaço físico. Neste momento a opção foi colocar o ficheiro no Onedrive. 4º É fácil arranjar alguém que possa acompanhar o projecto e que esteja disponível quando for preciso resolver algum problema que não consiga resolver, explicando-me a solução? Obrigado pela ajuda que me possam dar e se for preciso mais algum tipo de informação, o interesse em explicar melhor será meu 🙂
  15. Bom Dia Queria ordenar uma tabela de 3 colounas, através de duas combobox num formulário, em que o utilizador escolhe as opções que deseja, para ordenar por 2 colunas. Quando tento associar uma variável á coluna escolhida pelo utilizador, dá um erro "Referência inválida ou não qualificada". Como poderei fazer que funcione? Obrigado Private Sub Btn_Imprimir_Click() Dim v_Sorting1 As String Dim v_Sorting2 As String If Form_Imprimir.ComboBox1.Value = "Tipo" Then v_Sorting1 = ".ListColumns(1)" If Form_Imprimir.ComboBox1.Value = "Equipamento" Then Set v_Sorting1 = .ListColumns(2) If Form_Imprimir.ComboBox1.Value = "Data Fabrico" Then v_Sorting1 = ".ListColumns(3)" If Form_Imprimir.ComboBox2.Value = "Tipo" Then v_Sorting2 = ".ListColumns(1)" If Form_Imprimir.ComboBox2.Value = "Equipamento" Then v_Sorting2 = ".ListColumns(2)" If Form_Imprimir.ComboBox2.Value = "Data Fabrico" Then Set v_Sorting2 = .ListColumns(3) Folha3.Sort.SortFields.Clear With Folha3.ListObjects(1) .Range.Sort Key1:=v_Sorting1, Key2:=v_Sorting2, Header:=xlYes, Order1:=xlAscending, Order1:=xlAscending End With End Sub
  16. Boas a todos como consigo ultrapassar este erro no excell 2016 obrigado pelas dicas
  17. Através da seleção de um "OptionButton", pretendo criar um caminho para uma pasta, cujo nome é a "Caption" do "OptionButton", para depois serem listados os nomes dos ficheiros e visualizadas as imagens. Os botões de opção estão numerados de 65 a 87 e de acordo com o botão selecionado, fará a leitura dos ficheiros dentro da respetiva pasta. Pretendo qualquer coisa do género: for x=65 to 87 if Me.Controls("OptionButton" & x).value=true then SEARCH_PATH=ThisWorkBook_Path & "\FOTOS\" & (("OptionButton" & x).caption) & "\" iDir=Dir(SEARCH_PATH & ListBox2.text & "-*.jp*g") Desta forma não teria que introduzir código em todos os botões de opção. Qual a sintaxe correta para a variável "SEARCH_PATH? Agradecido.
  18. Ao exibir uma Listbox, preciso que o Mouse selecione uma linha do ListBox. Ao selecionar essa linha do ListBox, queria que um botão ("Apagar") pudesse deletar (ou editar) apenas um Célula da planilha, e não toda a linha. Ou seja, não pretendo deletar toda a linha, apenas deletar (ou editar) uma célula que stá nessa linha. Como faço?
  19. boa tarde forum, á uns tempos tomei o gosto por criar um formulário excel vba , com ajuda da net, la consegui criar um ficheiro com formulário excel vba, mas agora queria me aventurar no ficheiro mas com Base dados Access. ja vi vários filmes, procurei na net e ate ja fiz download de alguns ficheiros com base de dados para tentar adaptar os códigos ao meu formulário, mas estou com erros que me estão a dar dores de cabeça passo a explicar: tinha uma conexão ao banco de dados simples, mas os vários ficheiros que fazia download vinham com outro código para conexão, por isso como não conseguia adaptar os códigos á minha conexão, decidi substituir os códigos de conexão. o estranho é que colando os codigos de um exemplo ou outro ficheiro no meu formulário e trocando nomes das combobox, textboxs, tabelas Banco de dados, dá sempre erro. neste momento diz me sempre que "erro de correspondência entre tipos" Alguém me podia dar umas luzes ou ajuda com o código para perceber o que está mal? os meus códigos sao estes: '################################### 'CLASSE PARA CONEXÃO COM BANCO DE 'DADOS ACCESS , este codigo esta numa CLASS MODULE '################################### Public Conn As New ADODB.Connection 'DECLARAÇÃO DA VARIÁVEL DE CONEXÃO Public Sub Conectar() '***************************' 'VARIÁVEL STRING QUE INDICA ' 'PROVEDOR E LOCAL DO BANCO ' 'DE DADOS ACCESS ' '***************************' Dim nConectar As String nConectar = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ThisWorkbook.Path & "\Base_dados_Mapa_Viaturas.mdb" Conn.ConnectionString = nConectar Conn.Open 'CONEXÃO ABERTA MsgBox "banco aberto" End Sub Public Sub Desconectar() Conn.Close 'CONEXÃO FECHADA End Sub ' e depois fiz um codigo que tentava preencher as comboboxs com dados da tabela, isto colando o codigo do exemplo que tirei da net e adaptando ao meu formulario Sub CarregaDados_Manutencoes() 'Variável de Conexão e Armazenamento Dim Cx As New ClasseConexao Dim Rs As ADODB.Recordset Dim sql, sql2, sql3, sql4, sql5, sql6 As String Dim Rs2 As ADODB.Recordset ' 'Visualizar página 1 ao abrir formulário ' Me.MultiPage1.Value = 0 sql = "SELECT Estado FROM Dados" Set Rs = New ADODB.Recordset Cx.Conectar Rs.Open sql, Cx.Conn 'Loop para carregar combobox ESTADO Do Until Rs.EOF UserForm_Menu.ComboBoxEstado.AddItem Rs!Estado Rs.MoveNext Loop sql2 = "SELECT Matriculas FROM Dados" Set Rs2 = New ADODB.Recordset Rs2.Open sql2, Cx.Conn 'Loop para carregar combobox MATRICULAS Do Until Rs2.EOF UserForm_Menu.ComboBoxMatriculas.AddItem Rs2!Matriculas Rs2.MoveNext Loop 'Liberar Memória Set Rs = Nothing Set Rs = Nothing Cx.Desconectar End Sub o erro é na parte "UserForm_Menu.ComboBoxEstado.AddItem Rs!Estado " aqui é que faz geral o erro de conexão. Alguém consegue dar uma ideia do que se passa? estes sao os codigos originais do formulario que corre correctamente '################################### 'CLASSE PARA CONEXÃO COM BANCO DE 'DADOS ACCESS '################################### Public Conn As New ADODB.Connection 'DECLARAÇÃO DA VARIÁVEL DE CONEXÃO Public Sub Conectar() '***************************' 'VARIÁVEL STRING QUE INDICA ' 'PROVEDOR E LOCAL DO BANCO ' 'DE DADOS ACCESS ' '***************************' Dim nConectar As String nConectar = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ThisWorkbook.Path & "\Base_dados_Mapa_Viaturas.mdb" Conn.ConnectionString = nConectar Conn.Open 'CONEXÃO ABERTA MsgBox "banco aberto" End Sub Public Sub Desconectar() Conn.Close 'CONEXÃO FECHADA MsgBox "banco fechado" End Sub ' 'Variável de Conexão e Armazenamento Dim cx As New ClasseConexao Dim banco As ADODB.Recordset Dim sql, sql2 As String Dim banco2 As ADODB.Recordset 'Visualizar página 1 ao abrir formulário Me.MultiPage1.Value = 0 sql = "SELECT cargo FROM cargo" sql = sql & " ORDER BY cargo" 'Ordenar coluna Set banco = New ADODB.Recordset cx.Conectar banco.Open sql, cx.Conn 'Loop para carregar combobox dos cargos Do While Not banco.EOF Me.ComboBox2.AddItem banco!cargo Me.ComboBox4.AddItem banco!cargo Me.ComboBox5.AddItem banco!cargo Me.ComboBox7.AddItem banco!cargo banco.MoveNext Loop sql2 = "SELECT setor FROM setor" sql2 = sql2 & " ORDER BY setor" Set banco2 = New ADODB.Recordset banco2.Open sql2, cx.Conn 'Loop para carregar combobox dos setores Do While Not banco2.EOF Me.ComboBox1.AddItem banco2!setor Me.ComboBox3.AddItem banco2!setor Me.ComboBox6.AddItem banco2!setor Me.ComboBox8.AddItem banco2!setor banco2.MoveNext Loop 'Liberar Memória Set banco = Nothing Set banco2 = Nothing cx.Desconectar End Sub Fico a aguardar alguma ajuda. Obrigado
  20. Exercício Escreva um algoritmo que leia um valor inicial A e uma razão R e imprima uma sequência em P.G. contendo n termos
  21. Sou estudante de Programação e nunca tinha usado VBA e tenho de entregar um trabalho, mas nunca tive formação nesta linguagem, e estou a ter problemas no programa na parte de Pesquisar registros com filtros, já tentei ao máximo fazer seguindo tutoriais na internet, vídeo aulas e fórum mas está sempre a dar erro e não consigo resolver. Fico muito agradecido se alguém me conseguir ajudar. Link do Programa: https://drive.google.com/file/d/1qBprlBRX8eg8wRoK2_Yy_UZ3pfisrzWj/view?usp=sharing
  22. Bom dia. Estou a desenvolver um programa em Visual Basic 2019 com ligação a uma base de dados MySQL. Em fase de testes a base de dados é local e no código uso a seguinte linha: Public con As New MySqlConnection("server=localhost; userid=root; password=; database=vasco_gil; port=;") Na altura de entregar ao cliente, foi-me pedido para que os dados do servidor não podem ser introduzidos no código (por motivos de segurança), mas sim através de uma opção no ecrâ principal com uma área para definir os parâmetros de servidor, utilizador e password. Alguém pode ajudar-me com uma solução para esta questão? Obrigado. Rui Gomes
  23. Boa tarde, Gostaria de ajuda a obrigar que um utilizador quando preenche uma determinada célula tem que obrigatoriamente preencher outra. Exemplo: Se o utilizador disser que está inscrito tem que obrigatoriamente preencher a célula que corresponde à data de inscrição. Obrigado. Cumps
  24. Olá tenho uma tarefa, de macro em Excel, para resolver que me ocupa a cabeça já há vários dias... Já fiz e refiz , até achei um código nesta plataforma que me auxiliou muito. Porém, estou com um problema em uma estrutura de repetição nesse código. Vou deixar aqui o exercício, bem como a minha tentativa , na esperança que alguém me possa direcionar no caminho, sinto que estou perto mas alguma coisa falha.. //Exercício Fazer uma macro que possa garantir o preenchimento automático de um dado específico na planilha. Esse dado, que será preenchido automaticamente, depende de outros dados específicos do preenchimento da planilha mas que estão correlacionados à ele. //Código feito Private Sub tbx2_Change() 'Dentro do campo anterior, do dado a ser preenchido automaticamente, comecei o código e chamei a macro relacionada que executará o programa principal. If cx1.Value = "Novo" Then 'Ele terá a opção de não ser "novo", por isso tem esse If. If cx2.Value = "PNM" Then 'Ele terá a opção de não ser "PNM", por isso tem esse If. If tbx2.Value = "001" Then 'Ele terá a opção de não ser "PNM", por isso tem esse If. Call Comparacao 'Chamando a macro End If End If End If End Sub //Macro Sub Comparacao() Dim L As Range For Each L In Range("D5:D100") 'D5:D100 será o tamanho da coluna que a estrutura For Each terá que ler If L.Value <> "001A" Then 'Estou com dificuldades para fazer a estrutura If, pois preciso garantir a fidelidade de que não entre novamente no mesmo If 'quando sair e entrar no formulário para novo cadastro, pois não poderá repetir os valores de preenchimento automático (Valores 'para preenchimento automático serão: 001A, 002A, 003A... UserForm1.tbx3.Value = "001A" ElseIf L.Value <> 002A Then UserForm1.tbx3.Value = "002A" ElseIf L.Value <> 003A Then UserForm1.tbx3.Value = "003A" ElseIf L.Value <>"004A" Then UserForm1.tbx3.Value = "004A" Else: UserForm1.tbx3.Value = "001A" End If Exit Sub Next End Sub //Dificuldades encontrada: Toda que entro no formulário para o preenchimento, o dado a ser preenchido automaticamente, é preenchido com valor repetido. Pois como a estrutura de repetição lê as linhas em vazio ela interpretará como valor diferente. Atenciosamente, Ariane. Fico no aguardo, de uma possível ajuda. Obrigada!
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.