Avatar billede kgndksv Juniormester
06. november 2008 - 17:02 Der er 9 kommentarer og
1 løsning

makro udløses automastisk

Kan jeg få en makro til at køre automastisk? Eksempelvis ved at indtaste en værdi i en celle og når man så forlader cellen udløses makroen? lidt ala en datavalidering?
Avatar billede tjp Mester
06. november 2008 - 20:49 #1
Mener du noget a la:

Private Sub Worksheet_Change(ByVal Target As Range)
    MsgBox Target.Text
End Sub
Avatar billede kgndksv Juniormester
07. november 2008 - 00:48 #2
Det ser ud til at være lige det jeg skal bruge... :-)
Men jeg er sku ikke skarp nok i VBA endnu, kan du forklare mig hvad det er koden gør  hvad betyder Works...(ByVal target as range) og så target.text?

Der hvor jeg vil bruge det er i forbindelse med noget ala denne kode:

Sub indtast1()
Dim indtast1 As String

indtast1 = InputBox("skriv en kommentar")

Range("O5:S7").Value = indtast1

End Sub

Sub givkarakter()
If Range("M5") = "X" Then
Call indtast1
End If

End Sub

Altså lige så snart der er valgt en værdi i "M5" skulle makroen gerne køre, hvordan skal jg bruge dit forslag?
Avatar billede kgndksv Juniormester
07. november 2008 - 01:16 #3
Burde dette virke??

Sub indtast1()
Dim indtast1 As String

indtast1 = InputBox("skriv en kommentar")
Range("O5:S7").Value = indtast1

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
  Target.Range("M5") = Target.Range
If Target.Value = "X" Then
  Call indtast1
End If
End Sub
Avatar billede kgndksv Juniormester
07. november 2008 - 01:19 #4
eller det var vel egentlig besværligt, sådan her så?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim indtast1 As String 

Target.Range("M5") = Target.Range

If Target.Value = "X" Then
  indtast1 = InputBox("skriv en kommentar")
  Range("O5:S7").Value = indtast1
End If
End Sub
Avatar billede tjp Mester
07. november 2008 - 01:30 #5
Gætter på at du mener:  ;-)

Sub indtast1()
    Dim indtast1 As String
    indtast1 = InputBox("skriv en kommentar")
    Range("O5:S7").Value = indtast1
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If "$M$5" = Target.Address Then
        If Target.Value = "X" Then
            Call indtast1
        End If
    End If
End Sub
Avatar billede kgndksv Juniormester
07. november 2008 - 02:17 #6
Ja:-) Men, Det virker ikke.

Men jeg kan få denne til at virke:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Target = Range("A1")
   
    If Target.Value > 100 Then
      Range("B3").Interior.ColorIndex = 3
    Else
      Range("B3").Interior.ColorIndex = xlColorIndexNone
    End If

End Sub

Og så troede jeg at jeg lige kunne klippe/klistre lidt, men det virker ikke...

Sub indtast1()
    Dim indtast1 As String
    indtast1 = InputBox("skriv en kommentar")
    Range("O5:S7").Value = indtast1
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If "$M$5" = Target.Address Then
        If Target.Value = "X" Then
            Call indtast1
        End If
    End If
End Sub
Avatar billede kgndksv Juniormester
07. november 2008 - 02:21 #7
Det var nu lige denne jeg prøvede at klippe/klistre sammen... :-) er ved at være træt...



Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Dim indtast1 As String
  Target = Range("M5")
   
    If Target.Value = "X" Then
  indtast1 = InputBox("skriv en kommentar")
  Range("O5:S7").Value = indtast1
    End If

End Sub
Avatar billede tjp Mester
07. november 2008 - 11:01 #8
Hvad er det lige der ikke virker? Og hvorfor linjen 'Target = Range("M5")'?

Rutinen Worksheet_Change skal være i koden for ark-objektet, fx 'Ark1(Ark1)' og kaldes automatisk, når der sker en ændring på arket. Target repræsenterer det område der er blevet ændret, og er sat ved kaldet.

Tjekket 'If "$M$5" = Target.Address Then...' sikre at det er cellen M5, der er blevet ændret.
Man kan evt også tjekke at der kun er ændret én celle og at den har en værdi med linjen 'If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub'
Avatar billede kgndksv Juniormester
07. november 2008 - 12:42 #9
Arh... Nu forstår jeg det! Og nu tror jeg at jeg kan få det til at virke:-) Sender du et svar?
Avatar billede tjp Mester
07. november 2008 - 13:02 #10
Herligt! :-)
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