Avatar billede .... Praktikant
04. januar 2017 - 13:31 Der er 4 kommentarer

VBA - Flytte data fra et ark til et andet i excel via. en userform

Hej!

Jeg sidder og knokler med en opgave i VBA.
Jeg har lavet en userform, hvor man ud fra en liste kan vælge en leverandør og hvilken data man gerne vil have kopieret over i et andet ark. Userformen og kontrol elementerne er lavet og virker.
Jeg kan bare ikke få VBA (via. userformen) til at løbe listen med leverandører (i ark 1) i gennem og kopier den valgte leverandør alle de gange den er nævnt (+ de tilhørende data) over i ?ark 2?.

Det er blevet gjort følgende:
Worksheets("Ark1").Activate
Range(C1).Activate
xcell = 1

Do

Do While ActiveCell.Value = lstleverandører.Text Or ActiveCell(1, 0) = ""
    If ActiveCell.Text = "lstleverandører" Then
        Selection.EntireRow.Copy
        Sheets("Ark2").Select
        Range("A2").Activate
        If Range("A2") = "" Then
        Range("A2").Select
        ActiveSheet.Paste
        Else
        Range("C2").End(xlDown).Offset(1, 0).Activate
    End If
    End If
    Exit Do
        Worksheets("Ark1").Activate
        Range("C1").End(xlDown).Offset(1, 0).Activate
       
Loop

Loop Until ActiveCell.Value = ""


Den meddeler fejl... Kan I se hvor der er fejl i koden?
Eller har I en måde hvorpå det er nemmere?

På forhånd tusind tak for hjælpen :) !
Avatar billede kabbak Professor
04. januar 2017 - 16:35 #1
jeg er ikke helt sikker på hvad du mener, men prøv

Dim I As Long, Lev As String
    I = 1

    Do
        Lev = Worksheets("Ark1").Range("C" & I).Text
        If Lev = lstleverandører.Text Then
            If Sheets("Ark2").Range("C2") = "" Then
                Worksheets("Ark1").Range("C" & I).EntireRow.Copy (Sheets("Ark2").Range("A2"))
            Else
                Worksheets("Ark1").Range("C" & I).EntireRow.Copy (Sheets("Ark2").Range("C2").End(xlDown).Offset(1, -2))

            End If
        End If

        I = I + 1
    Loop Until Worksheets("Ark1").Range("C" & I) = ""
Avatar billede .... Praktikant
04. januar 2017 - 19:48 #2
Tak for dit svar :) !

Den siger at der er fejl her (efter else):
Worksheets("Ark1").Range("C" & I).EntireRow.Copy (Sheets("Ark2").Range("C2").End(xlDown).Offset(1, -2))

Den siger der er tale om en "error 1004 application-defined or object-defined"
Ved bare ikke helt hvordan jeg løser det?

Indtil nu viser den "kun" leverandøren 1 gang i ark 2
Hvis leverandøren nu er nævnt 10 gange i ark 1, ville jeg gerne at alle 10 gange bliver kopieret over i ark2.

Skal jeg tilføje noget til koden for at det kan lade sig gøre?
Avatar billede kabbak Professor
04. januar 2017 - 20:44 #3
Denne skulle gøre det, hvis du ikke har over 22000 poster, ellers retter du, der hvor der står "C22000"


  Dim I As Long, Lev As String
    I = 1

    Do
        Lev = Worksheets("Ark1").Range("C" & I).Text
        If Lev = lstleverandører.Text Then
                Worksheets("Ark1").Range("C" & I).EntireRow.Copy (Sheets("Ark2").Range("C22000").End(xlUp).Offset(1, -2))
            End If
     
        I = I + 1
    Loop Until Worksheets("Ark1").Range("C" & I) = ""
Avatar billede .... Praktikant
04. januar 2017 - 21:15 #4
Fedt! Det virker!
Tusind tak :D !

Har bare et sidste spørgsmål...

Ud fra de data, som jeg har overført til ark 2 skal jeg tegne et diagram...
Er det nemmest at gøre ved at indspille en makro, eller har du en god metode til at gøre det?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester