Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#21121
Função para carregar dados de outra planilha em uma célula específica

Olá queridos, tudo bem?

Eu tenho a seguinte planilha:

ID | GRUPO | TIPO | DESCRIÇÃO | VALOR

GRUPO: Despesa, Dízimos, Ofertas (pega de planilha auxiliar) - É preenchido automaticamente quando se escolhe o TIPO
TIPO: Despesa $nome, Dízimo $nome, Oferta $nome (pega de planilha auxiliar) É uma lista suspensa com várias opções de dízimos, oferta, despesa.
VALOR: A ser preenchido

Eu gostaria de que quando em GRUPO for dízimo, abrir uma janela ou algo do tipo para selecionar os dados dessa planilha externa - Relação de Membros para ser preenchida na coluna DESCRIÇÃO.

Quem sabe não poderia abrir tipo uma popup, com uma lista suspensa puxando os dados da outra planilha ou um campo de texto para digitar o nome avulso :)

OBS: Que possibilitasse também de colocar manualmente, caso não seja alguém na lista da outra planilha.

Agradeço a todos que estão ajudando.
#21138
Bom dia!!

Já que temos que adivinhar como está seu arquivo...
Eu presumo que não vai ter nenhum problema para adaptar.

Crie um Userform, insira o código
Código: Selecionar todos
Private Sub UserForm_Initialize()
Dim ListItems As Variant, i As Integer
Dim SourceWB As Workbook
Dim LastRow As Long
 
    With Me.ListBox1
        .Clear
        Application.ScreenUpdating = False
        Set SourceWB = Workbooks.Open("C:\Users\alexandreVBA\Downloads\OrgqnizarRF_Full.xlsx", False, True)
        LastRow = SourceWB.Worksheets(1).Range("B" & Rows.Count).End(xlUp).Row
        Me.ListBox1.List = SourceWB.Worksheets(1).Range("B2:B" & LastRow).Value
        SourceWB.Close
        Application.ScreenUpdating = True
    End With
    
End Sub
Crie um botão e insira o código
Código: Selecionar todos
Private Sub CommandButton1_Click()
Dim i As Long
Dim ary
    
    ReDim ary(0 To 0)
    With Me.ListBox1
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                ReDim Preserve ary(1 To UBound(ary) + 1)
                ary(UBound(ary)) = .List(i)
            End If
        Next
    End With
    Cells(ActiveSheet.Rows.Count, "B").End(xlUp).Offset(1).Resize(UBound(ary)).Value = Application.Transpose(ary)
End Sub
Dentro do módulo de planilha, insira o código
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B2:B10")) Is Nothing Then
    'Cancel = True
        If Target.Value = "dízimos" Then
            UserForm1.Show
        End If
    End If
End Sub
Att
Você não está autorizado a ver ou baixar esse anexo.
#21205
Olá Alexandre, segue em anexo o modelo da minha planilha.
Me desculpe por não ter enviado.
Você não está autorizado a ver ou baixar esse anexo.
#21223
alexandrevba escreveu:Bom dia!!!

Você tentou adaptar as rotinas do meu post em seu arquivo?

Att
Olá, eu fiz como você orientou,
porém onde coloco nessa planilha que já tem esse código abaixo:
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
If Intersect(Target, Range("CAIXATIPOS")).Value = "" Then
Application.Intersect(Target.EntireRow, Range("DATAREGISTRO")).Value = ""
Exit Sub
Else
Application.Intersect(Target.EntireRow, Range("DATAREGISTRO")).Value = Format(Now(), "dd/mm/yyyy")
End If
End Sub
#21225
Aqui eu coloquei o range que vai aparecer as entradas DÍZIMOS que está nomeada como GRUPOS
Código: Selecionar todos
LastRow = SourceWB.Worksheets(1).Range("GRUPOS" & Rows.Count).End(xlUp).Row
Essa aqui eu coloco o que?
Código: Selecionar todos
Me.ListBox1.List = SourceWB.Worksheets(1).Range("B2:B" & LastRow).Value
Essa eu coloquei GRUPOS = INTERVALO NOMEADO ONDE VAI APARECER A PALAVRA DÍZIMO
Código: Selecionar todos
Cells(ActiveSheet.Rows.Count, "GRUPOS").End(xlUp).Offset(1).Resize(UBound(ary)).Value = Application.Transpose(ary)
#21351
Olá, eu descobri o erro que não está funcionando, é que a célula que vai receber o nome dízimo, ela é uma função:
Código: Selecionar todos
=SEERRO(PROCV(D11;CONFIG!D:E;2;FALSO);"")
Ele pesquisa e apresenta a informação. Quando eu apago essa fórmula e coloco o nome dízimos funciona.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord