18. juni 2007 - 15:50Der 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.
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.
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 :-)
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
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
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
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.