Avatar billede alj Praktikant
13. august 2002 - 11:11 Der er 10 kommentarer og
1 løsning

Grafområde via variabler

Hejsa,
Et lille problem der består i at der skal laves en graf af et områdes data. Området har skiftende størrelse og fastlægges via variabel r=rækker og k=kol., jvf nedenstående makro.
Problemet er bare at den ikke virker, hvad er der galt ?

Sub LavePivot()
'
' LavePivot Makro
' Makro indspillet 13-08-2002 af Jensena
'

'
    Dim række As Integer, kol As Integer
    'find antal rækker og kol i data omtådet
    Range("L3").Select
    række = 1
    Do While ActiveCell.Value <> ""
    række = række + 1
    ActiveCell.Offset(1, 0).Select
    Loop
   
    Range("L3").Select
    kol = 1
    Do While ActiveCell.Value <> ""
    kol = kol + 1
    ActiveCell.Offset(0, 1).Select
    Loop
    kol = kol - 1
    r = række + 3
    k = kol + 12
   
    Range("L3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "'Ark1 (2)'!R3C12:R[r]C[&k]").CreatePivotTable TableDestination:=Range("B3"), _
        TableName:="Pivottabel1"
    ActiveSheet.PivotTables("Pivottabel1").SmallGrid = False
    ActiveSheet.PivotTables("Pivottabel1").AddFields RowFields:="Varenr", _
        ColumnFields:="dato"
    ActiveSheet.PivotTables("Pivottabel1").PivotFields("Pris").Orientation = _
        xlDataField
    Range("D6").Select
    With ActiveSheet.PivotTables("Pivottabel1").PivotFields("Sum af Pris")
        .NumberFormat = "#.##0,00"
    End With
End Sub

mvh
alj
Avatar billede alj Praktikant
13. august 2002 - 11:25 #1
UPS, Pivotabel skal laves IKKE graf
mvh
alj
Avatar billede bak Forsker
13. august 2002 - 13:56 #2
jeg har forkortet den lidt,alj
prøv at teste og vend så tilbage.

Sub LavePivot()
Dim r As Range
    Set r = [L3].CurrentRegion
    With ActiveWorkbook.PivotCaches.Add(xlDatabase, r.Address)
    .CreatePivotTable TableDestination:=Range("B3"), TableName:="Pivottabel1"
    End With
    With ActiveSheet.PivotTables("Pivottabel1")
        .SmallGrid = False
        .PivotFields("Dato").Orientation = xlColumnField
        .PivotFields("Varenummer").Orientation = xlRowField
        .PivotFields("Pris").Orientation = xlDataField
        .PivotFields("Sum af Pris").NumberFormat = "#,##0.00"
    End With
End Sub
Avatar billede alj Praktikant
13. august 2002 - 14:36 #3
Hej bak,
den er kortere, men virker ikke, idet bl.a. pivottabellen skal laves i ark2, men det væsentligste er at jeg skal bruge oprællingen af rækker hhv kol og ikke currentregion.
(Makroen skal kunne redigeres af andre, derfor skal den være step-by-step i vba-koden.)
mvh
alj
Avatar billede bak Forsker
13. august 2002 - 15:18 #4
Ok. Men så virker din egen heller ikke så godt, for du skifter ikke ark undervejs. dvs dine tællere bruger det aktive ark (der hvor pivoten også dannes mens data hentes fra ark1 (2). Jeg har ændret den lidt, men du skal starte hvor dine data er Ark1 (2) og du skal ha' et Ark2.
Sub test()
'
' LavePivot Makro
' Makro indspillet 13-08-2002 af Jensena
'

'
    Dim række As Integer, kol As Integer
    'find antal rækker og kol i data omtådet
    Range("L3").Select
    række = 1
    Do While ActiveCell.Value <> ""
    række = række + 1
    ActiveCell.Offset(1, 0).Select
    Loop
   
    Range("L3").Select
    kol = 1
    Do While ActiveCell.Value <> ""
    kol = kol + 1
    ActiveCell.Offset(0, 1).Select
    Loop
    kol = kol - 1
    r = række + 3
    k = kol + 11
   
    Range("L3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    With ActiveWorkbook.PivotCaches.Add(xlDatabase, "Ark1(2)!R3C12:R" & r & "C" & k)
    .CreatePivotTable TableDestination:=Range("Ark2!B3"), TableName:="Pivottabel1"
    End With
   
    Sheets("Ark2").Select
   
    With ActiveSheet.PivotTables("Pivottabel1")
        .SmallGrid = False
        .PivotFields("Dato").Orientation = xlColumnField
        .PivotFields("Varenummer").Orientation = xlRowField
        .PivotFields("Pris").Orientation = xlDataField
        .PivotFields("Sum af Pris").NumberFormat = "#,##0.00"
    End With
   
End Sub
Avatar billede alj Praktikant
13. august 2002 - 17:10 #5
Glimrende (og ja jeg havde også problem med at få den i ark2) og det er der stadig. Når jeg kører makroen går det glimrende indtil linien
.CreatePivotTable TableDestination:=Range("Ark2!B3"), TableName:="Pivottabel1", så kommer denne:
Fejlmed.: 1004, kan ikke åbne kildefilen 'Ark1(2)' til pivottabellen.
mvh
alj
Avatar billede bak Forsker
13. august 2002 - 17:28 #6
linien
With ActiveWorkbook.PivotCaches.Add(xlDatabase, "Ark1(2)!R3C12:R" & r & "C" & k)
skal ændres så arknavnet passer med dit arknavn (kildedata) (måske bae et mellemrum)
Avatar billede alj Praktikant
13. august 2002 - 21:41 #7
yes, du har retder manglede et mellemrum.
Den kører godt nu, men der er noget der undrer mig. Hver gang den køres får jeg "antallet af priser" og IKKE SUM af priser. Jeg har prøvet at indstille/køre flere makroer uden held, hvordan kan det være ?
mvh
alj
Avatar billede bak Forsker
13. august 2002 - 22:26 #8
Det kan jeg heller ikke greje, men du kan indsætte en extra linie efter
.PivotFields("Pris").Orientation = xlDataField
       
.PivotFields("Antal af Pris").Function = xlSum
Avatar billede bak Forsker
13. august 2002 - 22:54 #9
Nejjj, det her er mere rigtigt, det gør det navneufhængig.
.DataFields(1).Function = xlSum
.DataBodyRange.NumberFormat = "#,##0.00"
Avatar billede bak Forsker
14. august 2002 - 13:21 #10
Ps. en grund til at den automatisk stiller sig med antal er at Pris ikke er i talformat, men i tekstformat og det kan man jo ikke summe. ellers er standard SUM.
Avatar billede alj Praktikant
14. august 2002 - 13:40 #11
Ihhh... altså,
det var lige det der skulle til.
- MANGE TAK'r.
mvh
alj
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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

IT-JOB