Avatar billede prinsib Seniormester
30. september 2009 - 23:50 Der er 7 kommentarer og
1 løsning

Udvidelse af Makro.

Hej supertekst.
Jeg har en ny udfordring hvis du har tid og lyst.
Den sidste formel du lavede til mig (i spm. 887850) virkede helt perfekt, men jeg har en udvidelse til den, og har derfor ændret lidt i den.
Før testede vi på B19 men det er nu ændret til B20, og det er så den vi tester på nu.
Samtidig har jeg sat et nyt punkt ind som hedder B18.
Forklaring.:
Hvis B18 ="x" bliver tallet i B20 negativt, og resultatet skal derfor se sådan her ud.
6 i E og 2 i G, J og M
6 i H og 2 i J, M og D
6 i K og 2 i M, D og G
6 i N og 2 i D, G og J
Jeg håber du forstår hvad jeg mener elles må du sige til, eller jeg kan sende arket til dig.
Ib
Avatar billede supertekst Ekspert
30. september 2009 - 23:57 #1
Hej Ib

Det er set - vender tilbage senere...
Avatar billede prinsib Seniormester
08. oktober 2009 - 20:23 #2
Hej supertekst.
Har du helt opgivet mig, eller er du bare blevet ramt af for meget arbejde.
Ib
Avatar billede supertekst Ekspert
08. oktober 2009 - 20:53 #3
Hej

Du er ikke opgivet - men har lige et par kundeprojekter, der skal gøres afleveres - et fredag & et mandag - så skal jeg se på dit udspil..
Avatar billede prinsib Seniormester
08. oktober 2009 - 22:10 #4
Hej
Det er helt okay. Det arbejde tar meget af ens tid.
Ib
Avatar billede prinsib Seniormester
20. oktober 2009 - 15:05 #5
Hej supertekst
Jeg har siddet og leget med den sidste kode du lavede til mig, og har byttet rundt på lidt forskelligt.
Det virker perfekt hvis jeg skifter den kode du kalder Version 3-1 ud, og sætter min kode som jeg har kaldt Version 3-2 ind i stedet.
Jeg kan desværre ikke finde ud af at sætte det hele sammen. (Begge koder på en gang)
Det skal være sådan, at når B18 er <>"" så skal min kode (Version 3-2) fungere, og ikke før.
Er det ikke blevet lidt nemmere nu?
Ib
Koden ser nu sådan her ud..

Rem Version 3-2
Rem ===========
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim flag As Boolean
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 B20 anvendes - Mål-celle (Target) -> 3 * B20 - B20 i "øvrige"
                If Range("B20") <> "" Then
                    If kolonne = 5 Then                            'E
                        sætVærdi "G", "J", "M", Target
                    Else
                        If kolonne = 8 Then                        'H
                            sætVærdi "J", "M", "D", Target
                        Else
                            If kolonne = 11 Then                    'K
                                sætVærdi "M", "D", "G", Target
                            Else
                                If kolonne = 14 Then                'N
                                    sætVærdi "D", "G", "J", 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("B20")
    Range(k2 & CStr(t.Row)) = Range("B20")
    Range(k3 & CStr(t.Row)) = Range("B20")
    t.Value = Range("B20") * 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("B20").Select
    End If
    HentVærdi = Selection.Value
End Function
Avatar billede prinsib Seniormester
22. oktober 2009 - 11:24 #6
Hej supertekst.
Har du stadigvæk travlt?
Har du set/forstået mit sidste indlæg.
Ib
Avatar billede supertekst Ekspert
28. oktober 2009 - 16:52 #7
Ja - resten af året, hvis ellers en stor opgave har fået grønt lys nordfra i dag.

Men hovedet skal jo også bruges til noget andet - så jeg skal se på dit indlæg af 20/10 - som jeg ikke har set.
Avatar billede supertekst Ekspert
31. oktober 2009 - 10:37 #8
Rem Version 4 - 31-10-2009
Rem ======================
Dim flag As Boolean
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = "$A$1" Then
        If Target.Interior.ColorIndex = xlColorIndexNone Then
            Target.Interior.ColorIndex = 3
        Else
            Target.Interior.ColorIndex = xlColorIndexNone
        End If
       
        Cancel = True
    End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Rem Klikkes der i et af områderne
Dim kolonne, række
If Cells(1, 1).Interior.ColorIndex = xlColorIndexNone Then
    If flag = False Then
        If Range("B18") <> "" Then
            B18EJBLANK Target
        Else
            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 * B20 - B20 i "øvrige"
                    If Range("B20") <> "" 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
    End If
   
    flag = False
End If
End Sub
Rem Version 3-2
Rem ===========
Private Sub B18EJBLANK(Target As Range)
'Dim flag As Boolean
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 B20 anvendes - Mål-celle (Target) -> 3 * B20 - B20 i "øvrige"
                If Range("B20") <> "" Then
                    If kolonne = 5 Then                            'E
                        sætVærdi "G", "J", "M", Target
                        If Range("B20").Value < 0 And Range("E" & CStr(række)).Value < 0 Then
                            checkPositiv "G", CStr(række)
                            checkPositiv "J", CStr(række)
                            checkPositiv "M", CStr(række)
                        End If
                    Else
                        If kolonne = 8 Then                        'H
                            sætVærdi "J", "M", "D", Target
                            If Range("B20").Value < 0 And Range("H" & CStr(række)).Value < 0 Then
                                checkPositiv "J", CStr(række)
                                checkPositiv "M", CStr(række)
                                checkPositiv "D", CStr(række)
                            End If
                        Else
                            If kolonne = 11 Then                    'K
                                sætVærdi "M", "D", "G", Target
                                If Range("B20").Value < 0 And Range("K" & CStr(række)).Value < 0 Then
                                    checkPositiv "M", CStr(række)
                                    checkPositiv "D", CStr(række)
                                    checkPositiv "G", CStr(række)
                                End If
                            Else
                                If kolonne = 14 Then                'N
                                    sætVærdi "D", "G", "J", Target
                                    If Range("B20").Value < 0 And Range("N" & CStr(række)).Value < 0 Then
                                        checkPositiv "D", CStr(række)
                                        checkPositiv "G", CStr(række)
                                        checkPositiv "J", CStr(række)
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
End Sub
Private Sub checkPositiv(kol, ræk)
    If Range(kol & ræk).Value < 0 Then
        Range(kol & ræk).Value = Range(kol & ræk).Value * -1
    End If
End Sub
Private Sub sætVærdi(k1, k2, k3, t As Range)
    flag = True
    Range(k1 & CStr(t.Row)) = Range("B20")
    Range(k2 & CStr(t.Row)) = Range("B20")
    Range(k3 & CStr(t.Row)) = Range("B20")
    t.Value = Range("B20") * 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("B20").Select
    End If
    HentVærdi = Selection.Value
End Function
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