Erro em tempo de execução 13: Incompatibilidade de tipo ao ler o valor da célula?

0

Eu sei apenas básico para o excel. Eu tenho grande folha de excel do cliente. Eu estou tentando explicar com dados de amostra o que eu quero. Aqui estão os dados de entrada em uma folha

Euprecisodeumresultadocomoabaixo

Eu tentei abaixo do programa

Sub TestCustomMerge()

Dim row2&, row4&, val1&, val2&, val3&
Application.DisplayAlerts = False

row2 = 2
row4 = 4

'// error at below line i.e. Run-time error  13: Type mismatch
val1 = Cells(row2, 1).Value

' // Also I am not getting how concatenate value of Cells(row2, 2) and Cells(row4, 2)
' // so that they appear as it is (not in a single line)
val2 = Cells(row2, 2).Value

Cells(row2, 1).Cells(row4, 1).Merge
Cells(row2, 1).Value = val1
Cells(row2, 2).Cells(row4, 2).Merge

'// set concatenated value here
Cells(row2, 2).Value = val2



Application.DisplayAlerts = True
End Sub

Mas dá Run-time error 13: Type mismatch

    
por user3198603 22.05.2018 / 05:21

2 respostas

0

Ele retorna erro porque val1 é definido como longo e o valor da célula é uma string. Removi os caracteres & da parte dim . A parte de mesclagem também é atualizada.

Sub TestCustomMerge()
    Dim row2, row4, val1, val2, val3
    Application.DisplayAlerts = False
    row2 = 2
    row4 = 4
    val1 = Cells(row2, 1).Value
    val2 = Cells(row2, 2).Value
    Range(Cells(row2, 1), Cells(row4 - row2, 1)).Merge
    Cells(row2, 1).Value = val1
    Range(Cells(row2, 2), Cells(row4 - row2, 2)).Merge
    Cells(row2, 2).Value = val2
    Application.DisplayAlerts = True
End Sub
    
por 22.05.2018 / 07:26
0

Por que não usar tabela dinâmica? se seus dados são enormes, você terá alguns problemas para executar este script vba em várias linhas

    
por 23.05.2018 / 09:30