Avatar billede terkel100 Nybegynder
10. august 2006 - 11:53 Der er 5 kommentarer og
1 løsning

print af forms med multipage

Hej

Jeg er begynder udi VB.
Jeg er ved at lave en form i excel, hvori der er flere multipages
(faneblade).

Mit problem ligger i, at jeg gerne vil kunne klikke på en knap og få alle disse sider printet ud.
Jeg har lavet følgende script under knappen, som så printer den viste side ud:

Private Sub CommandButton1_Click()
userform1.PrintForm
End Sub

Jeg har kigget i bøger og søgt på mange forskellige sites, men ikke fundet noget brugbart.
Jeg går ud fra at - hvis det findes - er noget med at identificere sidenavne under multipage, men er som sagt løbet tør for gode idéer.
Avatar billede a_nor Nybegynder
10. august 2006 - 12:19 #1
hvad med noget som:

For i = 0 To MultiPage1.Count - 1
        'Use index (numeric or string)
    MultiPage1.Value = i
    UserForm1.PrintForm
  Next i
Avatar billede terkel100 Nybegynder
10. august 2006 - 13:53 #2
Har prøvet dit forslag.
Det virker kun delvist, sikkert pga de mange sider jeg har.

Setup som følger ('*' = de sider som skrives ud med dit script):

Userform1
  Multipage 1
    Page 1
      Multipage 3
          Page 1 *
          Page 2
    Page 2
      MultiPage 2
          Page 1 *
          Page 2
          Page 3
    Page 3 *

Hvordan får jeg printet alle siderne ud ?
kan jeg evt. bestemme at en side ikke skrives ud, hvis der ikke ser skrevet noget ?
Avatar billede a_nor Nybegynder
10. august 2006 - 14:37 #3
så må det være:

For i = 0 To MultiPage1.Count - 1
        'Use index (numeric or string)
    MultiPage1.Value = i
    If MultiPage1.Value = 0 Then
      For j = 0 To MultiPage2.Count - 1
        MultiPage3.Value = j
        UserForm1.PrintForm
      Next j
    End If
    If MultiPage1.Value = 1 Then
      For j = 0 To MultiPage3.Count - 1
        MultiPage2.Value = j
        UserForm1.PrintForm
      Next j
    End If
    If MultiPage1.Value = 2 Then
      UserForm1.PrintForm
    End If
  Next i
 
mht. styring af print ved manglende indhold, må du lave en test på de komponenter du anvender. Anvend  _change eventen til at sætte en boolean (en pr. page) (anvend et array så du kan indexere efter sidenr. og test så på denne inden PrintForm metoden kaldes.

mvh Anders
Avatar billede terkel100 Nybegynder
10. august 2006 - 15:37 #4
Hej Anders

Jeg ændrede det til følgende, for at det fungerede perfekt:
Tak for info vedr. array og _change. Det bliver en anden dag jeg går i gang med det.

For i = 0 To MultiPage1.Count - 1
        'Use index (numeric or string)
    MultiPage1.Value = i
    If MultiPage1.Value = 0 Then
      For j = 0 To MultiPage3.Count - 1
        MultiPage3.Value = j
        userform1.PrintForm
      Next j
    End If
    If MultiPage1.Value = 1 Then
      For j = 0 To MultiPage2.Count - 1
        MultiPage2.Value = j
        userform1.PrintForm
      Next j
    End If
    If MultiPage1.Value >= 2 Then
      userform1.PrintForm
    End If
Next i

jeg takker for hjælpen
Avatar billede a_nor Nybegynder
10. august 2006 - 16:04 #5
Ja, sådan er det når man skriver uden at teste. Selvfølgelig skal den Multipage man itererer over også være den der anvendes ved tildelingen af propertiens værdi.

Husk lige at acceptere et svar :-)

mvh
Avatar billede terkel100 Nybegynder
11. august 2006 - 08:55 #6
Accept af svar er gjort :O)

Jeg takker endnu engang, da det har givet mig lidt ny ballast i VB.
Det havde taget temmelig lang tid før jeg var nået så langt med scriptet.

mvh
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