Avatar billede prinsib Seniormester
27. september 2009 - 13:41 Der er 17 kommentarer og
1 løsning

Hjælp til Makro.

Hej experter.
Er der nogen der kan hjælpe mig med en måske svær makro?
Jeg vil gerne have, at indholdet af enten B4 eller B19, kopieres ind i de celler man klikker på i områderne D4:E33, G4:H33, J4:K33 og M4:N33.
Kan det lade sig gøre?
Ib
Avatar billede supertekst Ekspert
27. september 2009 - 13:47 #1
Ja - men hvordan vælges der mellem B4 / B19
Avatar billede prinsib Seniormester
27. september 2009 - 14:04 #2
Hej supertekst.
Der står ikke noget i B4 og B19 på samme tid.
Så enten er det B4 ellers er det B19, som vælges fra.
Ib
Avatar billede supertekst Ekspert
27. september 2009 - 14:07 #3
Ok -
Avatar billede supertekst Ekspert
27. september 2009 - 14:24 #4
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Rem Klikkes der i et af områderne
Dim kolonne, række
    kolonne = Target.Column
    række = Target.Row
   
    If kolonne >= 4 And kolonne <= 14 And kolonne <> 6 And kolonne <> 9 And kolonne <> 12 Then
        If række >= 4 And kolonne <= 33 Then
            Target.PasteSpecial xlPasteAll
        End If
    End If
End Sub
Private Sub worksheet_activate()
    If Range("B4") <> "" Then
        Range("B4").Select
    Else
        Range("B19").Select
    End If

    Selection.Copy
End Sub
Avatar billede prinsib Seniormester
27. september 2009 - 14:51 #5
Hej superteks.
Der sker det at når jeg klikker kommer der en box op hvori der står. Run-Time error '1004':
Metode PasteSpecial for klassen Range mislykkedes.
Hvis jeg debugger er det linien. Target. PasteSpecial x1PasteAll
som er gul.
Ib
Avatar billede supertekst Ekspert
27. september 2009 - 14:56 #6
Ja - det er måske ikke hensigtsmæssigt at B4/B19 vælges når arket aktiveres. Hvis du prøver at klikke på et andet ark og så klikker på det relevante - så skulle det virke p.t.

Skal du have formatet med fra B4/B19 eller er det kun værdien?
Så retter jeg ind efter det.
Avatar billede supertekst Ekspert
27. september 2009 - 15:12 #7
Nu kan du prøve denne og melde tilbage...

Rem Version II
Rem ==========
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Rem Klikkes der i et af områderne
Dim kolonne, række
    kolonne = Target.Column
    række = Target.Row
   
    If kolonne >= 4 And kolonne <= 14 And kolonne <> 6 And kolonne <> 9 And kolonne <> 12 Then
        If række >= 4 And kolonne <= 33 Then
            Target.Value = HentVærdi
        End If
    End If
End Sub
Private Function HentVærdi()
    If Range("B4") <> "" Then
        Range("B4").Select
    Else
        Range("B19").Select
    End If
    HentVærdi = Selection.Value
End Function
Avatar billede tjacob Juniormester
27. september 2009 - 16:07 #8
Lige en hurtig kommentar:
prinsib>>Hvis du har kopieret linien: Target. PasteSpecial x1PasteAll, så har du en fejl i koden: det skal være: Target. PasteSpecial xlPasteAll -altså l IKKE 1.
Avatar billede prinsib Seniormester
27. september 2009 - 16:15 #9
Hej superstkst.
Nu virker det som det skal, bortset fra en lille detalje. Den indsætter også i række 34 nede under kolonnerne jeg klikker i, men det tror jeg godt jeg kan leve med, hvis det er besværligt at rette.
Tak for hjælpen, og for dit hurtige svar.
Læg et svar.
Ib
Avatar billede prinsib Seniormester
27. september 2009 - 16:28 #10
Hej tjacob.
Undskyld jeg så ikke lige dit indlæg. Det var mig der havde læst forkert, der stod ikke 1, men den virkede ikke alligevel.
Ib
Avatar billede supertekst Ekspert
27. september 2009 - 16:58 #11
rettelse kommer - et øjeblik......
Avatar billede supertekst Ekspert
27. september 2009 - 17:01 #12
Rem Version III
Rem ===========
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Rem Klikkes der i et af områderne
Dim kolonne, række
    kolonne = Target.Column
    række = Target.Row
   
    If kolonne >= 4 And kolonne <= 14 And kolonne <> 6 And kolonne <> 9 And kolonne <> 12 Then
        If række >= 4 And række <= 33 Then  'der stod kolonne i stedet for række
            Target.Value = HentVærdi
        End If
    End If
End Sub
Private Function HentVærdi()
    If Range("B4") <> "" Then
        Range("B4").Select
    Else
        Range("B19").Select
    End If
    HentVærdi = Selection.Value
End Function
Avatar billede prinsib Seniormester
27. september 2009 - 21:25 #13
Hej supertekst.
Det var lige det der skulle til.
Nu virker det helt perfekt.
Tak for hjælpen, og her er dine velfortjente points.
Ib
Avatar billede supertekst Ekspert
27. september 2009 - 23:03 #14
Fint & selv tak...
Avatar billede supertekst Ekspert
27. september 2009 - 23:06 #15
Hvis det var meningen at jeg skulle have point - så er det en ommer... :-) Du giver point til dig selv....
Avatar billede prinsib Seniormester
27. september 2009 - 23:24 #16
Hej supertekst.
Undskyld mig. Det har jeg også. Så skal du ligge et svar, er det ikke rigtig?
Har du set mit tillægsspørgsmål?
Ib
Avatar billede supertekst Ekspert
27. september 2009 - 23:40 #17
Nej - der kan ikke svares mere på dette spørgsmål.

Det er Ok (du er ikke den første) - du skal oprette et nyt spørgsmål med titlen:

Points til Supertekst og henvise til dette spørgsmål # 887801 - så svarer jeg på dette.
Avatar billede supertekst Ekspert
27. september 2009 - 23:42 #18
Ja - jeg har set dit tillægsspørgsmål - når det måske i morgen - (har flere kundeopgaver).
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