Ir para conteúdo
Fórum Script Brasil

João.Neto

Membros
  • Total de itens

    139
  • Registro em

  • Última visita

Tudo que João.Neto postou

  1. João.Neto

    Duvida selection.replace

    Da forma que você está tentando fazer não é possível. Segue sugestão: Sub Teste_Jabuticaba() Dim rng As Range For Each rng In Columns("D:D").Rows If rng.Cells(1, 1) = "0" Then rng.Cells(1, 1) = rng.Cells(1, 1).Offset(0, -2) End If Next rng End Sub
  2. João.Neto

    VBA

    Você tem que usar matriz para mais de um destinatário: Sub Macro1() Dim destinatarios(4) As Variant destinatarios(0) = "Fulano da Silva" destinatarios(1) = "Fulano da Couve" destinatarios(2) = "Fulano da Teixeira" destinatarios(3) = "Fulano da Etc" destinatarios(4) = "Fulano da qualquer" ActiveWorkbook.SendMail Recipients:=destinatarios End Sub
  3. João.Neto

    Compactar Access pelo VBA

    Sub CompactDb() Dim jetEng As Object 'JRO.JetEngine Dim strCompactFrom As String Dim strCompactTo As String Dim strPath As String strPath = ThisWorkbook.Path & "\" strCompactFrom = "Database1.mdb" strCompactTo = "Database1Comp.mdb" On Error GoTo HandleErr Set jetEng = CreateObject("JRO.JetEngine") '= New JRO.JetEngine jetEng.CompactDatabase "Data Source=" & strPath & strCompactFrom & ";", "Data Source=" & strPath & strCompactTo & ";" Kill strPath & strCompactFrom Name strPath & strCompactTo As strPath & strCompactFrom ExitHere: Set jetEng = Nothing MsgBox "Compacting completed." Exit Sub HandleErr: MsgBox Err.Number & ": " & Err.Description Resume ExitHere End Sub
  4. 1. Declare duas variáveis do tipo Date: uma para a Data Inicial e outra para a Data Final. 2. Atribua as respectivas datas dos DtPicker em cada variável: o DtPicker que representa a data inicial na variável de Data Inicial e o DtPicker que representa a data final da variável de Data Final. 3. Dentro da sua estrutura de repetição, você comparará as datas da seguinte forma: Do While Plan1.Cells(numlinha, 3) <> "" If Plan1.Cells(numlinha, 3) = Cbotipo.Text Then If Plan1.Cells(numlinha, 1) >= DataInicial And Plan1.Cells(numlinha, 1) <= DataFinal Then Plan3.Cells(numlinha2, 1) = Plan1.Cells(numlinha, 1) Plan3.Cells(numlinha2, 2) = Plan1.Cells(numlinha, 2) Plan3.Cells(numlinha2, 3) = Plan1.Cells(numlinha, 3) Plan3.Cells(numlinha2, 4) = Plan1.Cells(numlinha, 4) Plan3.Cells(numlinha2, 5) = Plan1.Cells(numlinha, 5) Plan3.Cells(numlinha2, 6) = Plan1.Cells(numlinha, 6) Plan3.Cells(numlinha2, 7) = Plan1.Cells(numlinha, 7) numlinha2 = numlinha2 + 1 End If End If End If numlinha = numlinha + 1 Loop :ninja:
  5. Qual é o problema no seu código? O que você quer melhorar?
  6. Dentro do código do WorkSheet (Plan), coloque este código: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = ThisWorkbook.Worksheets(1).Range("A1").Address Then Select Case Target.Value Case "0" Call Macro0 Case "1" Call Macro1 End Select End If End Sub
  7. Para proteger a base você pode usar: ThisWorkbook.Worksheets("Base").Visible = xlVeryHidden Ela ficará oculta e o usuário não conseguirá desocultá-la pelo aplicativo Excel, mas somente por código VBA.
  8. João.Neto

    VBA Dúvidas

    Tenta desta forma: Dim e As Object Dim pasta As Object Set e = CreateObject("Excel.Application") Set pasta = e.Workbooks.Open("C:\Anexo.xlsm") e.Visible = True e.Run "'Anexo.xlsm'!mod1.Testando", Revitalizacoes, SE
  9. João.Neto

    VBA Dúvidas

    Poste seu código, por favor, para eu dar uma olhada.
  10. :D Private Sub Workbook_Open() Plan1.ComboBox1.AddItem ThisWorkbook.Worksheets(2).Name Plan1.ComboBox2.AddItem ThisWorkbook.Worksheets(3).Name End Sub
  11. http://www.macoratti.net/vb_arrtb.htm http://www.macoratti.net/vb_matrz.htm
  12. Posta o código que você fez para eu ver, por favor.
  13. Para alterar o nome do ComboBox: 1) Na Barra de Ferramentas "Caixa de ferram. de controle" clique sobre o botão "Modo Design" (desenho de um lápis com esquadro). 2) Clique com o botão direito sobre o ComboBox -> Propriedades 3) No item Name, digite o nome desejado. Segundo, para popular os dois comboboxes altere a rotina que te passei acima: Private Sub Workbook_Open() ComboBox1.AddItem ThisWorkbook.Worksheets(2).Name ComboBox1.AddItem ThisWorkbook.Worksheets(3).Name ComboBox2.AddItem ThisWorkbook.Worksheets(4).Name ComboBox2.AddItem ThisWorkbook.Worksheets(5).Name End Sub Resposta: Sim, você pode substituir se quiser ou deixar apenas o número que ele pega o nome da planilha (ou plano) de acordo com a sequência em que ela está na pasta de trabalho. Terceiro, programe os ComboBoxes: 1- Duplo clique sobre o ComboBox, ou Alt + F11 e vá até o Plan1 na janela de projetos do Visual Basic Editor; 2- Digite a seguinte rotina: Private Sub ComboBox1_Change() If Not Me.ComboBox1.ListIndex = -1 Then ThisWorkbook.Worksheets(ComboBox1.Text).Activate End If End Sub Private Sub ComboBox2_Change() If Not Me.ComboBox2.ListIndex = -1 Then ThisWorkbook.Worksheets(ComboBox2.Text).Activate End If End Sub
  14. Acredito que essa rotina execute o mesmo que você está tentando: Public Sub EnterDataInWorksheet() 'copia os dados do formulário para a planilha Dim r As Range Dim r1 As Range Worksheets(1).Range("A65536").End(xlUp).Offset(1,0) = txnome.Value Worksheets(1).Range("A65536").End(xlUp).Offset(0,1) = txcpf.Value Worksheets(1).Range("A65536").End(xlUp).Offset(0,2) = txtelefone.Value Worksheets(1).Range("A65536").End(xlUp).Offset(0,3) = txcelular.Value Worksheets(1).Range("A65536").End(xlUp).Offset(0,4) = txendereco.Value Worksheets(1).Range("A65536").End(xlUp).Offset(0,5) = txcidade.Value Worksheets(1).Range("A65536").End(xlUp).Offset(0,6) = cmbestado.Value Worksheets(1).Range("A65536").End(xlUp).Offset(0,7) = txcep.Value End Sub
  15. João.Neto

    VBA Dúvidas

    Use o método do Excel Application.Run "'planilha.xls!'nome_da_macro", arg1, arg2 Onde nome_da_macro deve ser uma rotina que espera 2 argumentos (você pode colocar mais) e nesses argumentos você passa o valor de sua variável do Project. Exemplo: Código no Excel: Sub nome_da_macro(byval var1, byval var2) End Sub Código no Project Application.Run "'planilha.xls!'nome_da_macro", varProject1, varProjectN Agora, confirme, por favor, se o Application.Run é do próprio Excel (se for terá de criar uma instância nele) ou se o Project tem também.
  16. Matriz que eu falo é de uma variável, um array. Algo que é carregado na memória e não físico como uma planilha mesmo.
  17. Use o próprio recurso nativo do Excel: Selecionar o Range de dados a serem validados, no caso a linha 10 inteira. Dados -> Validação de Dados Em Configurações, no ComboBox Permitir, selecionar a opção Personalizado. Em Configurações, no ComboBox Fórmula, usar a seguinte Fórmula =CONT.SE($10:$10;A10)=1 Depois, personalize as mensagens de erro na guia Alerta de erro. Este exemplo serve para o Excel 2007. Ver referência de validação de dados para as demais versões.
  18. Cara, uma sugestão e será beeeem trabalhoso: Ao clicar em Adicionar, armazene todos os valores já existentes no ListBox2 em uma matriz com 8 colunas e adicione o novo item do Listbox1 à esta matriz também. Depois carregue novamente o ListBox2 através da propriedade List. Dim res(0,7) '0 linhas e 8 colunas, depois você cria uma rotina para ele ficar redimensionando as linhas desta matriz 'Para isso será usado o Redim Preserve res(nova_quantidade_de_linhas, nova_quantidade_de_colunas) 'No caso as colunas serão sempre 7, que equivalem a 8 colunas. Depois preenche os dados da matriz com os valores que estão no Listbox2. Ai você usa uma estrutura de repetição. Adiciona o novo item do ListBox1 nesta matriz e preenche o ListBox2 novamente. ListBox2.List = res
  19. Crie mais um ComboBox substitua a rotina anterior que populava por esta: ComboBox1.AddItem ThisWorkbook.Worksheets(2).Name ComboBox1.AddItem ThisWorkbook.Worksheets(3).Name ComboBox2.AddItem ThisWorkbook.Worksheets(4).Name ComboBox2.AddItem ThisWorkbook.Worksheets(5).Name A programação de clicar e ele exibir a Worksheet você segue o exemplo dado anteriormente.
  20. Pode ser usado também: cmb_mat_situ.RowSource = ThisWorkbook.Worksheets("Plan3").Range("A1").CurrentRegion.Resize( _ ThisWorkbook.Worksheets("Plan3").Range("A1").CurrentRegion.Rows.Count, 1).Address(External:=True)
  21. André, O controle de você está usando em sua planilha é um controle de formulário e não um controle ActiveX. Primeiro, adicione o controle ActiveX: 1- Vá em Exibir -> Barra de Ferramentas -> Caixa de ferram. de controle; 2- Selecione o controle Caixa de Combinação (Combo Box) e arraste para a sua planilha. Segundo, popule o ComboBox: 1- Digite Alt + F11 e o Visual Basic Editor será aberto; 2- Clique em EstaPasta_de_trabalho, na janela de projetos do Visual Basic Editor; 3- Digite a seguinte rotina: Private Sub Workbook_Open() Dim wks As Worksheet For Each wks In ThisWorkbook.Worksheets If Not wks.Name = "Plan1" Then Plan1.ComboBox1.AddItem wks.Name End If Next wks End Sub Terceiro, programe o ComboBox: 1- Duplo clique sobre o ComboBox, ou Alt + F11 e vá até o Plan1 na janela de projetos do Visual Basic Editor; 2- Digite a seguinte rotina: Private Sub ComboBox1_Change() If Not Me.ComboBox1.ListIndex = -1 Then ThisWorkbook.Worksheets(ComboBox1.Text).Activate End If End Sub
×
×
  • Criar Novo...