Avatar billede janvogt Praktikant
01. februar 2001 - 16:39 Der er 9 kommentarer og
1 løsning

Kode til opslag

Jeg har i kolonne A en række tal 1, 2, 3, 4 .... (begyndende fra celle A1).
I en anden celle har jeg f.eks. værdien \"3\".

Hvordan får jeg (ved hjælp af kode) markøren til at placere sig på 3-tallet og så gå en tak til højre - altså placere sig i celle B3? Hvis værdien var \"4\" skal markøren så fremdelses stille sig i celle B4.
01. februar 2001 - 17:00 #1
Hej Jan

Kan du ikke lige fortælle, om du er igang med et gennemløb af cellerne i A-kolonne, og i den forbindelse vil smide værdier i B-kolonnen, eller om det er når du indtaster noget i A-kolonnen, at den så skal hoppe til en celle i B-kolonnen, svarende til den indtastede værdi.

Eller hvad det er du er ved - det letter opgaven.
01. februar 2001 - 17:08 #2
Hvis du efter indtastning i f.eks. celle A2 skal hoppe til en cell i kolonne B og det indtastede tals række, så kan du følgende kode, som skal placeres på arkets eget kodeark.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rJump1 As Range

    Set rJump1 = Range(\"A2\")

    If Not Intersect(Target, rJump1) Is Nothing Then
        Range(\"B\" & rJump1.Value).Select
    End If

Set rJump1 = Nothing
End Sub

Du kan evt. lave datavalidering på indtastningscellen, så der kun kan indtastes HELTAL i cellen.

Det kan være koden hjælper, selv om det er noget andet du laver kan du nok bruge en af disse her:

ActiveCell.Offset(ActiveCell.Value - ActiveCell.Row, 1).Select
Range(\"B\" & ActiveCell.Value).Select
Avatar billede askims Nybegynder
01. februar 2001 - 17:24 #3
Er det funktionen Lopslag(opslagsværdi;tabel;kolonne i tabel) du tænker på?

Den returnerer godt kun værdien den hopper hverken det ene eller det andet sted hen!

ASKIMS
Avatar billede janvogt Praktikant
01. februar 2001 - 21:02 #4
Det er ikke LOPSLAG jeg er ude efter. Selv om det er en stærk funktion er den lidt for enkel her.

I det jeg søger er det nødvendigt med en kode, fordi der ikke nødvendigvis skal ske nogen aktivitet når cellerne forandres.

Jeg prøver at uddybe:
I række 1 står der en lang række formler, som henter værdier rundt omkring.
Disse skal, når jeg kører en makro, kopieres ned (kun værdier) til en given række.
Hvilken række afhænger af et tal fra et helt andet sted, som skal svare til den værdi som står i kolonne A. Kolonne A indeholder således nøglen til mine datasæt. For ikke at overskrive nøgleværdierne skal markøren lige hoppe en celle til højre inden værdierne kopieres.
Er værdien \"et helt andet sted\" f.eks. 3, skal makroen finde denne værdi i kolonne A (som er en lang sorteret talrække) og rykke ud i kolonne B og derefter kopiere værdierne fra formlerne i række 1.

Håber at dette sammenholdt med min første forklaring giver lidt mening.
01. februar 2001 - 22:18 #5
hehe - jeg er stadig ikke helt med - hehe
Skal makro\'en løbe alle celler i kolonne A igennem, for at placere cellens værdi i kolonne B række A-cellens værdi ?
eller er det kun for enkelte celler ?

Her er et eksempel, hvis det er alle celler i A, hvor jeg går udfra, at der ingen tomme celler findes i din rækkefølge, idet du siger de er sorteret.

Dim rCell As Range
For Each rCell In Worksheets(\"Ark1\").Range(\"A1:A65536\")
    If rCell.Value = \"\" Then Exit For
    Range(\"B\" & rCell.Value).Value = rCell.Value
Next rCell

Hvis ikke jeg rammer rigtigt, så er du velkommen til at sende mig regnearket.
flemse@post3.tele.dk
Avatar billede janvogt Praktikant
02. februar 2001 - 16:26 #6
Jeg giver op - flemse du får mit ark !!!
02. februar 2001 - 22:28 #7
på kodearket for sheet1 tilføjes følgende rutine.

Private Sub CommandButton1_Click()
Dim rCell As Range
Dim bFound As Boolean
Dim iRowNo As Integer
Dim iX As Integer

    For Each rCell In Range(\"A4:A10000\")
        If rCell.Value = \"\" Then Exit For
        If rCell.Value = Range(\"A1\").Value Then
            bFound = True
            iRowNo = rCell.Row
            Exit For
        End If
    Next rCell
   
    If bFound = True Then
        iX = 1
        For Each rCell In Range(\"B3:N3\")
            iX = iX + 1
            Range(Cells(iRowNo, iX), Cells(iRowNo, iX)).Value = rCell.Value
            \'rCell.Value = \"\"
        Next rCell
    End If
End Sub

hvis cellerne i B3:N3 skal være tomme efterfølgende, så skal du fjerne plinket (\') foran rCell.Value = \"\"

Mvh
Flemming
Avatar billede janvogt Praktikant
04. februar 2001 - 17:31 #8
Tak skal du have Flemming.
Det var lige det der skulle til.
04. februar 2001 - 17:33 #9
Ingen årsag - god fornøjelse.
Avatar billede janvogt Praktikant
07. februar 2001 - 11:01 #10
>>> Flemming: Lige et problem:
Hvad nu hvis \"CommandButton1\" befinder sig på et andet ark, f.eks \"Sheet2\"?

Jeg har prøvet at indsætte \"Sheet2\" alle steder hvor der er et \"Range\" men får fejl i nedenstående.
Hvordan skal den se ud?

Worksheets(\"Sheet2\").Range(Cells(iRowNo, iX), Cells(iRowNo, iX)).Value = rCell.Value
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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