Just nu i M3-nätverket
Jump to content

Gruppera blad i Excel


BI

Recommended Posts

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

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...