Avatar billede Greenseeker Praktikant
21. august 2009 - 08:59 Der er 15 kommentarer og
1 løsning

Tilføjelse til makro

Hej!

Har brug for en kodelinie som jeg kan sætte ind i en makro.

Det skal være således, at man får en fejlmelding, hvis ikke alle felter i et skema er udfyldt.

Altså, makroen skal først tjekke om cellerne A1, B1 og C1 alle er udfyldt inden den aktiveres. Hvis ikke de er udfyldt skal makroen ikke gennemføres og der skal komme en fejlmelding...

Håber der er hjælp at hente...!? :o)
Avatar billede supertekst Ekspert
21. august 2009 - 09:18 #1
En mulighed:
Sub test()
    If Not (Range("A1") <> "" And Range("B1") <> "" And Range("C1") <> "") Then
        MsgBox ("Indtastningen mangler i A1:C1")
    Else
        '<udfør makroen>
       
    End If
End Sub
Avatar billede Greenseeker Praktikant
21. august 2009 - 14:35 #2
Er lidt en rookie med vba, så der kommer lige et par tillægsspørgsmål... :o)

Kan man ikke samle alle cellerne i én parantes, altså

If Not(Range("A1;B1;C1") <> "" Then...

Er i tvivl om hvor jeg skal sætte den ind for at den virker som den skal...?

Linien <udfør makroen> skal vel ændres til <udfør Gemskema> (som makroen hedder), eller hvad?
Avatar billede supertekst Ekspert
21. august 2009 - 15:14 #3
Sub test2()
    If ErAltUdfyldt = False Then
        MsgBox ("Indtastningen mangler i A1:C1")
    Else
        Gemskema
    End If
End Sub

rem Functionen tester de enkelte celler i området A1-C1
rem Hvis blot een celle er tom afbrydes funtionen = false
rem Ellers returneres True

Private Function ErAltUdfyldt()
    For Each Celle In Range("A1:C1").Cells
        If Celle = "" Then
            ErAltUdfyldt = False
            Exit Function
        End If
    Next
    ErAltUdfyldt = True
End Function
Avatar billede Greenseeker Praktikant
28. august 2009 - 08:29 #4
Ok. Det skal vist skæres ud i pap... Har prøvet at indsætte, men kan ikke få det til at virke.

For at simplificere spørgsmålet brugte jeg A1-C1. Det drejer sig i virkeligheden om cellerne D9, D13, D17, L9, L13 og L17 som skal være udfyldt før "Gemskema" kan aktiveres.

Regnearket fungerer således at man indtaster i de nævnte celler, trykker på en knap der aktiverer makroen "Gemskema" som kopierer de indtastede data over i et andet ark og rydder nævnte celler til næste indtastning.

Skal jeg tilknytte ovenstående makro til knappen i stedet for "Gemskema", eller skal ovenstående være en del af "Gemskema" (i så fald, hvor skal den sættes ind)?
Avatar billede supertekst Ekspert
28. august 2009 - 08:54 #5
Kode bør tilknyttes knappen - fordi brugeren indikerer, at nu skal der gemmes.

Kan du selvændre koden til de "rigtige" celler?
Avatar billede Greenseeker Praktikant
28. august 2009 - 13:19 #6
Well, det virker ikke, så har tydeligvis ikke gjort det rigtigt...

Sub test2()
    If ErAltUdfyldt = False Then
        MsgBox ("FEJL - Alle de 6 øverste celler SKAL udfyldes!")
    Else
        Gemskema
    End If
End Sub

Rem Functionen tester de enkelte celler i cellerne D9;D13;D17;L9;L13;L17
Rem Hvis blot een celle er tom afbrydes funtionen = false
Rem Ellers returneres True

Private Function ErAltUdfyldt()
    For Each Celle In Range("D9;D13;D17;L9;L13;L17").Cells
        If Celle = "" Then
            ErAltUdfyldt = False
            Exit Function
        End If
    Next
    ErAltUdfyldt = True
End Function
Avatar billede supertekst Ekspert
28. august 2009 - 14:04 #7
Så er der håb (måske):

Sub test2()
    If ErAltUdfyldt = False Then
        MsgBox ("FEJL - Alle de 6 øverste celler SKAL udfyldes!")
    Else
        gemSkema
    End If
End Sub
Private Sub gemSkema()
    MsgBox ("Skema gemmes")
End Sub
Rem Functionen tester de enkelte celler i cellerne D9;D13;D17;L9;L13;L17
Rem Hvis blot een celle er tom afbrydes funtionen = false
Rem Ellers returneres True
Private Function ErAltUdfyldt()
    Set område = Range("D9,D13,D17,L9,L13,L17")
   
    For Each Celle In område.Cells
        If Celle = "" Then
            ErAltUdfyldt = False
            Exit Function
        End If
    Next
    ErAltUdfyldt = True
End Function
Avatar billede Greenseeker Praktikant
02. september 2009 - 13:56 #8
Mmmm... Det virker fint indtil med boksen "skema gemmes", men når man trykker ok sker der ikke mere. Makroen "Gemskema" bliver ikke aktiveret...?
Avatar billede supertekst Ekspert
02. september 2009 - 14:06 #9
Er der data i alle obligatoriske celler?
Avatar billede Greenseeker Praktikant
02. september 2009 - 14:26 #10
Ja, der er data i de 6 celler, og der kommer beskeden "skema gemmes", men derefter sker der intet...
Avatar billede supertekst Ekspert
02. september 2009 - 14:38 #11
I min kode nedenfor gemmes skemaet ikke. Der vises kun at processen er i denne SUB.

Sub test2()
    If ErAltUdfyldt = False Then
        MsgBox ("FEJL - Alle de 6 øverste celler SKAL udfyldes!")
    Else
        gemSkema
    End If
End Sub

Private Sub gemSkema()
    MsgBox ("Skema gemmes")
End Sub
Avatar billede Greenseeker Praktikant
02. september 2009 - 14:44 #12
Ikke forstået?

Som jeg har forstået det, skal knappen aktivere den føromtalte kode, som undersøger om de 6 felter er udfyldt. Hvis ikke de er udfyldt, aktiveres fejlmeddelelsen, og hvis de er udfyldt aktiveres makroen "Gemskema"...
Avatar billede supertekst Ekspert
02. september 2009 - 14:53 #13
Ja - korrekt - men min makro gemmer ikke - det er blot det :-)
Avatar billede Greenseeker Praktikant
02. september 2009 - 14:57 #14
Nej, det gør makroen gemskema. Det er derfor jeg ikke forstår at det ikke virker...
Avatar billede supertekst Ekspert
02. september 2009 - 15:02 #15
Prøv at vise hele din kode - og/eller send filen til mig (mailadr. under min profil)
Avatar billede Greenseeker Praktikant
03. september 2009 - 08:19 #16
Ok, har sendt skemaet til dig...
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