Forfatter |
Emne Søg Emne funktioner
|
ZXCVB
Bronze bruger
Medlem: 12.Mar.2012
Land: DK
Status: Offline
Point: 92
|
Emne: En søgeopgave - Variant Sendt: 06.Sep.2016 kl. 17:08 |
Spørgsmålet er en fortsættelse af tidligere <En søgeopgave> 24-8-16
Her er koden som ikke virker i denne variant :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$AE$13" Then Target.Address = "$AB$7"
If Target.Value > 25 And Target.Value < 1053 Then ActiveWindow.ScrollRow = Target.Value Else MsgBox "Ugyldigt rækkenummer" End If
End If
End Sub
FORDI : jeg skriver et kontonummer i AE13 og rækkenummer beregnes i AB7 : <=SLÅ.OP(AE13;AE26:AE1053;AC26:AC1053) >
Løsning : hver gang der skrives i AE13 skal der rykkes til rækken beregnet i AB7.
|
Med venlig hilsen
Knud Evendorff
|
|
|
|
|
maxzpad
Guld bruger
Medlem: 04.Aug.2016
Land: Danmark
Status: Offline
Point: 720
|
Accepteret svar
Sendt: 07.Sep.2016 kl. 08:54 |
Hej Knud
Generelt kan man ALT det med VBA-koden, som man også kan udføre "hands-on" i Excel-programmet.
Dvs. man kan også godt (gen)beregne alle ark, et enkelt ark eller blot et celleområde i et ark (helt ned til en enkelt celle). Ønsker du eksempelvis at beregne cellen "AB7", vil det kunne udføres således:
Me.Range("AB7").Calculate
Indsæt ovenstående kodelinje før denne linje:
ActiveWindow.ScrollRow = Me.Range("AB7").Value
Man kan sætte variablen, som du omtaler, på denne måde:
Dim MinVariabel MinVariabel = WorksheetFunction.Lookup(Target.Value, Me.Range("AE26:AE1053"), Me.Range("AC26:AC1053"))
Herefter kan du bruge variablen således: ActiveWindow.ScrollRow = MinVariabel
Bruger du variablen, slipper du for at genberegne arket/cellen som omtalt oven for.
Mvh Max
|
|
maxzpad
Guld bruger
Medlem: 04.Aug.2016
Land: Danmark
Status: Offline
Point: 720
|
Sendt: 06.Sep.2016 kl. 20:38 |
Hej Knud
Jeg tror, det ikke virker, fordi du ikke kan manipulere med Range-objektet, der hedder Target.
Target er det Range/den celle, som du ændrer, og jeg tror ikke, du kan ændre adressen/cellereferencen fra den, som Excel selv bestemmer på baggrund af hændelsen Worksheet_Change.
Prøv følgende:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$AE$13" Then
If Me.Range("AB7").Value > 25 And Me.Range("AB7").Value < 1053 Then ActiveWindow.ScrollRow = Me.Range("AB7").Value Else MsgBox "Ugyldigt rækkenummer" End If
End If
End Sub
Mvh Max
|
|
ZXCVB
Bronze bruger
Medlem: 12.Mar.2012
Land: DK
Status: Offline
Point: 92
|
Sendt: 06.Sep.2016 kl. 22:38 |
Hej Max
Det virker perfekt, men jeg glemte i min opgavedefinition en stor detalje.
Jeg bruger Manuel beregning i projektet, og det gør jo en stor forskel.
forslag : - Kan man i VB koden sætte en option så dette Ark bliver beregnet Automatisk. - Kan man sætte en variabel til : <=SLÅ.OP(AE13;AE26:AE1053;AC26:AC1053) > ind i VB koden - Eller ?
|
Med venlig hilsen
Knud Evendorff
|
|
maxzpad
Guld bruger
Medlem: 04.Aug.2016
Land: Danmark
Status: Offline
Point: 720
|
Accepteret svar
Sendt: 07.Sep.2016 kl. 08:54 |
Hej Knud
Generelt kan man ALT det med VBA-koden, som man også kan udføre "hands-on" i Excel-programmet.
Dvs. man kan også godt (gen)beregne alle ark, et enkelt ark eller blot et celleområde i et ark (helt ned til en enkelt celle). Ønsker du eksempelvis at beregne cellen "AB7", vil det kunne udføres således:
Me.Range("AB7").Calculate
Indsæt ovenstående kodelinje før denne linje:
ActiveWindow.ScrollRow = Me.Range("AB7").Value
Man kan sætte variablen, som du omtaler, på denne måde:
Dim MinVariabel MinVariabel = WorksheetFunction.Lookup(Target.Value, Me.Range("AE26:AE1053"), Me.Range("AC26:AC1053"))
Herefter kan du bruge variablen således: ActiveWindow.ScrollRow = MinVariabel
Bruger du variablen, slipper du for at genberegne arket/cellen som omtalt oven for.
Mvh Max
|
|
ZXCVB
Bronze bruger
Medlem: 12.Mar.2012
Land: DK
Status: Offline
Point: 92
|
Sendt: 07.Sep.2016 kl. 19:07 |
Hej Max
Tak for svaret og løsningen. Jeg valgte den første - dog placerede jeg <Me.Range("AB7").Calculate> før aflusning, og jeg placerede et <calculate> sidst i koden. Arket er så blevet <automatik beregnet>, og da der er er et par celler mere i arket, der modulerer forskellige resultater, bliver disse også en indeholdt i <automatisk beregning>.
Jeg kvitterer derfor opgaven som løst.
|
Med venlig hilsen
Knud Evendorff
|
|
maxzpad
Guld bruger
Medlem: 04.Aug.2016
Land: Danmark
Status: Offline
Point: 720
|
Sendt: 08.Sep.2016 kl. 08:47 |
Super! Godt du kunne bruge det Mvh Max
|
|