Jag har skapat en dokumentmall i word och har lagt in formulärfält för att få färdiga positioner när man trycker "tab". Jag har skapat fälten "Pris" "antal" och "totalsumma" där totalsumman ska räknas ut genom "pris"*"Antal".
När jag matar in pris och antal så vill jag att totalsumma ska uppdateras. Det gör det inte. Det gör det endast när jag klickar på "skriv ut". Har provat med tangenten "F9" men då måste jag låsa upp dom låsta fälten varje gång.
Hur gör jag för att få uppdatering direkt när jag matat in pris och antal?
Typ som excel så ska det räknas ut direkt.
Vilken word pratar vi om?
I XP så går du in i designläge (olåst), högerklicka på fältet och välj egenskaper, kryssa i "beräkna vid avslut". Tror du måste göra det på alla berörda fält (pris, antal, summa). När du låser fälten nästa gång så borde det fungera. Med stor reservation för att jag inte har en aning om vad jag gör i word :h
Jag tror faktiskt inte att det går att ändra på något enkelt sätt i word !!!! I alla fall inte lika enkelt som i t.ex acccess/filemaker osv. Word följer något slags dokumentordningsprincip.
Du kan ändra till vertikal ordning genom att använda spalter istället för tabeller, men då blir du lika låst åt det hållet.
Hur gör man om man skulle vilja att ett fält ska vara obligatoriskt att fylla i? Jag får ej lämna det om det ej är ifyllt?
Antag att det är "Text1" som skall bevakas.
Hmmm, trodde det skulle gå med hjälp av den metod som beskrevs i länken jag gav.
Dvs ett "kör makro vid avslut" för TextFält1
Sub Ifylld()
If Len(ActiveDocument.FormFields("Text1").Result) = 0 Then
MsgBox ("Du måste fylla i ett värde i det här fältet")
ActiveDocument.Bookmarks("Text1").Range.Fields(1).Result.Select
End If
End Sub
Men av någon ondsint anledning går det inte att välja samma fält som man startar från :( du kan gå till Text5, Text6 eller vad du vill, men inte samma. Grrrrr
Antar att du får lägga in ett vilkor i det fält som följer efter, typ Text2
"kör makro vid start"
Sub EnterText2()
If Len(ActiveDocument.FormFields("Text1").Result) = 0 Then
ActiveDocument.Bookmarks("Text1").Range.Fields(1).Result.Select
MsgBox ("Du måste fylla i ett värde i det här fältet")
End If
End Sub
Hmmm, fullösning, men jag kan inte komma på något bättre. Fungerar inte om du väljer något annat än fält2 med musen heller.
Nej, Word är nog inget vidare program för on-line formulär helt enkelt.
Man får helt enkelt lägga till en liten fördröjning för att slippa hoppet till efterföljande fält, hur snyggt som helst.
Sub ExitText1()
With ActiveDocument.FormFields("Text1")
If Len(.Result) = 0 Then
Application.OnTime When:=Now + TimeValue("00:00:01"), _
Name:="GoBacktoText1"
MsgBox ("Du måste fylla i ett värde i det här fältet")
End If
End With
End Sub
'-------------------------------------------------------------
Sub GoBacktoText1()
ActiveDocument.Bookmarks("Text1").Range.Fields(1).Result.Select
End Sub