met for each een rng in meerdere sh selecteren

Status
Niet open voor verdere reacties.

WillemSchaaper

Gebruiker
Lid geworden
2 nov 2004
Berichten
22
Public Sub test()
Dim a As Range, b As Range, c As Range
Dim x As Byte
Set a = Range("B1:D1")
Set b = Range(Cells(26 - 1, 1), Cells(3, 4))
Set c = Application.Union(a, b)

For x = 1 To 3
Worksheets(x).Activate
c.Select
Next x
End Sub
De eerste keer gaat het goed. Bij de volgende krijg ik de foutmelding "Methode van klasse Range is mislukt"
Weet iemand wat ik fout doe?????
 
Doet dit het?

Code:
Public Sub test()
Dim a As Range, b As Range, c As Range
Dim x As Byte
Set a = Range("B11")
Set b = Range(Cells(26 - 1, 1), Cells(3, 4))
Set c = Application.Union(a, b)

For x = 1 To 3
Worksheets(x).Activate
[B]Range("c.Address).Select[/B]
Next x
End Sub

Wigi
 
Hallo Wigi

Allereerst bedankt voor het reageren. Je voorgestelde wijziging werkt in ieder geval bijmij niet.

m.v.g

Willem Schaaper
 
Hallo Allemaal.

Ik heb het na googelen en zelf proberen opgelost asl volgt. (Ik snap alleen de logica erachter niet)

Public Sub test1()
Dim a As Range, b As Range, c As Range
Dim x As Byte
For x = 1 To 3
Worksheets(x).Activate
Set a = Range("B1:d1")
Set b = Range(Cells(26 - 1, 1), Cells(3, 4))
Set c = Application.Union(a, b)
c.Select
Next x
End Sub

Dus als je de set opdrachten binnen de for each zet, werkt het wel.

In ieder geval bedankt voor de reacties

Willem Schaaper

:thumb:
 
Willem

goed dat je zelf een oplossing gevonden hebt :thumb:

Alleen was mij niet duidelijk wat de bedoeling was / is.

Wat is de rest van de code? Want alleen een (samengesteld) bereik selecteren is vrij onzinnig als je het mij vraagt.

Als ik de rest van de code had gezien, had ik misschien tips kunnen geven om die Select eruit te zwieren.

Jouw probleem was dat a, b en c naar het huidige bestand verwijzen op het moment dat VBA die regels uitvoert. Als je daarna andere tabbladen gaat selecteren, geeft dat "troubles".

Ik denk dat ik weet waarom mijn voorstel niet werkt.

De " moet weggedaan worden. Dan werkt het wel.

Dus, wat wil je verder in de code nog doen?

Wigi
 
Hallo Wigi

Dit is de originele code

Option Explicit
Dim TotalRange As Range
Dim SelectieData As Range
Dim SelectieCategorie As Range
Dim mysheet As Worksheet
Sub GrafVerversen()
Dim ChtObj As ChartObject

For Each mysheet In Worksheets
If Not (mysheet.CodeName = "Bl1_Grafiek" Or _
mysheet.CodeName = "Bl0_KnoppenBlad") Then
mysheet.Activate
FindLastFilledDateRow 'Zoekt de laatste gevulde cel in kolom a van elke sheeten geeft de variabele datum terug
Set SelectieCategorie = Range("A7:E7") 'is een vaste range
Set SelectieData = Range(Cells(Datum - 1, 1), Cells(Datum - 13, 5)) ' kollommen zijn in elke sheet vast
Set TotalRange = Union(SelectieData, SelectieCategorie)
TotalRange.Select
End If
Next mysheet

Worksheets("Grafieken").Select
For Each ChtObj In ActiveSheet.ChartObjects
ChtObj.Activate
ActiveChart.ChartArea.Select
ActiveChart.SetSourceData Source:=TotalRange, PlotBy:=xlColumns
Next ChtObj
End Sub

Wat ik wil is de TotalRange onthouden en dan vervolgens gebruiken om de datasource te zetten voor elk van de grafieken. Mogelijk moet ik hier een array voor gebruiken.

M.v.g.

Willem Schaaper
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan