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.
Por Wilsonx
#52911
Bons dias!

Estou com um problema que me esta a matar a cabeça, já procurei pela internet mas não encontrei grande coisa para me ajudar.
Só comecei a usar Botões com Código VBA há muito pouco tempo, por isso a minha duvida acho que pode ser facilmente esclarecida por um utilizador mais avançado.

eu criei na planilha2 um botão com um código simples para remover linhas duplicadas, ok esta a funcionar bem e a fazer aquilo que pretendo.
Agora queria ser capaz de usar o mesmo botão na planilha1, que fizesse a mesma coisa mas na planilha2.

O que me dava mais jeito era um macro que fosse lá clicasse o botão e fizesse outras coisas mais e retornasse a planilha1, coisa que já tentei, mas o Macro não me activa o outro botão da planilha2...

Segunda coisa que já tentei foi pegar no código do botão, criar um botão igual com o mesmo código na planilha1 a tentar chamar a planilha2 só que não estou a conseguir.

"Dim W As Worksheet

Dim A, B As Integer
Dim FOUND As String
Dim SEARCH As String

Set W = Planilha2

W.Select
....."

Alguém me consegue ajudar aqui? o que me dava mais jeito era mesmo um macro, pois assim era só um botão para tudo o que preciso, só que não sei se é possível.
Editado pela última vez por Wilsonx em 16 Mar 2020 às 12:27, em um total de 2 vezes.
#52912
Código: Selecionar todos
Sub teste1()
 Dim W As Worksheet
  Set W = Planilha2
  With W
   'seu código aqui, exemplo abaixo
   .Range("A1").Value = "jacaré"
  End With
End Sub
ou
Código: Selecionar todos
Sub teste2()
  With Planilha2
   'seu código aqui, exemplo abaixo
   .Range("A1").Value = "jacaré"
  End With
End Sub
Se você não conseguir sugiro que você disponibilize uma amostra do seu arquivo Excel e explique com exatidão o que deseja que o código faça.

dicas
1. não utilize Select nos seus códigos ~~~> (W.Select)
2. Dim A, B As Integer ~~~> se a sua intenção é declarar A como Integer, então o correto é ~~~> Dim A as Integer, B As Integer
#52915
Código: Selecionar todos
Private Sub REMOVER_DUPLICADOS_Click()

Dim W As Worksheet

Dim A As Integer, B As Integer
Dim FOUND As String
Dim SEARCH As String

Set W = Planilha2

With W

For A = 1 To 1000

If Cells(A, 1).Value = "" Then Exit For

SEARCH = Cells(A, 1).Value

For B = A + 1 To 1000
    If Cells(B, 1).Value = "" Then Exit For
        FOUND = Cells(B, 1).Value
    If SEARCH = FOUND Then
        Cells(B, 1).EntireRow.Delete
        B = B - 1
    End If
    Next B
Next A
End With
End Sub
" Tentei alterar isto,
"Set W = Planilha1" "
ok, isto que disse aqui deve ser do sono não faz sentido algum :P -

Já segui as tuas dicas e alterei o código, está assim agora.
tentei as tuas duas opçoes para conseguir usar o código a partir da Planilha1, mas não funcionou.
O que eu queria basicamente era um Shortcut na Planilha1 para o Botão com esse codigo que esta na Planilha2 .
#52916
Código: Selecionar todos
Sub Macro1()
'
' Macro1 Macro
'

'
    Sheets("Planilha2").Select
     !!AQUI!!
    Range("AM7").Select
    Sheets("Planilha1").Select
    Range("B4:F4").Select
    ActiveWindow.ScrollColumn = 1
    Selection.AutoFill Destination:=Range("B4:F101"), Type:=xlFillDefault
    Range("B4:F101").Select
    ActiveWindow.SmallScroll Down:=-81
End Sub
será que não da para colocar nesta macro por exemplo no "!!AQUI!!"
qualquer coisa para fazer correr o código, ou para simplesmente clicar no botão(vai dar ao mesmo)?
#52917
As referências devem conter o objeto planilha. Por exemplo neste comando ~~~> If Cells(A, 1).Value = "" Then Exit For, deveria ser If Planilha2.Cells(A, 1).Value = "" Then Exit For, ou utilizando a variável, If W.Cells(A, 1).Value = "" Then Exit For.
No entanto, ao utilizar o With X, a referência poderá ser retirada, ficando assim ~~~> If .Cells(A, 1).Value = "" Then Exit For. Note que o ponto, destacado em vermelho, deve permanecer. Verifique isso nos exemplos que coloquei antes.

Em relação à operação que você está tentando executar, que é excluir registros duplicados na coluna A, ela pode ser efetuada de maneira mais simples, assim: selecione a coluna A / menu Dados / Remover Duplicatas. Ser essa for uma operação repetitiva você poderá gravar uma macro.
Por Wilsonx
#52918
Obrigadíssimo Osvaldo, já esta a funcionar era o que me faltava ;) ;)

Não gostava muito da ideia de remover duplicados dessa forma, pois na Planilha2 estou a trabalhar com uma tabela, acabava sempre por me reduzir o tamanho dela ao numero de linhas que sobravam, tinha de andar constantemente a aumentar-lhe o tamanho...
Mas ja se fez luz :mrgreen:
Mais uma vez obrigado Osvaldo!!
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