Avatar billede tawiket Nybegynder
10. januar 2011 - 10:15 Der er 22 kommentarer og
1 løsning

excel funktions værdi i vba

hej jeg har et lille problem, jeg vil gerne tjekke for om en bestemt celle er lig 20 kan jeg også godt hvis jeg skriver 20 i cellen men jeg bruger en funktion(hendvisning) (=AB) til at hente hvad der skal stå i feltet.

hvordan får jeg denne funktions resultat ind i vba som værdi??

på forhånd tak
Avatar billede newbieatphp Nybegynder
10. januar 2011 - 11:57 #1
range("AB2").value


fx.
dim a as integer 'skriv string istedet for integer, hvis værdi af cellen ikke er et tal

a = range("AB2").value

så bliver værdien fra celle AB2 gemt i en variable a
Avatar billede tawiket Nybegynder
10. januar 2011 - 15:31 #2
ja var også det jeg mente men der sker intet, sætter min formel ind herunder så er det lidt nemmere at se.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$J$4" Then
    If range("J4") > 0 Then
      CheckBox1.Visible = True
    Else
      CheckBox1.Visible = False
    End If
End If

End Sub

og J4 er en excel formel som giver et reseultat på 0 eller 20
hvis jeg skriver 20 i J4 virker det, men når det er en excel formel vil den ikke!!???
Avatar billede newbieatphp Nybegynder
10. januar 2011 - 15:43 #3
du mangler at skrive .value

således kommer det til at hedde:

If Target.Address = "$J$4" Then
    If range("J4").Value > 0 Then
      CheckBox1.Visible = True
    Else
      CheckBox1.Visible = False
    End If
End If

End Sub
Avatar billede tawiket Nybegynder
10. januar 2011 - 15:54 #4
hehe kan godt være det bare er mit excel der er underligt men der sker intet.

kan jeg have glemt noget da jeg satte denne funktion ind
Avatar billede newbieatphp Nybegynder
10. januar 2011 - 16:02 #5
har du sat koden ind under det ark som den skal holde øje med?
Avatar billede store-morten Ekspert
10. januar 2011 - 19:48 #6
If Target.Address = "$J$4" Then
Så reagere den kun på en ændring i cellen J4 (ikke på ændring i henvisning =AB "beregning")

Private Sub Worksheet_Change(ByVal Target As Range)

    If Range("J4") > 0 Then
      CheckBox1.Visible = True
    Else
      CheckBox1.Visible = False
    End If

End Sub

Hvis der i celle J4 står =A1+B1
Og den kun skal reagere på en ændring i celle A1 eller B1
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Or Target.Address = "$B$1" Then
    If Range("J4") > 0 Then
      CheckBox1.Visible = True
    Else
      CheckBox1.Visible = False
    End If
End If

End Sub
Avatar billede tawiket Nybegynder
11. januar 2011 - 08:39 #7
nej den er god nok den skal reagere på ændring i celle J4 og mit problem lige nu er at hvis jeg når jeg står på funktionen trykker run, så kommer den op med Makro vindue. kan ikke finde ud at hvorfor.

alt er sat ind under ark1.

hele koden ser således ud:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$N$4" Then
        If Sheets("Formler").Range("S3").Value = 0 Then
          CheckBox1.Visible = False
        Else
          CheckBox1.Visible = True
        End If
    End If
End Sub

Private Sub CheckBox1_Click()
  If CheckBox1.Value = True Then
    Sheets("Formler").Range("G3") = True
  Else
    Sheets("Formler").Range("G3") = False
  End If
End Sub

Private Sub CheckBox2_Click()
  If CheckBox2.Value = True Then
    Sheets("Formler").Range("G4") = True
  Else
    Sheets("Formler").Range("G4") = False
  End If
End Sub

Private Sub CheckBox3_Click()
  If CheckBox3.Value = True Then
    Sheets("Formler").Range("G5") = True
  Else
    Sheets("Formler").Range("G5") = False
  End If
End Sub

Private Sub CheckBox4_Click()
  If CheckBox4.Value = True Then
    Cells(10, 15) = True
  Else
    Cells(10, 15) = False
  End If
End Sub
Avatar billede store-morten Ekspert
11. januar 2011 - 12:11 #8
"nej den er god nok den skal reagere på ændring i celle J4"

If Target.Address = "$N$4" Then
reagere på ændring i celle N4?
Avatar billede tawiket Nybegynder
11. januar 2011 - 12:26 #9
ja den vil godt hvis jeg fysisk skriver tallet men hvis det er en funktion med resultat =0 så sker der intet.

