Excel VBA - Copiar valores de célula * sem * validação de dados

0

Estou tendo problemas com a cópia de células de uma planilha para outra no Excel VBA. A Folha de Origem contém um registro de cliente individual armazenado em uma única linha. A Folha de Destino é uma coleção de tais registros, empilhada linha por linha. É importante mantê-los separados para confidencialidade.

Eu criei uma macro para copiar a Origem na pasta de trabalho de destino, copiar as células da origem e colá-las na primeira linha vazia da planilha de destino. Como os dois contêm as mesmas informações, apliquei a mesma validação de dados às células correspondentes em cada planilha, principalmente listas suspensas.

No entanto, as origens e as folhas de destino são originadas em diferentes pastas de trabalho. Quando copio as células da origem para o destino, a validação de dados é fornecida. As células coladas no Destino agora se referem às células na Origem para preencher suas listas suspensas. O link geralmente quebra, quebra o menu suspenso e avisa o usuário toda vez que o destino é aberto.

O que eu gostaria de fazer é copiar os valores nas células de origem sem copiar a validação de dados. Como eu disse anteriormente, a validação de dados é a mesma em cada planilha (exceto que eles se referem a folhas de trabalho diferentes), então todos os valores devem ser validados de qualquer maneira.

Aqui está uma amostra do meu código de cópia:

Sub copyNoValidation(wkbDestination as ThisWorkbook, oRange as Range, cellDest As Range)
    wkbDestination.Worksheets("Source").Range(oRange).Copy
    cellDest.PasteSpecial xlPasteValues
End Sub

Obrigado pela sua ajuda!

    
por mykrus 05.10.2018 / 19:57

1 resposta

0

É fácil copiar e remover qualquer DV no destino:

Sub KopyPaste()
    Dim r1 As Range, r2 As Range
    Set r1 = Range("A1")
    Set r2 = Range("A2")
    r1.Copy r2
    r2.Validation.Delete
End Sub
    
por 05.10.2018 / 20:20