27. september 2009 - 23:01Der er
13 kommentarer og 1 løsning
Mere hjælp til Makro
Hej Jeg har lige fået denne makro af supertekst, og den virker perfekt, men jeg vil gerne have den udvidet.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Rem Klikkes der i et af områderne Dim kolonne, række kolonne = Target.Column række = Target.Row
If kolonne >= 4 And kolonne <= 14 And kolonne <> 6 And kolonne <> 9 And kolonne <> 12 Then If række >= 4 And række <= 33 Then 'der stod kolonne i stedet for række Target.Value = HentVærdi End If End If End Sub Private Function HentVærdi() If Range("B4") <> "" Then Range("B4").Select Else Range("B19").Select End If HentVærdi = Selection.Value End Function
Jeg må hellere forklare nærmere. Kolonne D, G, J og M skal laves om til positive tal, selv om tallet i B4 er negativ. Tallene i Kolonne E,H,K og N er negative tal. Hvis tallet jeg klikker ind, kommer fra B19 (og kun der fra)klikker jeg i 3 negative celler, og så skal de 3 tal adderes og lægges i en positiv celle i samme række. Det er måske 2 spørgsmål, og jeg vil gerne splitte dem op, hvis det er nødvendig. Tro mig, hvis det er svært at forstå, er det lige så svært at forklare. Ib
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Dette er kun første halvdel på dit spørgsmål - De 3 negative celler - er det i bestemte kolonner. Summen skal placeres i en positiv celle i samme række? Regel for dette - eller eksempel.
Rem Version 2-I Rem =========== Private Sub Worksheet_SelectionChange(ByVal Target As Range) Rem Klikkes der i et af områderne Dim kolonne, række kolonne = Target.Column række = Target.Row
If kolonne >= 4 And kolonne <= 14 And kolonne <> 6 And kolonne <> 9 And kolonne <> 12 Then If række >= 4 And række <= 33 Then Target.Value = HentVærdi(kolonne) End If End If End Sub Private Function HentVærdi(målKolonne) If Range("B4") <> "" Then Range("B4").Select
Rem er tallet hentet fra B4 og er det negativ - indsæt positivt hvis kolonne D, G, J, M If Selection.Value < 0 Then If målKolonne = 4 Or målKolonne = 7 Or målKolonne = 10 Or målKolonne = 13 Then HentVærdi = Selection.Value * -1 Exit Function End If End If Else Range("B19").Select End If HentVærdi = Selection.Value End Function
Hej supertekst. Lidt mere forklaring. Kolonnerne D,G,J og M er som jeg fortalte positive tal. Kolonnerne E,H,K og N er negative tal.
I cellerne D,G,J og M 36,lægges alle de positive tal sammen, og i cellerne E,H,K og N 36 lægges alle de negative tal sammen.
I cellerne D38 trækkes E36 fra D36, i G38 H36 - G36 osv. Den sidste udregning fejler nu. Alle udregningerne blir positive.
Tallet i B19 er altid positiv. Det lægges altid i 3 "negative" celler, og skal i den sidst "positive" celle ganges med 3. Eks. B19 = 2kr. Jeg klikker i celle E5, H5, og K5 så der står 2kr. i disse celler. I celle M5 skal der så stå 6kr. Kan man forstå det? Ib
Læs venligst bemærkningen vedr. "B19" - fuld automatik - men måske er det ikke ok?
Rem Version 2-II Rem ============ Private Sub Worksheet_SelectionChange(ByVal Target As Range) Rem Klikkes der i et af områderne Dim kolonne, række kolonne = Target.Column række = Target.Row
If kolonne >= 4 And kolonne <= 14 And kolonne <> 6 And kolonne <> 9 And kolonne <> 12 Then If række >= 4 And række <= 33 Then Target.Value = HentVærdi(kolonne)
Rem Vælg E som første kolonne v/"B19" - så resten af sig selv ........ If Range("B19") <> "" And kolonne = 5 Then Range("H" & CStr(række)) = Target.Value Range("K" & CStr(række)) = Target.Value Range("M" & CStr(række)).Value = Target.Value * 3 End If End If End If End Sub Private Function HentVærdi(målKolonne) If Range("B4") <> "" Then Range("B4").Select
Rem er tallet hentet fra B4 og er det negativ - indsæt positivt hvis kolonne D, G, J, M If Selection.Value < 0 Then If målKolonne = 4 Or målKolonne = 7 Or målKolonne = 10 Or målKolonne = 13 Then HentVærdi = Selection.Value * -1 Exit Function End If End If Else Range("B19").Select End If HentVærdi = Selection.Value End Function
Supertekst. Det virker, men kunne man ikke lave det sådan, at man starter i den celle som skal være "positiv", og det tal er så 3 gange så stor som B19, og alle de 3 "negative" celler sættes til 1/3 (=B19) hver? Det ville være helt perfekt. Det med de forkerte udregniger i cellerne 36 har jeg klaret. Ib
Rem Version 3 Rem ========= Private Sub Worksheet_SelectionChange(ByVal Target As Range) Rem Klikkes der i et af områderne Dim kolonne, række kolonne = Target.Column række = Target.Row
If kolonne >= 4 And kolonne <= 14 And kolonne <> 6 And kolonne <> 9 And kolonne <> 12 Then If række >= 4 And række <= 33 Then Target.Value = HentVærdi(kolonne)
Rem Klik i kolonne M v/"B19" - så sker resten af sig selv ........ If Range("B19") <> "" And kolonne = 13 Then Range("M" & CStr(række)).Value = Range("B19").Value * 3 Range("E" & CStr(række)) = Range("B19").Value Range("H" & CStr(række)) = Range("B19").Value Range("K" & CStr(række)) = Range("B19").Value End If End If End If End Sub Private Function HentVærdi(målKolonne) If Range("B4") <> "" Then Range("B4").Select
Rem er tallet hentet fra B4 og er det negativ - indsæt positivt hvis kolonne D, G, J, M If Selection.Value < 0 Then If målKolonne = 4 Or målKolonne = 7 Or målKolonne = 10 Or målKolonne = 13 Then HentVærdi = Selection.Value * -1 Exit Function End If End If Else Range("B19").Select End If HentVærdi = Selection.Value End Function
Hej. Nej det skulle være lige som den du har lavet. 6 i M og 2 i E,H og K 6 i J og 2 i E,H og N 6 i G og 2 i E,K og N 6 i D og 2 i H,K og N Jeg tror ikke der er flere muligheder. Ib
Rem Version 3-1 Rem =========== Dim flag As Boolean Private Sub Worksheet_SelectionChange(ByVal Target As Range) Rem Klikkes der i et af områderne Dim kolonne, række If flag = False Then kolonne = Target.Column række = Target.Row
If kolonne >= 4 And kolonne <= 14 And kolonne <> 6 And kolonne <> 9 And kolonne <> 12 Then If række >= 4 And række <= 33 Then Target.Value = HentVærdi(kolonne)
Rem Hvis B19 anvendes - Mål-celle (Target) -> 3 * B19 - B19 i "øvrige" If Range("B19") <> "" Then If kolonne = 4 Then 'D sætVærdi "H", "K", "N", Target Else If kolonne = 7 Then 'G sætVærdi "E", "K", "N", Target Else If kolonne = 10 Then 'J sætVærdi "E", "H", "N", Target Else If kolonne = 13 Then 'M sætVærdi "E", "H", "K", Target End If End If End If End If End If End If End If End If flag = False End Sub Private Sub sætVærdi(k1, k2, k3, t As Range) flag = True Range(k1 & CStr(t.Row)) = Range("B19") Range(k2 & CStr(t.Row)) = Range("B19") Range(k3 & CStr(t.Row)) = Range("B19") t.Value = Range("B19") * 3 End Sub Private Function HentVærdi(målKolonne) flag = True If Range("B4") <> "" Then Range("B4").Select
Rem er tallet hentet fra B4 og er det negativ - indsæt positivt hvis kolonne D, G, J, M If Selection.Value < 0 Then If målKolonne = 4 Or målKolonne = 7 Or målKolonne = 10 Or målKolonne = 13 Then HentVærdi = Selection.Value * -1 Exit Function End If End If Else Range("B19").Select End If HentVærdi = Selection.Value End Function
Hej supertekst. Jeg er forbavset. Det virker næsten perfekt. Den gør lige det jeg vil have den til, men når jeg trykker på min reset knap, som nulstiller B4 og B19, kommer der en fejlbox op, hvori der står. Only Comments May Appear After End Sub, End Function, or End Properety. Er det noget du lige kan gennemskue. Du har brugt så meget tid på dette spørgsmål, at jeg har lyst til at give dig point og lukke dette spm. for derefter at oprette et nyt hvor jeg vil spørge, om jeg må sende et kopi af arket til dig. Er det ok med dig? Ib
Hej supertekst. Du havde ret. Dim flag As Boolean stod uden for "Sub-start". Det er rettet, og nu virker den helt perfekt. Den har dog en lille skønhedsfejl, men jeg lukker så du kan få dine velfortjente points. Jeg åbner et nyt spm. og håber jeg kan få hjælp til "skønhedspletten" også. Ib
Synes godt om
Ny brugerNybegynder
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.