14. august 2008 - 21:52Der er
8 kommentarer og 1 løsning
VB - MsgBox med flere fejlmeddelelser
Hej. Jeg har et ark, hvor der er en række krav til indtastninger. Når brugeren er færdig med indtastninger, klikkes på en knap, så der fortsættes til næste ark. Men jeg tjekker først om, alle krav til indtastninger er opfyldt. Jeg bruger lige nu denne kode:
If Worksheets("Grund").Range("h16") = 1 Then MsgBox "Du har ikke udfyldt xxxx. Tryk på OK og ret fejlen!" Sheets("Grund").Visible = True Sheets("Grund").Select Exit Sub End If
Og så fortsætter jeg med næste tjek. Men det var smartere, hvis alle min tjek vises i samme MsgBox.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Start med at udføredet første check. Hvis der skal gives en meddelelse, gemmer du denne i en streng-variabel. I modsat fald lader variablen stå tom. Fortsæt med næste check på samme måde.
Når alle check er udført, lader du en IF funktion gennemløbe variabler og undersøge om de er tomme, og derefter skriver du de ikke tomme til din MSGBOX.
If Worksheets("Grund").Range("h16") = 1 Then $fejl1 = "Du skal udfylde navn" End If If Worksheets("Grund").Range("h17") = 1 Then $fejl1 = "Du skal udfylde adressen" End If
Men hvordan jeg så tjekker variablerne for indhold og derefter lister dem i MsgBox ved jeg ikke. Jeg er mere hjemme i PHP.
If Worksheets("Grund").Range("h16") = 1 Then $fejl1 = "Du skal udfylde navn" End If If Worksheets("Grund").Range("h17") = 1 Then $fejl2 = "Du skal udfylde adressen" End If If Len($fejl1) <> 0 Then medtxt = $fejl1 If Len($fejl2) <> 0 Then medtxt = medtxt & vbCrlf & $fejl2
Jeg har rettet lidt, da variablerne åbenbart defineres uden $-tegnet. Men hvis der ingen fejl er, så vises en tom MsgBox. Mangler der noget "End if". Jeg har prøvet lidt, men har ikke kunnet løse det. Koden ser sådan her ud:
Sub Skift_til_Efterløn() If Worksheets("Grundoplysninger").Range("a47") = 1 Then FEJL1 = "Du skal udfylde navn" End If If Worksheets("Grundoplysninger").Range("a48") = 1 Then FEJL2 = "Du skal udfylde adressen" End If If Worksheets("Grundoplysninger").Range("a49") = 1 Then FEJL3 = "Du skal udfylde tlfnr." End If If Len(FEJL1) <> "" Then medtxt = FEJL1 If Len(FEJL2) <> "" Then medtxt = medtxt & vbCrLf & FEJL2 If Len(FEJL3) <> "" Then medtxt = medtxt & vbCrLf & FEJL3 MsgBox medtxt, vbOKOnly + vbCritical Sheets("Grundoplysninger").Visible = True Sheets("Grundoplysninger").Select Exit Sub End Sub
Så fik jeg det til at køre, ved nogle mindre omskrivninger. Koden ser sådan her ud nu:
If Worksheets("Grundoplysninger").Range("a47") = 1 Then FEJL1 = "Du skal udfylde navn" & vbCrLf End If If Worksheets("Grundoplysninger").Range("a48") = 1 Then FEJL1 = FEJL1 & "Du skal udfylde adressen" & vbCrLf End If If Worksheets("Grundoplysninger").Range("a49") = 1 Then FEJL1 = FEJL1 & "Du skal udfylde tlfnr." End If If FEJL1 <> "" Then MsgBox FEJL1, vbOKOnly + vbCritical
Sheets("Grundoplysninger").Visible = True Sheets("Grundoplysninger").Select Exit Sub End If
Tak for bidragene og inspirationerne. Send venligst et svar.
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.