Avatar billede lsskaarup Nybegynder
11. juli 2006 - 14:13 Der er 1 kommentar og
1 løsning

checkbox driller

Jeg har lavet en userform i en skabelon i word, hvor brugeren skal indtaste nogle forskellige oplysninger, men der er et enkelt felt (checkbox) der driller mig.

Når checkbox cbReferat er udfyldt og der ikke såtr noget textboxen tbReferat, så skal der komme en besked, om at man har glemt noget, men jeg kan ikke få beskeden til at komme frem.

    If ufFølgeskrivelse.cbReferat.Value = true Then
     
      ' If ufFølgeskrivelse.tbReferat.Value = "" Then
        MsgBox "test"
       
        'End If
    Else

--------------- hele koden (opret_click) -----------------

Private Sub opret_Click()

On Error Resume Next:

    'afsender
    Dim strAfsender As String
       
    If Not IsNull(Me.afsName) Then
   
        strAfsender = Me.afsName & vbCrLf
   
    End If
   
    'If Not IsNull(Me.afsTitle) Then
   
    '  strAfsender = strAfsender & vbCrLf & Me.afsTitle
   
    'End If
   
    If Not IsNull(Me.afsTlf) Then
   
        strAfsender = strAfsender & vbCrLf & "Direkte tel.: " & Me.afsTlf
   
    End If
   
    If Not IsNull(Me.afsMobile) Then
   
        strAfsender = strAfsender & vbCrLf & "Mobil tlf.: " & Me.afsMobile
   
    End If
   
    If Not IsNull(Me.afsMail) Then
   
        strAfsender = strAfsender & vbCrLf & "Mail: " & Me.afsMail
   
    End If
   
    'Tjek for om alle nødvendige modtagerinfo er udfyldt, ellers oprettes dokumentet ikke.
    If ufFølgeskrivelse.tbFirma.Value = "" Then
        MsgBox "Du har ikke udfyldt firmanavnet"
    ElseIf ufFølgeskrivelse.tbAdresse.Value = "" Then
        MsgBox "Du har ikke udfyldt firmaadressen"
    ElseIf ufFølgeskrivelse.tbBy.Value = "" Then
        MsgBox "Du har ikke udfyldt postnr. og/eller by"
    ElseIf ufFølgeskrivelse.tbModtager.Value = "" Then
        MsgBox "Du har ikke udfyldt modtageren af brevet"
    ElseIf ufFølgeskrivelse.cbAftale.Value = False Then
        If ufFølgeskrivelse.cbOrientering.Value = False Then
            If ufFølgeskrivelse.cbGodkendelse.Value = False Then
                If ufFølgeskrivelse.cbHenhold.Value = False Then
                    If ufFølgeskrivelse.cbRetur.Value = False Then
                        If ufFølgeskrivelse.cbBeholdes.Value = False Then
                            If ufFølgeskrivelse.cbUnderskrift.Value = False Then
                                If ufFølgeskrivelse.cbLån.Value = False Then
                                    If ufFølgeskrivelse.cbEkspedition.Value = False Then
                                        If ufFølgeskrivelse.cbReferat.Value = False Then
                                            MsgBox "Du har ikke uddybet følgeskrivelsen"
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
        'MsgBox ufFølgeskrivelse.tbReferat.Value
    If ufFølgeskrivelse.cbReferat.Value = true Then
     
      ' If ufFølgeskrivelse.tbReferat.Value = "" Then
        MsgBox "test"
       
        'End If
    Else
   
      ' Debug.Print "skriv"
        Set Range = ActiveDocument.Range
        'If sprog = "dansk" Then
            Range.LanguageID = wdDanish
        'ElseIf sprog = "engelsk" Then
          ' Range.LanguageID = wdEnglishUK
      ' ElseIf sprog = "tysk" Then
            'Range.LanguageID = wdGerman
        'ElseIf sprog = "" Then
          ' MsgBox "Du har ikke valgt et sprog til stavekontrollen"
        'End If
       
      ' If Not IsNull(sprog) Then
       
            'hilsen
            'ActiveDocument.FormFields("hilsen").Range.Text = hilsen
       
            'afsender
            ActiveDocument.FormFields("afsender").Range.Text = strAfsender
   
            'modtagerfimra
            Dim strModtager As String
            strModtager = ufFølgeskrivelse.tbFirma.Value & vbCrLf & ufFølgeskrivelse.tbAdresse.Value & vbCrLf _
            & ufFølgeskrivelse.tbBy.Value
   
            ActiveDocument.FormFields("modtager").Range.Text = strModtager
   
            'modtagerperson
            ActiveDocument.FormFields("person").Range.Text = att & " " & ufFølgeskrivelse.tbModtager.Value

            ' Checkboxene
            If cbOrientering.Value = True Then
                ActiveDocument.FormFields("orientering").CheckBox.Value = Checked
            End If
           
            If cbHenhold.Value = True Then
                ActiveDocument.FormFields("henhold").CheckBox.Value = Checked
            End If
           
            If cbGodkendelse.Value = True Then
                ActiveDocument.FormFields("godkendelse").CheckBox.Value = Checked
            End If
           
            If cbUnderskrift.Value = True Then
                ActiveDocument.FormFields("underskrift").CheckBox.Value = Checked
            End If
           
            If cbLån.Value = True Then
                ActiveDocument.FormFields("lån").CheckBox.Value = Checked
            End If
           
            If cbAftale.Value = True Then
                ActiveDocument.FormFields("aftale").CheckBox.Value = Checked
            End If
           
            If cbRetur.Value = True Then
                ActiveDocument.FormFields("retur").CheckBox.Value = Checked
            End If
           
            If cbBeholdes.Value = True Then
                ActiveDocument.FormFields("beholdes").CheckBox.Value = Checked
            End If
           
            If cbEkspedition.Value = True Then
                ActiveDocument.FormFields("ekspedition").CheckBox.Value = Checked
            End If
           
            If cbReferat.Value = True Then
                ActiveDocument.FormFields("referat").CheckBox.Value = Checked
            End If
     
            'tbReferet
            ActiveDocument.FormFields("referatTekst").Range.Text = ufFølgeskrivelse.tbReferat.Value
     
            'Skjuler formen
            ufFølgeskrivelse.Hide
           
            ActiveDocument.ActiveWindow.View.Type = wdPrintView
           
            'Udføre stavekontrol
            Range.CheckSpelling
           
            'Sætte Word til automatisk at detektere sproget, hvis der skrives mere
            Application.CheckLanguage = True
           
            'Gem dokument
            ActiveDocument.Save
           
            ActiveDocument.ActiveWindow.View.Type = wdPrintView
      '  End If
       
    End If
