Avatar billede flashit Nybegynder
09. januar 2004 - 13:32 Der er 13 kommentarer og
1 løsning

hjælp til onchange

Hej E.

Jeg har en kode, og den vil jeg gerne have til at køre hver gang en cellen i Excel har værdien 1.

Har i nogel forslag.

det skal lige siges at dataen 1 eller o kommer fra et andet program.
Avatar billede martin_moth Mester
09. januar 2004 - 13:50 #1
2 sek...
Avatar billede martin_moth Mester
09. januar 2004 - 13:54 #2
Avatar billede martin_moth Mester
09. januar 2004 - 13:54 #3
Går ud fra at du taler om VBA til Excel og ikke VB...
Avatar billede flashit Nybegynder
09. januar 2004 - 13:57 #4
jep(vba), kigger lige
Avatar billede flashit Nybegynder
09. januar 2004 - 14:13 #5
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If A1 = "1" Then
    MsgBox "Koden køre"
Else
MsgBox "Her skal der ikke ske noget"
End If

End If
End Sub
 
Men If A1 = "1" Then bliver aldrig udført ?
Avatar billede martin_moth Mester
09. januar 2004 - 14:18 #6
Hvis du ændrer i celle A1 bliver koden udført.

Men du kan da ikke bare skrive

  if A1 = 1

VB vil opfatte A1 som en tom variabel ved navn A1...
Avatar billede flashit Nybegynder
09. januar 2004 - 14:21 #7
DOOOOOOOOOH, det er da rigtigt :-(
Men hvordan får jeg så koden til at finde ud om der står 1 eller ej i a1
Avatar billede flashit Nybegynder
09. januar 2004 - 14:24 #8
Sorry, man skal lige huske og tænke selv.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If Range("A1") = "1" Then
MsgBox "der står 1 i cellen"
Else
MsgBox "der står ikke 1 i cellen"
End If

End If
End Sub

Tak for hjælpen (igen igen) :-)
Avatar billede martin_moth Mester
09. januar 2004 - 14:25 #9
Lidt fantasi, måske?

Hvad med

If Target.Value = "1"
If Target.FormulaRC = "1"
If Val(Target) = 1
If Val(Target.FormulaRC) = 1
If Range(Target.Address).Value = "1"

Osv. Du kan meget lettere gætte end jeg kan, for din VBA-editor fortæller dig hvad du kan skrive og hvad du ikke kan - jeg gætter bare
Avatar billede martin_moth Mester
09. januar 2004 - 14:25 #10
Det svar du selv har givet duer KUN for celle A1 - det er nok ikke så smart, eller?

Tak for points
Avatar billede flashit Nybegynder
09. januar 2004 - 14:35 #11
Jo da det kun er en celle som skal køre en kode, og i dette eks valgte jeg så bare A1.

Her er hvad jeg kom frem til:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
    If Range("A1") = "1" And Range("c1") > "0" Then
        'Do While Range("c1") > 0
        Dim AntalKasser As Integer
        AntalKasser = Range("c1")
        Range("c1") = AntalKasser - 1
   
    Else
     
    End If

End If
End Sub

Det virker bare perfekt :-)
Avatar billede martin_moth Mester
09. januar 2004 - 14:38 #12
bare det virker for dig - troede der skulle ske noget bestemt når der blevet skrevet 1 i en VILKÅRLIG celle. Derfor :o)
Avatar billede flashit Nybegynder
12. januar 2004 - 15:13 #13
Hej Martin

Jeg har lige fundet ud af det ikke virker hvis der i A1 står =B2.
Kan du en metode som kan virke på dette. Koden virker nemlig fint ellers.
Avatar billede flashit Nybegynder
12. januar 2004 - 15:44 #14
Sorry, det var jo det du havde linket til.

Bare glem det ;-)

Private Sub Worksheet_Calculate()
    If Range("A1") = 1 And Range("c1") > 0 Then
        'Do While Range("c1") > 0
        Dim AntalKasser As Integer
        AntalKasser = Range("c1")
        Range("c1") = AntalKasser - 1
        MsgBox "nu køre koden"
    Else
    MsgBox "der står ikke 1 i cellen"
    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
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