Avatar billede Mortensenmichael Nybegynder
24. oktober 2010 - 10:48 Der er 7 kommentarer og
1 løsning

Macro i word 2007

Jeg er ved at lave et Word dokument som skal bruges til en lang række enslydende analyser.

En del af dokumentet består af en række felter som jeg har benævnt R100, R101 .... til R190. I disse felter skal en række udsagn besvares med "L", "M" eller "H".

Afhængig af, om der er svaret "H" til mindst et udsagn, skal der være et bestemt afsnit senere i dokumentet. Det samme gælder hvis der er svaret "M" til mindst et udsag, skal der være et bestemt afsnit senere i dokumentet. (De to afsnit er ikke ens).

Er det nødvendigt at lave en betinget sætning for hver R100 til R190 for udsagn "M" og "H", eller er det muligt at lave en betinget sætning, som i et hug gennemløber om der er mindst et "H" i R100 til R190.
Avatar billede supertekst Ekspert
24. oktober 2010 - 18:16 #1
I hvilken kontekst optræder L, M & H? Tabel eller?
Avatar billede Mortensenmichael Nybegynder
24. oktober 2010 - 20:18 #2
Til super tekst
L, M og H udfyldes i felter (Tekst felter i fomular) hvor de enkelte felter har tilknyttet bogmærke R100 til R190.
Håber det er svar
Avatar billede supertekst Ekspert
24. oktober 2010 - 22:40 #3
Er der mulighed for at du kunne sende dokumentet?
@-adresse under min profil.
Avatar billede supertekst Ekspert
27. oktober 2010 - 10:55 #4
Const T31 = "Vi har identificeret følgende områder/poster med betydelige risici (Niveau 3 = Høj) for væsentlig fejlinformation:" & vbCr & vbCr
Const T33 = "Vi har på disse områder vurderet udformningen af virksomhedens eventuelle tilknyttede kontroller og konstateret, om de er implementeret."
Dim T32 As String

Const T21 = "Vi har endvidere identificeret følgende områder/poster med risici (niveau 2 = Mellem) for væsentlig fejlinformation:" & vbCr & vbCr
Dim T22 As String
Public Sub OpbygBemærkninger()
Dim ff As FormField, antalH As Long, antalM As Long, antalL As Long
Dim bm As String, vTekst As String, lTekst As String
    antalH = 0
    antalM = 0
    antalL = 0
   
    T32 = ""
    T22 = ""
   
    For Each ff In ActiveDocument.FormFields
        bm = ff.Name
       
        If bm <> "" Then
            r = ff.Result
       
            If ff.Range.Text = "H" Then
                ff.Select
                Selection.Font.Bold = True              'FED anvendes som temporær identifikation -
                findKoordinatTekster vTekst, lTekst
                T32 = T32 & vTekst & " (" & lTekst & ")" + vbCr + vbCr
                       
                antalH = antalH + 1
            Else
                If ff.Range.Text = "M" Then
                    ff.Select
                    Selection.Font.Bold = True          'FED -do.-
                    findKoordinatTekster vTekst, lTekst
                    T22 = T22 & vTekst & " (" & lTekst & ")" + vbCr + vbCr
                   
                    antalM = antalM + 1
                Else
                    If ff.Range.Text = "L" Then
                        antalL = antalL + 1
                    End If
                End If
            End If
        End If
    Next
   
Rem Gå til slutningen af dokumentet
    Selection.EndKey Unit:=wdStory
    Selection.Font.Size = 10
   
    If antalH > 0 Then
        Selection.TypeText Text:=T31
        Selection.Font.Bold = True
        Selection.TypeText Text:=T32
        Selection.Font.Bold = False
        Selection.TypeText Text:=T33
        Selection.TypeParagraph
        Selection.TypeParagraph
    End If
   
    If antalM > 0 Then
        Selection.TypeText Text:=T21
        Selection.Font.Bold = True
        Selection.TypeText Text:=T22
        Selection.Font.Bold = False
       
        Selection.TypeParagraph
        Selection.TypeParagraph
    End If
End Sub
Private Sub findKoordinatTekster(vTekst, lTekst)
Dim kol As Integer, ræk As Integer, cc As String
    With ActiveDocument.Tables(2)
    For ræk = 3 To .Rows.Count
        .Cell(ræk, 2).Select
       
        For kol = 2 To 12
            Selection.MoveRight Unit:=wdCell
            a = Selection.Range.Text
            If Selection.Font.Bold > 0 Then
                vTekst = .Cell(ræk, 2).Range.Text
                vTekst = Left(vTekst, Len(vTekst) - 2)
               
                lTekst = LCase(Replace(.Cell(1, kol + 1).Range.Text, vbCr, ""))
                lTekst = UCase(Left(lTekst, 1)) & Mid(lTekst, 2, Len(lTekst) - 2)
                Selection.Font.Bold = 0
                Exit Sub
                Stop
            End If
        Next kol
    Next ræk
    End With
End Sub
Avatar billede Mortensenmichael Nybegynder
30. oktober 2010 - 19:24 #5
Til supertekst

Jeg har testet dit forslag.
Det fungerer fint.

Vil du svar, så du kan belønnes
Avatar billede supertekst Ekspert
30. oktober 2010 - 21:14 #6
Svar er lagt i #4
Avatar billede Mortensenmichael Nybegynder
13. november 2010 - 14:19 #7
tak for hjælpen
Avatar billede supertekst Ekspert
13. november 2010 - 14:41 #8
Det var så lidt. Hvis det var meningen at jeg skulle have point - så fik jeg dem ikke. Du tog dem selv.

Jeg går ud fra det skyldes begynderproblemer.
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
Tag et kursus i Word og øg effektiviteten

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