Avatar billede sjssjdk Mester
19. juli 2016 - 08:11 Der er 7 kommentarer og
1 løsning

Macro - Flere privat sub?

Hej.

Er det muligt at have flere privat sub i samme ark?

Hvis ikke.
Hvordan bygger jeg lettest flere sub sammen?
Det er en relativ let macro:
If [A1] = "1" Then [B1] = "1" Else [B1] = "2"
If [A2] = "1" Then [B2] = "1" Else [B2] = "2"

Som skal udbygges med flere funktioner.

Hvordan gøres det lettest?

På forhånd tak.
Søren
Avatar billede Slettet bruger
19. juli 2016 - 08:21 #1
Du kan bare indsætte denne formel i din kolonne B (i B1):
=IF($A1=1;1;2)

og træk formlen ned så langt som det nu skulle være.

Men ja - man kan ellers lave så mange subs som man kan forestille sig - de skal bare kaldes
Avatar billede sjssjdk Mester
19. juli 2016 - 08:46 #2
Hej Thomas.

Du skal være en macro, da de celler der skal indtastes data i er celler med dropdown derfor er det den eneste løsning.

hvordan vil du skrive en private sub?

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If [A1] = "1" Then [B1] = "1" Else [B1] = "2"

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If [A2] = "1" Then [B2] = "1" Else [B2] = "2"

End Sub
Avatar billede kabbak Professor
19. juli 2016 - 08:56 #3
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then
        If Target = "1" Then Target.Offset(0, 1) = "1" Else Target.Offset(0, 1) = "2"
    End If
End Sub

koden gælder hele kolonne A
Avatar billede kabbak Professor
19. juli 2016 - 08:57 #4
Hvis det er tal i A kolonnen skal du rette til dette

If Target = 1 Then Target.Offset(0, 1) = 1 Else Target.Offset(0, 1) = 2
Avatar billede sjssjdk Mester
19. juli 2016 - 08:59 #5
Hvordan hvis det kun er et afgrtænset stykke og ikke rækken ved siden af?

Så A1 = 1 Så bliver U29=2 Eller tekst for den sags skyld?
Avatar billede kabbak Professor
19. juli 2016 - 09:13 #6
Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Intersect(Target, Range("A1:A30")) Is Nothing Then
      '  If Target = "1" Then Target.Offset(0, 1) = "1" Else Target.Offset(0, 1) = "2"
        If Target = "1" Then Range("U" & Target.Offset(28, 0).Row) = "1" Else Range("U" & Target.Offset(28, 0).Row) = "2"
    End If
End Sub
Avatar billede sjssjdk Mester
19. juli 2016 - 09:26 #7
Det virker som det skal.

Er det muligt at gentage en privat sub?
Så man ser i B1:B10 om værdinen er A eller B  og så skriver noget i T som den overfor?
Avatar billede kabbak Professor
19. juli 2016 - 12:36 #8
Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Intersect(Target, Range("A1:A30")) Is Nothing Then
      '  If Target = "1" Then Target.Offset(0, 1) = "1" Else Target.Offset(0, 1) = "2"
        If Target = "1" Then Range("U" & Target.Offset(28, 0).Row) = "1" Else Range("U" & Target.Offset(28, 0).Row) = "2"
    End If

If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
      '  If Target = "1" Then Target.Offset(0, 1) = "1" Else Target.Offset(0, 1) = "2"
        If Target = "1" Then Range("T" & Target.Offset(28, 0).Row) = "1" Else Range("T" & Target.Offset(28, 0).Row) = "2"
    End If
End Sub
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

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