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.
#41822
Ola Pessoal, estou com um erro que não consigo resolver.

Tenho uma lista drop down (nomes) que vem de uma lista dinâmica de outra folha.
Esta lista dinamica tem um nome e é criada a partir de um filtro avancado e ordenada alfabeticamente.

Ate aqui tudo bem a lista funciona na segunda tabela.
Mas quero associar o comando procurar "Find" para procurar nessa lista dinamica o "nome"
Caso encontre ele ja fica registado.
caso o nome nao esteja na lista ele adiciona a lista..

Segue em anexo um bocado do código vba:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim RequestRng, FoundRequest As Range
Dim Resp As Integer
Dim ItemRow, ItemCol, FirstAvailRow As Long


If Not Intersect(Target, Range("D4:S4")) Is Nothing And Range("B4").Value = False And Range("B5").Value = False Then
ItemRow = Range("B3").Value
ItemCol = Cells(11, Target.Column).Value
Cells(ItemRow, ItemCol).Value = Target.Value
End If

FirstAvailRow = Folha4.Range("F9999").End(xlUp).Row + 1 'Primeira linha disponivel
If Not Intersect(Target, Folha9.Range("I4")) Is Nothing And Folha9.Range("B5").Value = False Then
If Target.Value <> Empty Then
On Error Resume Next 'Previne erro quando nao encontra a lista Request
Set RequestRng = Folha4.Range("Request")
Set FoundRequest = RequestList.Find(What:=Target.Value, LookAt:=xlWhole, LookIn:=xlValues)
If FoundRequest Is Nothing _
Then Resp = MsgBox(Target.Value & " Is Not Currently a Request." & vbCrLf & "Would you like to add it now?", vbYesNo, "Request Not Found")
If Resp = vbYes Then Folha4.Range("F" & FirstAvailRow).Value = Target.Value
End If
GetRequest
End If
End Sub

Não consigo saber se o foundrequest não esta na lista Dropdown
Na tabela 9 ao mudar para um dos elementos da lista ele muda.
mas se escrevo um que nao esteja na lista da o seguinte erro:
Este valor não corresponde às restrições de validação de dados definidas para esta célula.
#41827
Sugestão: disponibilize uma amostra do seu arquivo Excel com o código completo instalado.
Informe na própria planilha em qual intervalo está a lista dinâmica que serve de base para a Validação, informe o intervalo em que está aplicada a Validação e informe onde você está tentando inserir o novo nome.
#41852
Boa noite, desde ja agradeço pela resposta, segue em anexo o ficheiro de excell com as tabelas e codigos.

É a primeira vez que estou entrar neste mundo do VBA, tenho algumas ideias que estou atentar por em pratica.
Pelo que este projecto ainda está no inicio. :)
Obrigado

Atentamente
Jaime Rodrigues
Você não está autorizado a ver ou baixar esse anexo.
#41853
Não encontrei nas planilhas do seu arquivo qualquer esclarecimento quanto às dúvidas que coloquei na minha mensagem anterior. :?:
#41871
jaimerodrigues escreveu: Folha "Embarcaciones" célula i4 (lista dropdown) ao inserir um nome que não esteja na lista coluna F deveria perguntar se o quero adicionar..

... mas se escrevo um que nao esteja na lista da o seguinte erro:
Este valor não corresponde às restrições de validação de dados definidas para esta célula.
Para fazer o que você quer, ao invés de escrever um novo nome diretamente em I4 faça um Copiar/Colar Valores, assim você poderá burlar a Validação aplicada em I4.

Escreva o novo nome em uma célula vazia, por exemplo em B15 / com B15 selecionada ~~~> Copiar / selecione I4 ~~~> Colar Valores.

Assim os códigos já existentes irão acrescentar o novo nome à lista que serve de base para a Validação de I4.
#41877
Olá Osvaldo, desde ja obrigado pela sua resposta.
Por acaso não tinha sequer tentado essa hipotese.
Experimentei e desse jeito funciona. Mas a ideia não seria essa. porque tenho de andar a colar e copiar. Quero tornar tudo automático de modo a que ao clicar em nova tarefa ele introduza os dados principais e eu so tenha de completar o vazio.

Existe alguma forma de contornar a validação? tera alguma coisa a ver com a ordem de execução da macro.?
Pois se eu introduzir um nome na coluna F da folha Listas. Só me aparece em I4 depois de por exemplo ter executado um outro nome da lista e alterado os valores na linha correspondente. Espero ter-me explicado bem.
#41878
jaimerodrigues escreveu:Quero tornar tudo automático ...
Veja uma ideia abaixo.

Existe alguma forma de contornar a validação?
Eu só conheço via copiar/colar.
Já que obrigatoriamente o novo nome precisará ser inserido em alguma célula, uma ideia seria inseri-lo em uma célula vazia da planilha Embarcaciones, por exemplo em A14, e via um código Worksheet_Change capturar o nome inserido, acrescentá-lo nas listas das colunas F e H da planilha Listas, ordenar a lista resultante em H e por último inseri-lo em I4 e limpar A14.
#41879
Obrigado Malta, Já descobri. :)

Apaguei sem querer o código que tinha no woorkbook geral, quando queria utilizar a tecla Tab ou enter para saltar entre as celulas que defini.

PS: entretanto alterei o nome da folha para embarcaciones

Option Explicit

Private Sub Workbook_Activate()
If ActiveSheet.Name = "Embarcaciones" Then SetOnkey (True)
End Sub

Private Sub Workbook_Deactivate()
SetOnkey (False)
End Sub

Private Sub Workbook_Open()

End Sub
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