30. september 2009 - 23:50Der 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
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.
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
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
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.