Avatar billede kasp Nybegynder
18. juni 2007 - 15:50 Der er 13 kommentarer og
1 løsning

Makro - til at kopier udfra en given forudsætning

Hej.
Jeg vil gerne have lidt hjælp til et lille problem. Jeg skal overføre noget data fra et ark til et andet.

Det ark der skal overføres fra hedder ”OvfData”. Det ark der skal overføres til hedder ”GrundData”. Jeg vil gerne have der skal komme en ”spørgeboks” hvor man kan indtaste et tal fra 1-3 afhængig af hvad men vil have overført.

Tallet 1 svare til 10001
Tallet 2 svare til 20010
Tallet 3 svare til 30030

Disse tal (10001, 20010 og 30030) står alle i kolonne A i ”OvfData”-arket. Når programmet finder en række med det angivne nummer vil jeg gerne have kopieret hele rækkens kolonner over (dvs. kolonne A til N) i ”GrundData”-arket.

Da mængden af data i arket ”OvfData” variere vil jeg gerne hvis selve søgeområdet kunne blive dynamisk.

Håber i kan hjælpe :-)
Avatar billede jan-m Nybegynder
18. juni 2007 - 23:46 #1
Hej kasp

Hermed lidt VBA-kode håber det er brugbart

Public sidste As Integer
Sub find()
start:
o = "Angiv tal til overførsel (1,2,3)"
titel = "Indtast tal"
std = 1
talværdi = 1
talværdi = InputBox(o, titel, std)

If talværdi = 1 Then
tal = 10001
ElseIf talværdi = 2 Then
tal = 20010
ElseIf talværdi = 3 Then
tal = 30030
Else: MsgBox ("du skal vælge 1, 2 eller 3")
GoTo start
End If

Application.Run "sidste_linie"

Sheets("Ovfdata").Select
Cells(1, 1).Select
For a = 1 To sidste
If ActiveCell = tal Then
Application.Run "overfør"
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub

Sub sidste_linie()
celle = ActiveCell.Address
Range("a65000").Select
sidste = Selection.End(xlUp).Row
Range("b65000").Select
sidste1 = Selection.End(xlUp).Row
If sidste1 > sidste Then
sidste = sidste1
End If
Range(celle).Select
End Sub

Sub overfør()
    ActiveCell.EntireRow.Select
    Selection.Copy
    Sheets("GrundData").Select
    Cells(1, 1).Select
    ActiveCell.Select
    ActiveSheet.Paste
   
End Sub

Hvis dette virker efter dit ønske må det da min. være 30 point værd.
Avatar billede kasp Nybegynder
19. juni 2007 - 11:29 #2
Hej jan-m.
Tak for dit svar. Jeg kan godt få makroen til at fungere (sådan da). Den går fint nok ind og søger, men returnere kun en linje i modtager arket "GrundData".

Jeg vil lige høre dig om jeg kan lokke dig til at indsætte nogle kommentar til koderne... jeg vil nemlig gerne lære noget VBA :-)
Avatar billede jan-m Nybegynder
19. juni 2007 - 11:52 #3
Hej kasp

Jeg kan godt tilføje nogle kommentarer.

Hvis du gerne vil have flere linier overført, er du nok nødt til at uddybe det lidt.

Mvh. Jan
Avatar billede kabbak Professor
19. juni 2007 - 12:10 #4
Jeg har kortet jan-m's kodelidt ned

Sub find()
start:
    o = "Angiv tal til overførsel (1,2,3)"
    titel = "Indtast tal"
    std = 1
    talværdi = 1
    talværdi = InputBox(o, titel, std)
    If talværdi = 1 Then
        tal = 10001
    ElseIf talværdi = 2 Then
        tal = 20010
    ElseIf talværdi = 3 Then
        tal = 30030
    Else: MsgBox ("du skal vælge 1, 2 eller 3")
        GoTo start
    End If
    Sheets("Ovfdata").Select
    For a = 1 To Range("a65000").End(xlUp).Row
        If Cells(a, "A") = tal Then
      Rows(a).Copy Sheets("GrundData").Range("a65000").End(xlUp).Offset(1, 0)
        End If
    Next
End Sub
Avatar billede kasp Nybegynder
19. juni 2007 - 12:14 #5
Fedt det virker. Mage tak.
kabbak. kan jeg lokke dig til at skrive en lille kommentar om hvad der sker. Bare så jeg kan lære noget til næste gang.
Hvem af jer skal jeg give pointene.
Mage tak for hjælpen
Avatar billede kasp Nybegynder
19. juni 2007 - 12:25 #6
Hov lige et lille spørgsmål mere :-). Hvis arket "GrundData" er skjult virker makroen ikke. Kan man få den til det?
Avatar billede kabbak Professor
19. juni 2007 - 12:37 #7
Giv point til Jan-m

Sub find()
start:
    o = "Angiv tal til overførsel (1,2,3)"
    titel = "Indtast tal"
    std = 1
    talværdi = 1
    talværdi = InputBox(o, titel, std)
   
    Select Case talværdi ' tjekker indtastningen
    Case 1
        tal = 10001
    Case 2
        tal = 20010
    Case 3
        tal = 30030
    Case Else
        MsgBox ("du skal vælge 1, 2 eller 3")
        GoTo start
    End Select

    Application.ScreenUpdating = False    ' Skærmens opdatering slås fra, for at undgå flimmer
    Sheets("GrundData").Visible = True    ' gør arket Grunddata synligt
    Sheets("Ovfdata").Select    ' vælger ark
    For a = 1 To Range("a65000").End(xlUp).Row    ' finder den sidste celle med værdier i a kolonnen
        If Cells(a, "A") = tal Then    ' tjekker om cellen indeholder tallet
            ' copierer rækken over i næste tomme celle i A kolonnen i arket GrundData
            Rows(a).Copy Sheets("GrundData").Range("a65000").End(xlUp).Offset(1, 0)
        End If
    Next
    Sheets("GrundData").Visible = False    ' gør arket Grunddata Usynligt
    Application.ScreenUpdating = True    ' Skærmens opdatering slås til igen
End Sub
Avatar billede kasp Nybegynder
19. juni 2007 - 13:09 #8
Mange tak for hjælpen :-)
Avatar billede kasp Nybegynder
19. juni 2007 - 13:13 #9
Jan-m. Smider du mig lige et svar så du kan få nogle point :-)
Avatar billede jan-m Nybegynder
19. juni 2007 - 23:02 #10
Hermed sendes et svar, det er iøvrigt fint lige at få koden "tunet" af én af de mere garvede, så jeg lærte skam også noget.
Avatar billede kasp Nybegynder
20. juni 2007 - 07:54 #11
Her er nogle point :-)
Avatar billede kasp Nybegynder
20. juni 2007 - 07:56 #12
hmm har jeg gjort det her forkert. syntes ikke der sker noget når jeg trykker Accepter?
Avatar billede kabbak Professor
20. juni 2007 - 17:56 #13
jan-m har kun lagt kommentarer, han skal give et svar først.
Avatar billede jan-m Nybegynder
20. juni 2007 - 22:11 #14
Jeg undskylder fejlen og takker.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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