• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

foutmelding compileerfout: ongeldige of niet gekwalificeerde verwijzing

Status
Niet open voor verdere reacties.

martijnbos

Gebruiker
Lid geworden
17 dec 2010
Berichten
101
Hoi allemaal,

Ik heb in een excel bestand onderstaande twee macro's gemaakt.
De bovenste macro met naam "macro3" geeft geen fouten met compileren.
Maar bij macro met naam macrogroupby geeft hij de melding:

ongeldige of niet gekwalificeerde verwijzing.
Doel van deze macro is een group by voor de cellen vanaf B tot aan de laatste cel

Dit bevreemd mij omdat het deels een kopie is van een stukje dat staat onder "macro3"
De melding doet hij in het gele stukje code onderaan.
Kan iemand mij verklaren waarom deze code de ene keer wel goed is en daaronder niet.

Code:
Sub Macro3()
  Dim LaatsteRij As Long, BData As Range
  With Selection
    .HorizontalAlignment = xlGeneral
    .VerticalAlignment = xlBottom
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
  End With
  With Sheets("blad1") 'in blad1
    .Columns("C:D").Delete Shift:=xlToLeft 'paar kolommen deleten
    .Cells.RowHeight = 20 'rijhoogtes aanpassen
    LaatsteRij = WorksheetFunction.Max(4, .Range("B" & Rows.Count).End(xlUp).Row)  'rij van de laatste niet-lege cel in B-kolom, met ondergrens 4
    Set BData = .Range("B4:B" & LaatsteRij)                   'B-kolom in dat blad over het ganse bereik van gegevens
    BData.Offset(, -1).FormulaR1C1 = "=VLOOKUP(RC[1],Picklocaties!C[1]:C[2],2,0)"  'zet in de A-kolom de formules
    .Range("A3").Value = "Picklocatie"
    .Range("F1").Value = "Gepicked door:"
    BData.Offset(, -1).Resize(, 11).Sort key1:=.Range("C4"), key2:=.Range("E4"), key3:=.Range("A4"), Header:=xlNo 'Vanuit B-kolom 1 naar links en dan 11 kolommen breed sorteren
  End With
End Sub
--------------------------------------------------------------------
Sub Macrogroupby()
'
' Macro1 Macro
' subtotaaal
'

'
   Dim LaatsteRij As Long, BData As Range
   LaatsteRij = WorksheetFunction.Max(4, .[COLOR="yellow"]Range[/COLOR]("B" & Rows.Count).End(xlUp).Row)
   Set BData = .Range("B4:B" & LaatsteRij)
    BData.Offset(, -1).Selection.Subtotal GroupBy:=5, Function:=xlSum, TotalList:=Array(7, 10), _
        Replace:=True, PageBreaks:=True, SummaryBelowData:=True
End Sub
 
Laatst bewerkt:
Code:
 Set BData = .Range("B4:B" & LaatsteRij)
door dat puntje voor Range zoekt hij naar de laatste With van een With ... End With-constructie, dus ga je die
With Sheets("blad1") 'in blad1
...
End With moeten toevoegen
 
Thxs, Dat was het

Maar nu loopt mijn subtotaal niet.
Heeft iemand enig idee wat hier nu niet aan klopt\
Hijkomt met fout 1004
Methode van subtotaal van klasse range mislukt.
Dit terwijl de laatste Rij wel goed staat.

Iemand enig idee


Code:
Sub Macro4()
With Sheets("blad1")
   Dim LaatsteRij As Long, BData As Range
   LaatsteRij = WorksheetFunction.Max(4, .Range("B" & Rows.Count).End(xlUp).Row)
   Set BData = .Range("B4:B" & LaatsteRij)
BData.Offset.Subtotal GroupBy:=5, Function:=xlSum, TotalList:=Array(7, 10), _
        Replace:=True, PageBreaks:=True, SummaryBelowData:=True
        End With
End Sub[CODE]
 
Laatst bewerkt:
gooi er eens een voorbeeldje bij, die groupby:=5 begrijp ik niet goed
 
hierbij het voorbeeldje.
Het gaat dus om macro met naam Sub Macrosubtotaal()

De bedoeling is:

1. Laatste rij zoeken
2. Een subtotaal toevoegen voor bereik b4 tot en met laatste rij, voor elke wijziging in kolom artikelnummer(dat is groupby 5).
Hij moet een som doen van de kolommen G(aantal collo) en J(aantal stuks)
En die subtotalen onder het artikel zetten en een pagina einde tussen de groepen zetten.

Bekijk bijlage test VD 4-2-11.zip
 
met een voorbeeldje zie je het direkt, je bereik was maar 1 kolom breed en moet tot kolom K gaan
Code:
Sub Macrosubtotaal()

  With Sheets("blad1")
    Dim LaatsteRij As Long, BData As Range
    LaatsteRij = WorksheetFunction.Max(4, .Range("B" & Rows.Count).End(xlUp).Row)
    Set BData = .Range("B3:B" & LaatsteRij)
    BData.Offset(, -1[COLOR="red"]).Resize(, Columns("K").Column).[/COLOR]Subtotal GroupBy:=5, Function:=xlSum, TotalList:=Array(7, 10), _
                                                              Replace:=True, PageBreaks:=True, SummaryBelowData:=True
  End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan