Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
BernardorValle

Atribuir valor em macro por Listbox

Recommended Posts

Sub aGerarListaLojas()


'Rotina para agilizar macro

Application.Calculation = xlCalculationManual 'Tornar calculos manuais

Application.ScreenUpdating = False 'Desabilita atualização de tela

Application.DisplayStatusBar = False 'Desabilita status bar

'Rotina de Limpar lista de loja e Banco de dados

 Worksheets("LISTA DE LOJAS").Activate
    range("A3").Activate
    range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents

 Worksheets("BANCO DE DADOS").Activate
    range("J3:K3").Select
    range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents
    range("Tabela6").Activate
    Selection.ClearContents

    
    
    
'Rotina de Abrir Banco de Dados Viggicom, realizar filtros copiar e colar no Mapa

'1 Rotina - Lista de Lojas

'1a - Abrir Banco de dados

ArqparAbrir = Application.GetOpenFilename("Arquivo do Excel (*.xlsx),*xlsx*", _
                title:="Abrir  Banco de Dados Viggicon Atualizado", _
                MultiSelect:=True)
                
    If Not IsArray(ArqparAbrir) Then

        If ArqparAbrir = "" Or ArqparAbrir = False Then


    MsgBox "Processo Abortado, Nenhum arquivo selecionado", vbOKOnly, "Processo Cancelado"

        Exit Sub

        End If

    End If
    
Set w = Sheets("BANCO DE DADOS")
    
For A = LBound(ArqparAbrir) To UBound(ArqparAbrir)

    NomeArquivo = ArqparAbrir(A)

    Application.Workbooks.Open (NomeArquivo)



'Filtrar tabela lojaxABc de acordo com código CP

lastrow2 = range("F" & Rows.Count).End(xlUp).Row

'Inserir código CP - verificando se codigo existe ou nao

  Do
    codcp = Application.InputBox("Insira codigo da CP")
    'Checar se valor inserido esta correto
        If WorksheetFunction.CountIf(range("F1:F" & lastrow2), codcp) = 0 Or codcp = vbNullString Or codcp = False Then
            MsgBox "Codigo CP Invalido"
        End If
  Loop While WorksheetFunction.CountIf(range("F1:F" & lastrow2), codcp) = 0 Or codcp = vbNullString Or codcp = False




 ActiveSheet.ListObjects("Tabela6").range.AutoFilter Field:=6, Criteria1:="=" & codcp, Operator:=xlAnd
 



'Rotina de verificar se o codigo cp foi inserido é valido ainda não funciona, procurando *******************8



    range("A2:G2").Select
    range(Selection, Selection.End(xlDown)).Select
    Selection.Copy

'copiar somente a coluna c até g
    Selection.Copy Destination:=w.range("B2")
    ActiveWorkbook.Close savechanges:=False

Next A

 Worksheets("BANCO DE DADOS").range("B2:C2").Select
    range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    range("J3").Activate
    
    lastrow3 = range("A" & Rows.Count).End(xlUp).Row
    
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveSheet.range("$J$2:$K$" & lastrow3).RemoveDuplicates Columns:=Array(1, 2), Header _
        :=xlYes
   range("J3").Select
    range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    
Worksheets("LISTA DE LOJAS").Select
     range("A3").Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
Worksheets("Sumário Mapa de Estoque").Activate

MsgBox "Atualizando Cálculos"

'Rotina para restaurar configuraçoes

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True

MsgBox "Lista de Lojas Atualizada"

End Sub



Olá, estou otimizando uma rotina de um relatório e me deparei com um problema

 

Em uma das macros da minha ferramenta, ela gera uma lista de lojas a partir de outra planilha (que seria a base de dados)

 

Para gerar essa lista, coloquei um inputbox - para que quem esteja gerando o relatório, digite o código da loja - daí a macro realiza as demais rotinas de filtro e formatação.

 

Eu gostaria de saber se consigo, invés de solicitar o código, abrir uma listbox contendo os códigos e descrição. Dai quando selecionada a loja (pelo formulário que apareceria 2 colunas contendo códigos e nomes das lojas), atribuiria o valor selecionado á variável que a macro utiliza como parâmetro para executar as demais rotinas.

 

O problema é que são 2 planilhas - Ferramenta (onde estão todas as macros e cálculos) e outra que é um banco de dados (que não quero disponibilizar para todos).

 

Qual a melhor maneira de fazer isso?

 

Segue a macro onde quero alterar isso (sou novo com VBA então provavelmente as rotinas não estão 100% otimizadas) - onde aparece codcp = inputbox

<

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×