men hvis jeg står på funktionen og trykker run, åbnes et vindue til at oprette makro i, istedet for at køre som hvis jeg gør det i allle de andre.
Avatar billede store-morten Ekspert
11. januar 2011 - 12:50 #10
Private Sub Worksheet_Change(ByVal Target As Range)
Reagere på ændring i arket

    If Target.Address = "$N$4" Then
Reagere på ændring i celle N4

        If Sheets("Formler").Range("S3").Value = 0 Then
Kikker på celle S3 og hvis værdien er 0 så skjules CheckBox1:
          CheckBox1.Visible = False

        Else
Ellers: celle S3 og hvis værdien er andet end 0 så vises CheckBox1
          CheckBox1.Visible = True
        End If
    End If
End Sub

Hvis der i celler S3 står 0
Og jeg ændre i celler N4 skjules CheckBox1
Hvis der i celler S3 står andet end 0
Og jeg ændre i celler N4 vises CheckBox1

Også hvis der står en formel i celle S3?
Avatar billede tawiket Nybegynder
11. januar 2011 - 13:43 #11
ingen grund til at skrive med fed ved godt hvad de forskellige gør, men som sagt spørg jeg om jeg skal oprette en desideret makro til det da den kommer op med makro vindue, hvilket gør jeg tror jeg har glemt at sætte noget op??

kort:
når cursor står ud for subrutinen, og jeg trykker run, så springer makro vinduet op.
Avatar billede tawiket Nybegynder
11. januar 2011 - 13:54 #12
virker som om den ikke hopper ind i rutinen for der sker intet
Avatar billede store-morten Ekspert
11. januar 2011 - 14:00 #13
Fremhævet med fed, kun for at frem hæve kommentar kontra kode ;-)

Det andet forstår jeg intet af?
Avatar billede tawiket Nybegynder
11. januar 2011 - 14:21 #14
jeg fatter det heller ikke burde jeg ikke kunne køre en run?
meget fustreret over jeg ikke kan få det til at virke..

men som sagt virker det som om den slet ikke springer ind i den
Avatar billede tawiket Nybegynder
11. januar 2011 - 14:47 #15
tror jeg har sporet en fejl, den ser ikke hvad der står i feltet men hvis jeg laver det om til en variabel (int) så kan jeg se værdien, men hvordan tjekker jeg om denne variable ændre sig??
Avatar billede tawiket Nybegynder
11. januar 2011 - 15:28 #16
mit problem er at den ser celle N4 som blank lig nu og derfor når værdien i den ændres opdages det ikke

celle N4 "=N3" og N3 = 0

så i regnearket står der 0 i N4 men bruger jeg msgbox til at se hvad der står i N¤ så er den blank

hjællp...
Avatar billede excelent Ekspert
11. januar 2011 - 16:16 #17
Prøv med Calculate hændelse i stedet for Change

Private Sub Worksheet_Calculate()

End Sub
Avatar billede store-morten Ekspert
11. januar 2011 - 16:20 #18
Du kan ikke køre en run! fordi det er "Private Sub...."

Og den kan ikke se N4 ændre sig når der er en formel =N3.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$N$4" Then
        If Sheets("Formler").Range("S3").Value = 0 Then
          CheckBox1.Visible = False
        Else
          CheckBox1.Visible = True
        End If
    End If
End Sub

Se kommentar #6

Så forslaget er:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$N$3" Then
        If Sheets("Formler").Range("S3").Value = 0 Then
          CheckBox1.Visible = False
        Else
          CheckBox1.Visible = True
        End If
    End If
End Sub

Således at den køre når N4 bliver ændret af en indtastning/ændring i N3
Avatar billede store-morten Ekspert
11. januar 2011 - 16:51 #19
Eller som i #6

Private Sub Worksheet_Change(ByVal Target As Range)
        If Sheets("Formler").Range("S3").Value = 0 Then
          CheckBox1.Visible = False
        Else
          CheckBox1.Visible = True
        End If
End Sub

Således at den køre hver gang der ændres i (hele)arket.
Avatar billede tawiket Nybegynder
13. januar 2011 - 07:32 #20
ja har jeg også tænkt på men fungere bare ikke optimalt da alt det der ændres på arket er dropdown box og der er ikke nogen felter man selv skriver i.

den dropdown jeg bruger er ikke activeX object men et kontrol ellement.

deri mit problem??
Avatar billede store-morten Ekspert
13. januar 2011 - 15:51 #21
Private Sub Worksheet_Calculate()
If Sheets("Formler").Range("S3").Value = 0 Then
          CheckBox1.Visible = False
        Else
          CheckBox1.Visible = True
        End If
End Sub
Avatar billede tawiket Nybegynder
14. januar 2011 - 08:00 #22
det virkede mange mange tak for hjælpen!!
Avatar billede store-morten Ekspert
14. januar 2011 - 19:46 #23
Velbekomme... ;-)
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