Avatar billede Laugesen1 Mester
23. november 2013 - 11:59 Der er 9 kommentarer og
1 løsning

Makro for et område der flytter den markederede celle to kolonner til højre

Makro der gælder for et område med 60 rækker.

Jeg har lavet en makro der flytter den markerede celle to kolonner til højre efter indtast af værdi. Det virker fint, men den skal virke på 60 rækker og jeg har derfor skrevet en linje i makroen for hver række.

Er der en nemmere måde at skive makroen på, så jeg ikke skal skrive 60 linjer?

Jeg tænker på, at man starter med at definere området hvor makroen skal virke og derefter skriver, at der i det gælden område, skal flyttes to celler til højre efter indtast af værdi.


Makroen for de 60 rækkker:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:A60"), Target) Is Nothing Then

    If Target.Address = "$A$1" Then Range("C1").Activate
    If Target.Address = "$A$2" Then Range("C2").Activate
    If Target.Address = "$A$3" Then Range("C3").Activate
    - - - -
    - - - -
    If Target.Address = "$A$60" Then Range("C60").Activate

End If


Er der er nogen der har et godt råd til dette?

Laugesen
Avatar billede supertekst Ekspert
23. november 2013 - 12:07 #1
Prøv at se på .Offset(0,2)
Avatar billede Laugesen1 Mester
23. november 2013 - 13:53 #2
Hej Kabbak

Det virker med:

  If Not Intersect(Range("A1:A60"), Target) Is Nothing Then
  Target.Offset(0,2).Activate
  end if

Super godt, tak for hjælpen.
Skriver du et svar?

Laugesen
Avatar billede kabbak Professor
23. november 2013 - 13:02 #3
If Not Intersect(Range("A1:A60"), Target) Is Nothing Then
Target.Offset(0,2)
end if
Avatar billede kabbak Professor
23. november 2013 - 13:03 #4
glemte noget

If Not Intersect(Range("A1:A60"), Target) Is Nothing Then
Target.Offset(0,2).Activate
end if
Avatar billede 220661 Ekspert
23. november 2013 - 16:13 #5
Supertekst lavede noget kode til mig i en faktura skabelon, hvor indtatet data blev flyttet to kolonner til venstre og slettet i det første felt.
Den ser sådan ud makroen.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim række As Byte
    If Target.Column = 3 And Target.Text <> "" Then
        række = Target.Row
        Range("E" & CStr(række)) = Target
        Target.Value = ""
       
        Range("D" & CStr(række)).Select
    End If
End Sub

Ved ikke om den evt kan tilpasses dit brug?
Tak endnu engang til supertekst for den assistance jeg har fået over flere gange, med min faktura :-)
Avatar billede 220661 Ekspert
23. november 2013 - 16:14 #6
hov overså lige at du havde fået løsningen, så se blot bort fra mit indlæg.
Avatar billede kabbak Professor
23. november 2013 - 16:29 #7
;-))
Avatar billede supertekst Ekspert
23. november 2013 - 18:15 #8
Selv tak
Avatar billede Laugesen1 Mester
24. november 2013 - 00:14 #9
Hej Supertekst

Jeg tildelte point til Kabbak, fordi han kom med forslag til den samlede makro.

Men tak for dit input :)
Håber det er ok med dig, at jeg har tildelt point til Kabbak.

Laugesen
Avatar billede supertekst Ekspert
24. november 2013 - 10:58 #10
Det er ok
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