Avatar billede istebjerg Nybegynder
09. januar 2006 - 20:04 Der er 9 kommentarer og
1 løsning

Gem kopi af enkelte data i andet ark.

Håber at der er en venlig sjæl der kan hjælpe mig med følgende:

Jeg har et beregningsark ;Sheet "M1 beregn"
Jeg vil gerne ha' lavet en macro (click-knap) der kopiere og gemmer enkelte data i et andet ark ; Sheet "input M1"

Data der skal gemmes fra Sheet "M1 beregn" er i cellerne :
E11, E20, E34, G20, G34, I20, I34
Data skal gemmes (i rækkefølge)i Sheet "input M1" i cellerne:
D4, E4, F4, G4, H4, I4, J4 (første gang og næste gang i række 5, 6, 7 osv.)

Da Sheet "M1 beregn" løbende bliver ændret, skal det gerne være sådan at kopierne fra dette ark til Sheet "input M1" løber ned i de samme kolonner. (altså E11 "M1 beregn; hører til D kolonne i "input M1") Altså et loop ?

Håber på et hurtigt svar.. (stil evt. ekstra spørgsmål ;-)
NB. Bruger engelsk udgave af exel.

/Istebjerg
Avatar billede kabbak Professor
09. januar 2006 - 20:46 #1
hvis der altid er værdier i D kolonnen i Sheet"input M1" , kan denne bruges

Public Sub Kopier()
Dim Til As Object, Fra As Object, FraCelle As Variant, TilCelle As Variant, RW As Long, I As Integer
Set Fra = Sheets("M1 beregn")
Set Til = Sheets("input M1")
  fracells = Array("E11", "E20", "E34", "G20", "G34", "I20", "I34")
  TilCells = Array("D", "E", "F", "G", "H", "I", "J")
  RW = Til.Range("D65536").End(xlUp).Row + 1
  If RW < 4 Then RW = 4
  For I = 0 To UBound(fracells)
  Til.Range(TilCells(I) & RW) = Fra.Range(fracells(I))
  Next

End Sub
Avatar billede kabbak Professor
09. januar 2006 - 20:48 #2
der var lige et par stavefejl

Public Sub Kopier()
    Dim Til As Object, Fra As Object, FraCells As Variant, TilCelles As Variant, RW As Long, I As Integer
    Set Fra = Sheets("M1 beregn")
    Set Til = Sheets("input M1")
    FraCells = Array("E11", "E20", "E34", "G20", "G34", "I20", "I34")
    TilCells = Array("D", "E", "F", "G", "H", "I", "J")
    RW = Til.Range("D65536").End(xlUp).Row + 1
    If RW < 4 Then RW = 4
    For I = 0 To UBound(FraCells)
        Til.Range(TilCells(I) & RW) = Fra.Range(FraCells(I))
    Next

End Sub
Avatar billede istebjerg Nybegynder
09. januar 2006 - 21:08 #3
Det virker meget fint (vælger dog at bruge; Private Sub CommandButton1_Click()) i stedet for Puplic Sub kopier ;-)

Et lille ekstra spørgsmål.. Kan man gøre sådan at Man ikke kan skrive det samme i D kolonnen, evt. med en promt af at data for kolonnen allerede eksistere?
(grunden er at de enkelte data i kolonne D er unikke, hvilket der ikke bliver taget højde for nu..)

og hvis du så lige hurtigt forklarer hvordan jeg giver dig dine velfortjente points (det er det første spørgsmål, jeg har oprette ;-))
/ Istebjerg
Avatar billede kabbak Professor
09. januar 2006 - 21:18 #4
Public Sub Kopier()
    Dim Til As Object, Fra As Object, FraCells As Variant, TilCelles As Variant, RW As Long, I As Integer
    Dim Tjek As Variant, OK As Boolean
    OK = True
    Set Fra = Sheets("M1 beregn")
    Set Til = Sheets("input M1")
    FraCells = Array("E11", "E20", "E34", "G20", "G34", "I20", "I34")
    TilCells = Array("D", "E", "F", "G", "H", "I", "J")
    RW = Til.Range("D65536").End(xlUp).Row + 1
    If RW < 4 Then RW = 4

    Tjek = Til.Range("D4:D" & RW - 1)
    For x = 1 To UBound(Tjek)
        If Tjek(x, 1) = Fra.Range("E11") Then
            OK = False
            Exit For
        End If
    Next

    If OK Then
        For I = 0 To UBound(FraCells)
            Til.Range(TilCells(I) & RW) = Fra.Range(FraCells(I))
        Next
    Else
        MsgBox " nummeret er brugt, tast om"
    End If
End Sub
Avatar billede kabbak Professor
09. januar 2006 - 21:20 #5
Jeg skal først svare,
så markerer du mit navn og trykker accepter.

;-)) og velkommen
Avatar billede istebjerg Nybegynder
09. januar 2006 - 21:21 #6
Du er for sej... er det noget med at du skal smide et svar? 100 points til dig og tusind tak for hjælpen...
Avatar billede kabbak Professor
09. januar 2006 - 21:23 #7
tak for point ;-))
Avatar billede istebjerg Nybegynder
09. januar 2006 - 21:31 #8
Øhhh... Kunne ikke lige få det sidste til at virke??

Mulig fejl i linien : For x = 1 To UBound(Tjek)??

Håber stadig du er på kabbak..
Avatar billede kabbak Professor
09. januar 2006 - 21:36 #9
Det er fordi der ikke er data i endnu
ret denne linie

Tjek = Til.Range("D4:D" & RW - 1)
nu lader vi den starte 2 rækker højere oppe, der har du vel overskrifter eller tomme

Tjek = Til.Range("D2:D" & RW - 1)
Avatar billede istebjerg Nybegynder
09. januar 2006 - 21:38 #10
Perfekt !!! Tak igen..
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