Avatar billede ransborg Juniormester
23. november 2009 - 19:45 Der er 10 kommentarer

VBA - hvordan slår jeg to macroer sammen?

Hejsa,

Jeg har det problem i et af mine ark; - at jeg gerne vil have to Worksheet_Change macroer ind:

I mit ark, vil jeg gerne have de to macroer her:

a)
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim r As Range
  If Target.Count > 1 Then End Sub
  If Not Intersect(Target, Range("E:E")) Is Nothing Then
    Application.EnableEvents = False
    Set r = Sheets("AllocationTypes").Range("A:A").Find(What:=Target.Value)
    If Not r Is Nothing Then
        r.Offset(0, 3).Resize(1, 49).Copy Destination:=Target.Offset(0, 2)
    End If
     
    Application.EnableEvents = True
  End If
End Sub

b)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("BD24:BD321")) Is Nothing Then Exit Sub
For Each c In Range("BD24:BD321")
Range("B" & c.row & ":BC" & c.row).Interior.ColorIndex = 0
If c.Value = "Internal" Then Range("B" & c.row & ":BC" & c.row).Interior.ColorIndex = 1
If c.Value = "p" Then Range("B" & c.row & ":BC" & c.row).Interior.ColorIndex = 6
If c.Value = "u" Then Range("B" & c.row & ":BC" & c.row).Interior.ColorIndex = 46
Next
Range("A1").Select
End Sub

Hvordan slår jeg det sammen til en macro, fordi jeg kan vist kun have et Worksheet_Change i mit ark :-(

Kan I hjælpe mig?

Pft

Mvh
Ransborg
Avatar billede tjacob Juniormester
23. november 2009 - 20:06 #1
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range
    If Target.Count < 2 Then
        If Not Intersect(Target, Range("E:E")) Is Nothing Then
            Application.EnableEvents = False
            Set r = Sheets("AllocationTypes").Range("A:A").Find(What:=Target.Value)
            If Not r Is Nothing Then
                r.Offset(0, 3).Resize(1, 49).Copy Destination:=Target.Offset(0, 2)
            End If
            Application.EnableEvents = True
        End If
    End If
    If Intersect(Target, Range("BD24:BD321")) Is Nothing Then Exit Sub
    For Each c In Range("BD24:BD321")
        Range("B" & c.Row & ":BC" & c.Row).Interior.ColorIndex = 0
        If c.Value = "Internal" Then Range("B" & c.Row & ":BC" & c.Row).Interior.ColorIndex = 1
        If c.Value = "p" Then Range("B" & c.Row & ":BC" & c.Row).Interior.ColorIndex = 6
        If c.Value = "u" Then Range("B" & c.Row & ":BC" & c.Row).Interior.ColorIndex = 46
    Next
    Range("A1").Select

End Sub
Avatar billede ransborg Juniormester
23. november 2009 - 20:21 #2
Hej tjacob,

Tak for dit input - jeg har ikke lige prøvet det endnu :-) Jeg har lige et spørgsmål til dig.

Du skriver:  If Target.Count < 2 Then
Hvor jeg havde:  If Target.Count > 1 Then

Hvor kommer den forskel fra?

Tak igen

Mvh
Claus
Avatar billede tjacob Juniormester
23. november 2009 - 20:27 #3
Du havde før: hvis count>1 så exit sub -skip kode

Nu er det omvendt: hvis count<2 så kør kode
Avatar billede tjacob Juniormester
23. november 2009 - 20:28 #4
Den anden sub skal jo også have chancen......
Avatar billede ransborg Juniormester
23. november 2009 - 21:15 #5
Øvsus, jeg kan ikke få den til at virke :-(
Avatar billede ransborg Juniormester
08. juli 2010 - 12:37 #6
skriver du lige et svar :-)
Avatar billede newbieatphp Nybegynder
08. juli 2010 - 15:13 #7
hvis du stadig mangler hjælp til den, så prøv denne:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim r As Range
  If Target.Count > 1 Then
    If Intersect(Target, Range("BD24:BD321")) Is Nothing Then Exit Sub
For Each c In Range("BD24:BD321")
Range("B" & c.row & ":BC" & c.row).Interior.ColorIndex = 0
If c.Value = "Internal" Then Range("B" & c.row & ":BC" & c.row).Interior.ColorIndex = 1
If c.Value = "p" Then Range("B" & c.row & ":BC" & c.row).Interior.ColorIndex = 6
If c.Value = "u" Then Range("B" & c.row & ":BC" & c.row).Interior.ColorIndex = 46
Next
Range("A1").Select
end if

  If Not Intersect(Target, Range("E:E")) Is Nothing Then
    Application.EnableEvents = False
    Set r = Sheets("AllocationTypes").Range("A:A").Find(What:=Target.Value)
    If Not r Is Nothing Then
        r.Offset(0, 3).Resize(1, 49).Copy Destination:=Target.Offset(0, 2)
    End If
     
    Application.EnableEvents = True
  End If
End Sub
Avatar billede ransborg Juniormester
09. juli 2010 - 14:44 #8
Jeg synes, det er en super løsning :-)
Avatar billede ransborg Juniormester
24. september 2011 - 11:48 #9
Smid lige et svar
Avatar billede newbieatphp Nybegynder
24. september 2011 - 14:24 #10
alright ... her er et svar
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