End Sub


En anden ting, som burde være simpel, jeg kan bare ikke lige greje den. Der er andre checkbox også, og er ingen af dem udfyldt, skal der også komme en besked. Jeg har lavet det, så hvert felt bliver tjekket i sin egen if, men det burde da kunne samles til en if i stedet for 10.
Avatar billede kronsj Nybegynder
19. august 2006 - 15:31 #1
1 Mht. din check-box, der skal bruges til at vurdere om der tekstboxen skal være udfyldt, skal du bruge tbReferat.TEXT - og ikke tbReferat.VALUE. Et lille hint er at man det er en god idé at test på en strengs længde, end om den er "" :

if len(tbReferat.text) > 0 then
  msgbox "Der står en tekst"
end if


2 Flere chek-boxes : En mulighed er at bruge et greb der kaldes en "state-machine" :

i = 1
While iState > 0
  select case iState
      case 1:
          if checkbox1.value = true then
              iState = iState+1
          else
              iState = -1
          endif
      case 2:
          if checkbox1.value = true then
              iState = iState+1
          else
              iState = -1
          endif
'..osv...
      case else
        iState = 0
    end select
wend

If iState = 0 then
  msgbox "Der er mindst valgt en checkbox"
else
  msgbox "Husk at checke"
end if
...
Et alternativ er :
        If checkbox1.value = checkbox2.value = false then
          msgbox "Der er ikke nogen afmærket"
        end if

...men det kan blive en lang linje, og VB er ikke overskueligt, når det gælder lange linjer.
Avatar billede lsskaarup Nybegynder
11. september 2006 - 16:15 #2
Hov havde helt glemt dette spørgsmål, kan faktisk ikke lige huske hvad løsningen var, men kronsj du skal ikke snydes.
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