Just nu i M3-nätverket
Gå till innehåll

Gruppera blad i Excel


BI

Rekommendera Poster

Någon som kan hjälpa mig med följande problem:

Jag försöker gruppera Excel blad i VBA och sedan visa dem i Förhands granska.

Jag har följande kod:

[color="#0000ff"]Sub[/color] prtPrivew()
    [color="#0000ff"]Dim[/color] ws
    [color="#0000ff"]Dim[/color] strWSPrt

    [color="#0000ff"]For[/color] [color="#0000ff"]Each[/color] ws [color="#0000ff"]In[/color] Worksheets
        [color="#0000ff"]If[/color] [color="#0000ff"]Ucase[/color](ws.Name) <> [GRÅ]"MALLIRS"[/GRÅ] [color="#0000ff"]And[/color] [color="#0000ff"]Ucase[/color](ws.Name) <> [GRÅ]"MALLIKU"[/GRÅ] [color="#0000ff"]Then[/color]                [color="#006400"]'blad som inte skall med[/color]
            strWSPrt = strWSPrt & [GRÅ]""[/GRÅ][GRÅ]""[/GRÅ] & ws.Name & [GRÅ]""[/GRÅ][GRÅ]","[/GRÅ]
        [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
    [color="#0000ff"]Next[/color]
    strWSPrt = [color="#0000ff"]Left[/color](strWSPrt, [color="#0000ff"]Len[/color](strWSPrt) - 1)
    Sheets([color="#0000ff"]Array[/color](strWSPrt)).[color="#0000ff"]Select[/color]
    ActiveWindow.SelectedSheets.PrintPreview

[color="#0000ff"]End[/color] [color="#0000ff"]Sub[/color]

 

Jag får det inte och fungera hur jag än försöker.

När man bandar in ett macro ser det ut enligt följande:

sheets(Array("Blabx", "Blabxx", "Blabxxx", "Blabxxxx")).Select

 

Det är någon liten detalj som jag missar här men kommer inte på vilken.

 

BI

 

Länk till kommentar
Dela på andra webbplatser

Har du testat att stega igenom koden. Strängen strWSPrt blir konstig

Om du ändrar till

 

 strWSPrt = strWSPrt & [GRÅ]""[/GRÅ][GRÅ]""[/GRÅ] & ws.Name & [GRÅ]""[/GRÅ][GRÅ]","[/GRÅ]
        [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
    [color="#0000ff"]Next[/color]
    strWSPrt = [color="#0000ff"]Mid[/color](strWSPrt, 2, [color="#0000ff"]Len[/color](strWSPrt) - 3)

får du en vettigare sträng.

 

Nej, jag får ändå ett fel 'Index är utanför intervallet'. Men strängen ser mer ut som i ditt inspelade makro.

 

Länk till kommentar
Dela på andra webbplatser

Det är något med matristen som jag inte kommer på. Eller jag tror at det är det.

Har försökt definera matrisen också på olika sätt men lyckas inte.

 

BI

 

Länk till kommentar
Dela på andra webbplatser

Mmh, kanske kanske jo jag tror jag har det...

 

Lite kod:

[color="#0000ff"]Sub[/color] prtPrivew()
    [color="#0000ff"]Dim[/color] ws
    [color="#0000ff"]Dim[/color] strWSPrt
    [color="#0000ff"]Dim[/color] index As Integer
    [color="#0000ff"]Dim[/color] k As Integer
    [color="#0000ff"]Dim[/color] myArray() As Variant
    [color="#0000ff"]Dim[/color] mySelection
    [color="#0000ff"]ReDim[/color] myArray([b]Application[/b].Worksheets.Count)

    index = 0
    [color="#0000ff"]For[/color] [color="#0000ff"]Each[/color] ws [color="#0000ff"]In[/color] Worksheets
        myArray(index) = ws.Name
        index = index + 1

    [color="#0000ff"]Next[/color]

    [color="#0000ff"]ReDim[/color] mySelection(index - 1)

    [color="#0000ff"]For[/color] k = 0 [color="#0000ff"]To[/color] index - 1
        mySelection(k) = myArray(k)
    [color="#0000ff"]Next[/color] k

    Sheets(mySelection).[color="#0000ff"]Select[/color]
    ActiveWindow.SelectedSheets.PrintPreview

[color="#0000ff"]End[/color] [color="#0000ff"]Sub[/color]

Du lägger till namnet på ditt blad direkt i en array. Det viktiga i slutet är att hela Arrayen är fylld, du måste alltså i början skapa en Array som är större än nödvändigt och sedan i slutet kopiera ut de samlade datat till en array av korrekt storlek. Du kan ju alltid vända på det och kolla storleken först, det viktiga är att det inte finns några tomma positioner i arrayen.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...