Avatar billede mira96ac Novice
22. juni 2006 - 18:57 Der er 7 kommentarer og
1 løsning

Gå til makro

Hejsa

Et lille nemt spørgsmål tror jeg. Jeg kan bare ikke selv løse det.

Kan man lave en makro som udfører følgende:

I kolonne B en masse tilfældige tal i nummerisk rækkefølge.
I celle A1: her skal man skrive et tal man vil finde i kolonne B

Når man så aktiverer makroen, søger den efter tallet i kolonne b og flytter markøren dertil.

Kan man aktivere makroen stort set ved at trykke enter i celle A1 så man ikke skal lave en knap eller i menuen og kører makroen ?
Avatar billede kabbak Professor
22. juni 2006 - 19:43 #1
Sæt denne i arkets modul, den er automatisk.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Data() As Variant, I As Long
    If Target.Address = "$A$1" Then
        Data = Range("B1:B" & Range("B65536").End(xlUp).Row)
        For I = 1 To UBound(Data)
            If Data(I, 1) = Target.Value Then
                Range("B" & I).Select
                Exit Sub
            End If
        Next
        Target = "Ikke fundet"
    End If
End Sub
Avatar billede mira96ac Novice
22. juni 2006 - 19:50 #2
Tak for det hurtige svar.

Men jeg er ret ny i det her makro. Når jeg indsætter makroen i VBA så kan jeg ikke "køre makroen" (INTET NAVN ?)

Kan den desuden laves så den kan aktiveres ved at stå i celle A1 og trykke Enter ?
Avatar billede kabbak Professor
22. juni 2006 - 19:59 #3
når du står på arket, skal du højreklikke på fanen, vælg vis programkode, der skal den være, og ikke i et modul
Avatar billede mira96ac Novice
22. juni 2006 - 20:05 #4
Nu fatter jeg hvordan det virker.

Perfekt.

Kom med et svar og tak for hjælpen.
Avatar billede kabbak Professor
22. juni 2006 - 20:19 #5
et svar ;-))
Avatar billede mira96ac Novice
24. juni 2006 - 16:30 #6
Lige et lille bonusspørgsmål nu da jeg har brugt det i praksis.

Når den ikke kan matche værdien til kolonne b, så skriver den Ikke fundet, men så går excel i stå i ca. 10-15 sekunder???

Jeg har ændret så den kun søger til og med række 30.000 men det gør det ikke hurtigere.

Hvorfor gå det i stå når den ikke kan finde værdien ?
Avatar billede kabbak Professor
24. juni 2006 - 16:43 #7
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Data() As Variant, I As Long
    If Target.Address = "$A$1" Then
        Data = Range("B1:B" & Range("B65536").End(xlUp).Row)
        For I = 1 To UBound(Data)
            If Data(I, 1) = Target.Value Then
                Range("B" & I).Select
                Exit Sub
            End If
        Next
        Application.EnableEvents = False
        Target = "Ikke fundet"
        Application.EnableEvents = True
    End If
End Sub

Det skulle være ordnet nu.

Du skriver: 'Jeg har ændret så den kun søger til og med række 30.000'

Den finder selv ud af hvor mange rækker du har i kolonne B, så du behøver ikke at rette.
Avatar billede mira96ac Novice
24. juni 2006 - 18:26 #8
Perfekt

Jeg takker endnu engang for de vise ord.
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