Ja, det kan godt lade sig gøre, men der er ikke en standardfunktion til det. Du kan bruge metoden beskrevet her:
http://word.mvps.org/ (...)
Alternativt kan du jo også bare skrive til Statuslinjen, fx:
For i = 1 To 10
For a = 1 To 5000000
Next
' Skriver til statuslinje
StatusBar = i
DoEvents
Next i
Til yderligere inspiration vedr. ProgressBar:
http://www.your-save-time-and-improve-quality-technologies-online-resource.com/ (...)
Ifølge VBA-hjælpen er StatusBar ikke længere supporteret i VBA (gælder 2007 og 2010). Fra VBA hjælpen i 2007 og 2010:
StatusBar Property
This property is no longer supported in Microsoft Word Visual Basic for Applications.
Så vidt jeg kan se, fejler det ikke, men informationen bliver ikke som i 2003 og tidligere med sikkerhed stående. Andre handlinger vil ofte få Words indbyggede statuslinjeinformation til at dukke op igen og overskrive teksten, og så kommer det blot til at flimre med skiftende tekst.
prøver lige Lene´s forslag. Vender tilbage senere.
Har lavet efter anvisning på link fra Lene, men mangler lige lidt hjælp til, hvor min makro kommer ind i billedet.
Nedenfor har jeg indsat kode, som måske bedre kan vise, hvad du kan gøre. Som MsgBox-teksterne siger, så indsæt i din kode det, der skal ske. I stedet for at indsætte al kode i din UserForm, er det bedre at lave kald til separate makroer, som du har placeret i et eller flere moduler i dit projekt. Du er nødt til at have koden afviklet i "bidder" og lægge noget til bredden af Label1 for hver "bid" for at kunne bruge progress-baren. I eksemplet her har jeg opdelt Label1 sådan, at 1/8 af den fulde længde lægges til hver gang. Du kan opdele efter behov og lade intervallerne være forskellige, så de bedst afspejler den tid, de forskellige dele tager at afvikle. Hvis forløbet skal se nogenlunde jævnt ud, skal du lave mange opdelinger.
Prøv at udskifte koden i UserForm1 med følgende. Behold makroen TestProgress og selve UserForm1 med Frame1 og Label1 uændret. Kør derefter makroen TestProgress, så du kan se, hvordan baren vokser:
Option Explicit
Me.Repaint
MsgBox "Indsæt 1. del af handlingen i koden i stedet for denne MsgBox"
Label1.Width = 25
Frame1.Repaint
MsgBox "Indsæt 2. del af handlingen i koden i stedet for denne MsgBox"
Label1.Width = 50
Frame1.Repaint
MsgBox "Indsæt 3. del af handlingen i koden i stedet for denne MsgBox"
Label1.Width = 75
Frame1.Repaint
MsgBox "Indsæt 4. del af handlingen i koden i stedet for denne MsgBox"
Label1.Width = 100
Frame1.Repaint
MsgBox "Indsæt 5. del af handlingen i koden i stedet for denne MsgBox"
Label1.Width = 125
Frame1.Repaint
MsgBox "Indsæt 6. del af handlingen i koden i stedet for denne MsgBox"
Label1.Width = 150
Frame1.Repaint
MsgBox "Indsæt 7. del af handlingen i koden i stedet for denne MsgBox"
Label1.Width = 175
Frame1.Repaint
MsgBox "Indsæt 8. del af handlingen i koden i stedet for denne MsgBox"
Label1.Width = 200
Frame1.Repaint
' Unload UserForm when process finished
Unload Me
Fint -prøver det lige af. Vender tilbage senere, skal ud og nyde det herlige vejr.
Har prøvet med flg. kode og det gik ikke helt til held.
Option Explicit
Private Sub UserForm_Activate()
Me.Repaint.Show
'Dim docNew As Document
Dim newTextbox As Shape
'Tekstboks
Set newTextbox = ActiveDocument.Shapes.AddTextbox _
(Orientation:=msoTextOrientationHorizontal, _
Left:=100, Top:=100, Width:=300, Height:=200)
Label1.Width = 25
Frame1.Repaint
'Tekstboks indsæt bogmærke
With newTextbox.TextFrame.TextRange
.Bookmarks.Add Name:="Tekst"
End With
'Tekstboks gå til bogmærke
If ActiveDocument.Bookmarks.Exists("Tekst") = True Then
ActiveDocument.Bookmarks("Tekst").Select
End If
Label1.Width = 50
Frame1.Repaint
' Tekstboks tekst
Selection.TypeText Text:="Tekst 1"
Selection.TypeParagraph
Selection.TypeText Text:="Tekst 2"
Selection.TypeParagraph
Selection.TypeText Text:="Tekst 3"
Selection.TypeParagraph
Selection.TypeParagraph
Selection.TypeText Text:="Tekst 4"
Selection.TypeParagraph
Selection.TypeText Text:="Tekst 5"
Selection.TypeParagraph
Selection.TypeParagraph
Selection.TypeText Text:="Tekst 6"
Selection.TypeParagraph
Selection.TypeText Text:="Tekst 7"
Selection.TypeParagraph
Selection.TypeParagraph
Label1.Width = 75
Frame1.Repaint
' Tekstboks dato
Selection.InsertDateTime DateTimeFormat:="d. MMMM yyyy", InsertAsField:= _
False, DateLanguage:=wdDanish, CalendarType:=wdCalendarWestern, _
InsertAsFullWidth:=False
'Tekstboks gå til bogmærke
If ActiveDocument.Bookmarks.Exists("Tekst") = True Then
ActiveDocument.Bookmarks("Tekst").Select
End If
'Tekstboks marker alt
Selection.WholeStory
Label1.Width = 100
Frame1.Repaint
'Tekstboks font og størrelse
Selection.Font.Name = "Klavika Rg"
Selection.Font.Size = 6.5
'Tekstboks linjeafstand
With Selection.ParagraphFormat
.SpaceBefore = 0
.SpaceBeforeAuto = False
.SpaceAfter = 0
.SpaceAfterAuto = False
End With
Label1.Width = 125
Frame1.Repaint
'Tekstboks placering, størrelse og frame
Selection.ShapeRange.Select
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoFalse
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 110.85
Selection.ShapeRange.Width = 91.85
Selection.ShapeRange.Left = 479.05
Selection.ShapeRange.Top = 119.05
Selection.ShapeRange.TextFrame.MarginLeft = 0#
Selection.ShapeRange.TextFrame.MarginRight = 0#
Selection.ShapeRange.TextFrame.MarginTop = 0#
Selection.ShapeRange.TextFrame.MarginBottom = 0#
Selection.ShapeRange.RelativeHorizontalPosition = _
wdRelativeHorizontalPositionPage
Selection.ShapeRange.RelativeVerticalPosition = _
wdRelativeVerticalPositionPage
Selection.ShapeRange.RelativeHorizontalSize = wdRelativeHorizontalSizePage
Selection.ShapeRange.RelativeVerticalSize = wdRelativeVerticalSizePage
Selection.ShapeRange.Left = CentimetersToPoints(16.9)
Selection.ShapeRange.LeftRelative = wdShapePositionRelativeNone
Selection.ShapeRange.Top = CentimetersToPoints(4.2)
Selection.ShapeRange.TopRelative = wdShapePositionRelativeNone
Selection.ShapeRange.WidthRelative = wdShapeSizeRelativeNone
Selection.ShapeRange.HeightRelative = wdShapeSizeRelativeNone
Selection.ShapeRange.LockAnchor = True
Selection.ShapeRange.LayoutInCell = True
Selection.ShapeRange.WrapFormat.AllowOverlap = True
Selection.ShapeRange.WrapFormat.Side = wdWrapBoth
Selection.ShapeRange.WrapFormat.DistanceTop = CentimetersToPoints(0)
Selection.ShapeRange.WrapFormat.DistanceBottom = CentimetersToPoints(0)
Selection.ShapeRange.WrapFormat.DistanceLeft = CentimetersToPoints(0.32)
Selection.ShapeRange.WrapFormat.DistanceRight = CentimetersToPoints(0.32)
Selection.ShapeRange.WrapFormat.Type = 3
Selection.ShapeRange.ZOrder 4
Selection.ShapeRange.TextFrame.AutoSize = False
Selection.ShapeRange.TextFrame.WordWrap = True
Selection.ShapeRange.TextFrame.VerticalAnchor = msoAnchorTop
Label1.Width = 150
Frame1.Repaint
'Dokument
Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst, count:=1, Name:=""
Label1.Width = 200
Frame1.Repaint
' Unload UserForm when process finished
Unload Me
End Sub
Der er tilsyneladende ikke yderligere kommentarer. Vil du lægge et svar Lene?