Avatar billede lstevns Mester
31. marts 2017 - 10:09 Der er 9 kommentarer og
2 løsninger

Makro der skal aktiveres når et felt bliver anvendt med en defineret tekst

Hej

Jeg er ved at opbygge et beregnings ark, hvori at når brugerne vælger en defineret tekst i et rullegardin, i kolonne AI det kan gøres flere felter i kolonne AI og flere gange. Så skal der aktives en makro som ser sådan ud:

Private Sub Workbook_Activate()
   
    Dim RK As String
    RK = Range("C17").End(xlDown).Row
         
    If Range("AI17:AI" & RK) = "Z-tillæg" Then
      Call EngangstillægSkriv 
   
    End If
End Sub

Men den virker ikke hvorfor, hvad gør jeg forkert?

/Lena
Avatar billede Rune1983 Ekspert
31. marts 2017 - 10:23 #1
Nu koder jeg ikke selv den slags. Men fx. i PHP holder jeg mig fra at bruge æøå i funktionsnavne og den slags. Kan se du har "EngangstillægSkriv" med æ. Kan det give problemer?
Avatar billede store-morten Ekspert
31. marts 2017 - 11:15 #2
Prøv at udskifte:
Private Sub Workbook_Activate()

Med:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Avatar billede lstevns Mester
31. marts 2017 - 11:31 #3
Så kommer den med denne fejl hver gang:

Run-time error '13':
Type mismatch

Kan jeg fortælle den Else at den intet skal gøre?? hvis ja hvordan?
Avatar billede store-morten Ekspert
31. marts 2017 - 11:55 #4
Denne kigger på hele kolonne: AI

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column = 35 Then
        If Target.Value = "Z-tillæg" Then
          MsgBox Target.Address & " = " & Target.Value
        Else
          MsgBox Target.Address & " = " & Target.Value
        End If
    End If
End Sub
Avatar billede store-morten Ekspert
31. marts 2017 - 13:13 #5
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim RK As String
    RK = Range("C17").End(xlDown).Row
        If Not Intersect(Target, Range("AI17:AI" & RK)) Is Nothing Then
        If Target.Value = "Z-tillæg" Then
          'Call EngangstillægSkriv
        Else
         
        End If
    End If
End Sub
Avatar billede lstevns Mester
31. marts 2017 - 13:16 #6
Tak det virker :-)
Avatar billede jens48 Ekspert
31. marts 2017 - 13:22 #7
Prøv med denne. Den aktiverer kun EngangstillægSkriv hvis der i kolonne C også står noget i samme række som den aktiverede celle i kolonne AI:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RK As String
    RK = Range("C17").End(xlDown).Row
If Not Intersect(Target, Range("AI17:AI" & RK)) Is Nothing Then
    If Target = "Z-tillæg" Then
      Call EngangstillægSkriv
    End If
End If
End Sub
Avatar billede lstevns Mester
31. marts 2017 - 13:43 #8
Endnu bedre, tusind tak :-)
Avatar billede lstevns Mester
10. april 2017 - 10:48 #9
Hej igen

Jeg ved godt at jeg fik løst mit problem, men nu vil jeg lave en makro i en anden fane  som skal gå igang hvis en celle er større end 0.

Jeg har prøvet med denne makro, men den virker ikke hvad gør jeg forkert?

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("D5")) Is Nothing Then
    If Target > 0 Then
   
        MsgBox ("Test")
     
    End If
End If

End Sub

Hvis cellen er 0 skal den intet gøre kun hvis det er større.

/Lena
Avatar billede store-morten Ekspert
10. april 2017 - 14:15 #10
Er der en formel i D5?
Avatar billede lstevns Mester
12. april 2017 - 08:02 #11
Hej,

Nej D5 er ikke en formel. Men det lykkes mig at lave programmeringen så den virker :-)
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
Kurser inden for grundlæggende programmering

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