Mover linhas para novas planilhas no excel

0

Estou com um problema. No meu trabalho, costumamos obter planilhas com locais. Precisamos distribuir cada um dos locais para uma planilha diferente. Porque então listamos as empresas próximas para anunciar. Isso não foi um grande problema quando eles nos deram planilhas com 5 locais, mas mais recentemente temos recebido folhas com mais de 100 locais em uma folha.

Eu quero fazer uma função que tome uma determinada linha, pegue o primeiro valor e faça o seu conteúdo (número de localização) em uma nova planilha. Copie essa linha para a folha com o nome e cole-a. Este é o meu código atual. Estou tendo problemas com "Tipo incompatível" e "Objeto obrigatório". Alguma sugestão sobre estas questões?


Sub TestRowThree()
    Dim row As Integer
    row = 3
    CopyRow (row)
End Sub

Sub CreateNewSheet(strName As String)
    Sheet.Add.Name = strName
End Sub

Sub CopyRow(rowNum As Integer)
    Dim mainSheetName As String
    mainSheetName = ActiveWorkbook.ActiveSheet.Name
    Dim newSheetName As String
    newSheetName = Sheets(mainSheetName).Range("$A$" & rowNum).Value
    Sheets(mainSheetName).Select
    Range("A" & rowNum & ":H" & rowNum).Cut
    CreateNewSheet (newSheetName)
    Sheets(newSheetName).Select
    Range("A" + rowNum + ":H" + rowNum).Select
    ActiveSheet.Paste
End Sub
    
por PsychoData 27.09.2013 / 04:58

1 resposta

0

Encontrei alguns erros pequenos, mas cruciais no código.

  1. Em "CreateNewSheet", Sheet precisava ser Sheets A planilha não estava referenciando nada, daí o erro "Objeto obrigatório"
  2. Ao selecionar o novo intervalo para colar, eu usei por engano + em vez de & Yielding my type mismatch. Nota: Então eu percebi uma vez que eu poderia executar o meu código que eu estava copiando-os para sua linha original, bastante irritante, Corrigido, copiando para a mesma linha.

Eu postei meu código alterado abaixo.


Sub TestRowThree()
    Dim row As Integer
    row = 3
    CopyRow (row)
End Sub

Sub CreateNewSheet(strName As String)
    Sheets.Add.Name = strName
End Sub

Sub CopyRow(rowNum As Integer)
    Dim mainSheetName As String
    mainSheetName = ActiveWorkbook.ActiveSheet.Name
    Dim newSheetName As String
    newSheetName = Sheets(mainSheetName).Range("$A$" & rowNum).Value
    Sheets(mainSheetName).Select
    Range("A" & rowNum & ":H" & rowNum).Copy
    CreateNewSheet (newSheetName)
    Sheets(newSheetName).Select
    Range("A1:H1").Select
    ActiveSheet.Paste
End Sub

    
por 27.09.2013 / 05:23