Avatar billede tvc Seniormester
05. august 2004 - 23:30 Der er 9 kommentarer og
1 løsning

Loop med variabel rækkenummer

Hej

Jeg har forsøgt mig med nedenstående, hvor jeg gerne skulle have Bmk2 til at udgøre det variable rækkenummer men det virker ikke. Er der nogle der kan fortælle mig hvad jeg har gjort galt?


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Bmk1 = 1

Do While Bmk1 < 50

Bmk2 = Bmk1

If Range("B(Bmk2)") <> "" Then
    If Not Intersect(Target, Range("B(Bmk2")) Is Nothing Then
        MsgBox (Range("B(Bmk2)"))
    End If
End If

Bmk1 = Bmk2 + 1

Loop

End Sub
Avatar billede bak Forsker
05. august 2004 - 23:36 #1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Bmk1 = 1

Do While Bmk1 < 50

Bmk2 = Bmk1

If Range("B" & Bmk2) <> "" Then
    If Not Intersect(Target, Range("B"& Bmk2)) Is Nothing Then
        MsgBox (Range("B" & Bmk2))
    End If
End If

Bmk1 = Bmk2 + 1

Loop

End Sub
Avatar billede bak Forsker
05. august 2004 - 23:38 #2
men jeg kan ikke blive helt klar over hvad det er du prøver at opnå.......
Avatar billede tvc Seniormester
05. august 2004 - 23:45 #3
Jeg vil anvende funktionen til visning af en bemærkning indtastet i den markerede celle. Cellen er ikke så stor at der kan vises mere end 15 tegn, så jeg vil have funktionen til at vise hele bemærkningen i en MsgBox.

For ikke at skulle skrive funktionen:

If Range("B1") <> "" Then
    If Not Intersect(Target, Range("B1") Is Nothing Then
        MsgBox (Range("B1")
    End If
End If
If Range("B2") <> "" Then
    If Not Intersect(Target, Range("B2") Is Nothing Then
        MsgBox (Range("B2")
    End If
End If

osv. ville jeg lave en loop
Avatar billede bak Forsker
05. august 2004 - 23:47 #4
så vidt jeg umiddelbart kan se chekker du om target ( den aktive celle) ligger i området B1:B49 og om den er tom.
Hvis det er tilfældet, skal det nok nærmere se således ud:

Private Sub Worksheet_SelectionChange(ByVal Target As Range
If not intersect(Target, Range("B1:B49)) is nothing then
    msgbox target.text
end if
End sub
Avatar billede bak Forsker
05. august 2004 - 23:48 #5
en lille rettelse

Private Sub Worksheet_SelectionChange(ByVal Target As Range
If not intersect(Target, Range("B1:B49)) is nothing and Target <> "" then
    msgbox target.text
end if
End sub
Avatar billede tvc Seniormester
05. august 2004 - 23:56 #6
Det er lidt svært at forklare det. Tager det lige fra en ende:

Jeg har et ark bestående af et indeks på 200 linier, hvor der er mulighed for at data, samt en bemærkning uden begrænsning i længde men kun med plads til visning af 15 tegn.

Hvis en celle under bemærkninger markeres skal funktionen læse om der står noget i cellen og hvis ikke der gør skal den ikke foretage sig noget, mens at hvis der står noget i cellen skal indholdet af cellen vises i en MsgBox.

Index                Sag  Art    M1 T1 M2 T2    Bemærkninger
1.    Stamarkiv                           
1.1    Kundeoplysninger                           
1.1.1    Faste kundeoplysninger

For ikke at skulle skrive funktionen for alle rækkerne i kolonnen bemærkninger ville jeg lave en loop som kunne gentage funktionen for kolonnen fra række 1 til 200.

Håber denne forklaring er lidt bedre.

Mvh. Tem
Avatar billede bak Forsker
06. august 2004 - 00:04 #7
Så skulle det da også fungere..
Man behøver nemlig ikke loope, men kan skrive hele alle celler på een gang
Jeg forudsætter at du har bemærkninger i kolonne H fra række 1 til 200.
If Not Intersect(target, range("H1:H200")) is nothing  then .....
betyder at at hvis der er et sammenfald mellem Target (den aktive celle) og Range("H1:H200") skal makroen gøre noget, her vise teksten fra den aktive celle

Private Sub Worksheet_SelectionChange(ByVal Target As Range
If not intersect(Target, Range("H1:H200")) is nothing and Target <> "" then
    msgbox Target.text
end if
End sub
Avatar billede bak Forsker
06. august 2004 - 00:19 #8
En svag ændring således at man ikke får fejl ved markering af flere celler

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("H1:H200")) Is Nothing And Target <> "" Then
        MsgBox Target.Text
    End If
End Sub


se evt http://www.tbdl.dk/excel/target.xls
Avatar billede tvc Seniormester
06. august 2004 - 00:36 #9
Fik lige aktiveret en loop som låste min computer - man skal passe lidt på :-)

Tak for svaret det hele virker nu.

Vil du sende mig et svar.

Godnat Mvh. Tem
Avatar billede bak Forsker
06. august 2004 - 00:56 #10
så godnat da :-)
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