Avatar billede denero Juniormester
01. februar 2011 - 11:45 Der er 10 kommentarer og
1 løsning

Hvis formel og hvis VBA

Har følgende sande udtryk:

Når K er 1
skal U være 0

Når K er større end 1
skal U være lig med eller større end 1

K skal altid være større end 0

Jeg vil gerne have den som formel med sand som "OK" og falsk som "fejl"

og jeg vil også gerne have den som VBA-kode,(K = celle A1, U = celle A2), hvor sand sender makroen "videre" og falsk "kalder" en MsgBoks
Avatar billede Ialocin Novice
01. februar 2011 - 18:21 #1
Hej denero

Skal lige forstå dig ret ...

Taster du værdier ind i k (celle A1), så så skal gi' et givent
resultat i U (celle A2) ??

Og hvad mener du med:  Sand som "OK" og falsk som "Fejl" ?

Med venlig hilsen, Nicolai
Avatar billede denero Juniormester
01. februar 2011 - 20:05 #2
Det er også noget sludder:

Når K er 1
skal U være 0

Når K er større end 1
skal U være lig med eller større end 1

K skal altid være større end 0

Jeg vil gerne have det som formel med sand som "OK" og falsk som "fejl"

Dette foregår selvfølgelig i samme celle, hvis udsagnene passer, skrives der ok - hvis ikke, skrives der fejl.

Denne celle skal visualisere, om der er korrekt indtastet.


Jeg vil samtidig gerne have, at min makro også tjekker dette, så derfor i VBA-kode.
Avatar billede denero Juniormester
02. februar 2011 - 09:20 #3
Er der nogle forslag?
Avatar billede finb Ekspert
02. februar 2011 - 10:12 #4
Prøv med Excels egen Validering

mvh finb
Avatar billede Ialocin Novice
02. februar 2011 - 16:59 #5
Hej denero

Hermed et forslag:

K = celle A1
U = celle A2

I celle C1 har jeg følgende formel som viser enter "OK" eller "FEJL", alt efter hvad du indtaster i K og U

=IF(A1=1;IF(A2=0;"OK";"FEJL");IF(A1>1;IF(A2>=1;"OK";"FEJL")))

Derudover har jeg datavalideret celle A1 så den kun må indeholde tal der er større end nul.

Validation:
Vælg celle A1
Vælg Data på værktøjslinien.
Vælg Validation
Følg vejlledningen.

Vender lige tilbage med VBA koden ....

Med venlig hilsen, Nicolai
Avatar billede denero Juniormester
04. februar 2011 - 08:20 #6
Hej Nicolai

Først undskyld, at jeg nylig svarer nu.

Det går ikke, at celle A1 ikke må indeholde 0, da dette vil forekomme. Jeg skulle nok have skrevet, at hvis A1 er nul er udsagnet falsk(fejl). Har ikke prøvet formlen af, vil vente, da dette jo er en ændring. Håber du stadig kan hjælpe.
Avatar billede Ialocin Novice
04. februar 2011 - 12:57 #7
Hej denero

Ingen problem ... jeg hænger også lidt i bremsen :o)

Anyway,
prøv følgende formel, som viser "FEJL", hvis celle A1 er = 0:

=IF(A1=0;"FEJL";IF(A1=1;IF(A2=0;"OK";"FEJL");IF(A1>1;IF(A2>=1;"OK";"FEJL"))))


Og lav lige lidt om i celle A1´s datavalidering, så den kun må indeholde tal der er større end eller lig nul.

Validation:
Vælg celle A1
Vælg Data på værktøjslinien.
Vælg Validation
Følg vejlledningen.

Og jeg vender lige tilbage med VBA koden ....

Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
04. februar 2011 - 17:46 #8
Hej denero

Jeg skal lige danne mig et overblik over din tankegang :o)

Har du en idé om, hvornår VBA koden skal teste om det indtastede er ok eller fejl ??

Skal der eksempelvis testes når:
- der indtastes i celle A1
- der indtastes i celle A2
- Eller ??

Med venlig hilsen, Nicolai
Avatar billede denero Juniormester
05. februar 2011 - 07:24 #9
Når indtastningen er færdig skal der testes i begge celler (ekstra sikkerhed for at data er ok inden de eksporteres til anden mappe).
Avatar billede Ialocin Novice
06. februar 2011 - 00:00 #10
Hej denero

Hvad med nedenstående ... ?

Kopier følgende ind i VBA editoren under det aktuelle worksheet, hvorpå du har dine celler A1 og A2:


Private Sub Worksheet_Change(ByVal Target As Range)
Dim k As Variant    'celle A1
Dim u As Variant    'celle A2



'A1=0 .. Fejl
'A1=1 .. A2=0 ellers fejl
'A1>1 .. A2>=1 ellers fejl


'tildel k og u de aktuelle værdier fra celle A1 og A2
k = Range("A1").Value
u = Range("A2").Value



        'Test først, hvis der er værdier i både celle A1 og A2
        If k <> "" And u <> "" Then
       
           
       
            'vælg udfra værdien i k = celle A1
            Select Case k
       
       
             
                'celle A1 er mindre end 0
                Case Is < 0
       
                    MsgBox "Værdien i celle A1 er mindre end 0", vbInformation
       
       
       
                'celle A1 er 0
                Case 0
       
                    MsgBox "Værdien i celle A1 er 0", vbInformation
       
       
       
                'celle A1 er lig med 1
                Case 1
       
                       
                        'hvis celle A2 er = 0
                        If u = 0 Then
       
                            MsgBox "OK ... Celle A2 er 0", vbInformation
       
                        'ellers fejl!
                        Else
       
                            MsgBox "Fejl", vbCritical
       
                        End If
       
       
               
                'celle A1 er større end 1
                Case Is > 1
       
       
                      'hvis celle A2 større end eller lig med 1
                        If u >= 1 Then
       
                            MsgBox "OK ... Celle A2 er større end eller lig med 1", vbInformation
       
                        'ellers fejl!
                        Else
       
                            MsgBox "Fejl", vbCritical
       
                        End If
       
       
       
            End Select
       
       
       
        End If


End Sub


----

Med venlig hilsen, Nicolai
Avatar billede denero Juniormester
06. februar 2011 - 22:46 #11
Tak for hjælpen
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