tot laatste kolom min 1 van een rij wegschrijven

Status
Niet open voor verdere reacties.

Lisette2016

Gebruiker
Lid geworden
10 okt 2016
Berichten
46
Hallo ,

Ik heb een bestaande code die rijen met een aantal kolommen (17 stuks) wegschrijft als deze voldoen aan een voorwaarde.

Nu komen de rijen uit een draaitabel met maanden van het jaar. Bij een vol jaar zijn het precies 17 kolommen.
Nu dat ik weer met januari begin zijn het 6 kolommen.

Zou een deel van de code aangepast kunnen worden van "For INGZoekKolomNR = 1 To 17", naar "For INGZoekKolomNR = 1 To (einde van de laatste kolom min 1)" (laatste kolom is eindtotaal, deze hoeft niet).

Do While Worksheets("blad1").Cells(lngZoekRegel, 2) <> vbNullString
If Worksheets("blad1").Cells(lngZoekRegel, 2).Value = strZoekwaarde Then
For lngZoekKolomNr = 1 To 17

alvast bedankt.
 
Wanneer je voordat je de loopingaat bepaald ovre hoeveel maanden het gaat, kun je een variabele maken die de waarde 5 +aantMaanden krijgt.Gebruik deze(i.p.v. de door jou gebruikte waarde 17 in de for loop...
 
helaas kan ik vooraf niet altijd bepalen over hoeveel maanden we het hebben, daar het voor de ene locatie anders kan zijn dan voor de andere. Dan speelt de aanvang van ook nog een rol.
Ik had gehoopt, dat ik op de een af andere manier kijk over hoeveel kolommen er totaal zijn minus 1, en dat deze info wordt weggeschreven.
 
Wanneer je het adres kent van de begin en eind cel kun je deze van elkaar aftrekken, nadat je van beide cellen de klomnummers heb opgevraagd.
In cell formule (engels) =COLUMN(CELL("address";A1)) geeft 1 in de cel
Zet dat eventueel om naar je VBA code.
 
Plaats gelieve de gehele code ipv delen.
Code:
[COLOR=#333333]For INGZoekKolomNR = 1 To [/COLOR][COLOR=#3E3E3E].Cells(lngZoekRegel, columns.count).end(xltoleft).column[/COLOR]
 
Je kan ook het aantal zichtbare kolommen in het waardegedeelte van de draaitabel tellen.

Code:
MsgBox Sheet1.PivotTables(1).DataBodyRange.Columns.Count - 1
 
@JanEnEm, ik begrijp niet wat je bedoeld.
@HSv, Ik heb deze geprobeerd, maar kwam helaas foutmelding, had enige hoop dat dit was wat ik bedoelde.
@VenA, uitkomst was 1?

Hier dan toch maar de code (weet alleen niet om 'm in een "box" te krijgen.

Sub ATrucksoort(truck As String, doelregelnr As Long)
Dim strZoekwaarde As String
Dim lngZoekKolomNr As Long
Dim lngZoekRegel As Long
Dim lngDoelRegel As Long

strZoekwaarde = truck
lngDoelRegel = doelregelnr
lngZoekRegel = 6

Do While Worksheets("sheet1").Cells(lngZoekRegel, 2) <> vbNullString
If Worksheets("sheet1").Cells(lngZoekRegel, 2).Value = strZoekwaarde Then
For lngZoekKolomNr = 1 To 17
Worksheets("Analyse").Cells(lngDoelRegel, lngZoekKolomNr).Value = Worksheets("sheet1").Cells(lngZoekRegel, lngZoekKolomNr).Value
Next lngZoekKolomNr
lngDoelRegel = lngDoelRegel + 1
End If
lngZoekRegel = lngZoekRegel + 1
Loop

End Sub
 
Als het kan moet je even een dummy-bestand maken met hoe een en ander eruit ziet.
 
@VenA, uitkomst was 1?

Dan heb je 1 kolom in de waarde kolom zichtbaar en het eindtotaal aanstaan toch? Dus een voorbeeldbestand met daarin de draaitabel zou welkom zijn.
 
Niet dat ik er heel veel van begrijp. Waarden van een al gedefinieerde variabele toekennen aan een nieuwe variabele? Hoe leesbaar wil je het geheel dan houden? Met zoiets gaat het goed in jouw voorbeeldje. Een half voorbeeld geeft ook halve code maar lijkt mij niet moeilijk aanpasbaar.

Code:
Sub VenA()
Dim j As Long
  With Blad2.PivotTables(1)
    For j = 3 To .DataBodyRange.Rows.Count + .RowGrand + 2
      Blad1.Cells(38 + j, 1).Resize(, .TableRange1.Columns.Count + .ColumnGrand) = .TableRange1.Cells(j, 1).Resize(, .TableRange1.Columns.Count + .ColumnGrand).Value
    Next j
  End With
End Sub
 
Probleem opgelost.
De simpelheid zat in de draaitabel zelf. Bij opties eindtotaal uitzetten, en probleem opgelost.
Iedereen bedankt voor het meedenken.
 

Bijlagen

Laatst bewerkt:
Kan je hiermee vooruit?
Code:
For INGZoekKolomNR = 1 sheets("magazijn").PivotTables(1).TableRange2.Columns.Count - 1

Edit: Intussen al opgelost.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan