2017-10-06 2 views
1

Je génère la plage A dans Worksheet ("Modèle"). Je déplace ces valeurs à Worksheet ("Données"), afin que je puisse commencer à stocker toutes ces données. Je vais avoir un autre onglet ("SheetC") qui affiche deux plages sélectionnées par l'utilisateur à partir des données stockées. par exemple, plage A à partir du jour 1 et plage A à partir du jour 2. En cours de déplacement des données à stocker dans "Données", je souhaite les placer directement sous la dernière. J'ai un compteur que je référence dans "SheetC" qui augmente chaque fois que de nouvelles données sont placées dans la feuille (i). J'aimerais idéalement que chaque plage A de "Data" soit nommée en tant que Plage différente. Ainsi, lorsque l'utilisateur sélectionne une certaine plage, je peux simplement afficher cette plage en l'appelant, plutôt que d'avoir à rechercher une valeur dans la plage. données stockées et en utilisant offset.Créer une plage dynamique et stocker des plages nommées

Dim rngData_Total_a As Range 
Dim rngData_Total_b As Range 
Dim i As integer 

i = Sheets("SheetC").Range("AJ3").Value 
Set rngData_Total_a = Sheets("Model").Range("R14:BH270") 
Set rngData_Total_b = Sheets("Data").Range(Cells(3 + 270 * i, 3), Cells(3 + 257 * (i + 1), 3)) 

rngData_Total_b.Value = rngData_Total_a.Value 

Je continue d'obtenir une erreur d'application/d'objet. Peut-on simplement définir une gamme en tant que telle? Ou y a-t-il un moyen plus efficace de le faire? Idéalement, je voudrais aussi un nom de plage dynamique, de sorte que rngData_Total_b change son nom avec chaque nouvelle plage. Fondamentalement, le processus me répliquerait en pré-définissant x nombres de plages en tant que noms différents et différents emplacements dans "Données", étant donné que je ne connais pas le nombre de plages que je vais y stocker.

Merci

Anthony

+1

Vous devez qualifier les cellules() à l'intérieur de la plage à la même feuille de parent 'Sheets ("Données"). Range (feuilles ("Data") .Cellules (... ' –

+0

Merci, cela a fait l'affaire.Y at-il un moyen de renommer la plage différente de rngData_Total_b une fois qu'il a été placé dans l'onglet Données? Quelque chose comme: Dim" rngData_Total_ " & je comme Range au lieu du nom fixe de "b"? –

Répondre

0

Essayez essai

Sub test() 
Dim rngData_Total_a As Range 
Dim rngData_Total_b As Range 
Dim i As Integer 
Dim rngT As Range 

i = Sheets("SheetC").Range("AJ3").Value 
Set rngData_Total_a = Sheets("Model").Range("R14:BH270") 
With Sheets("Model") 
    Set rngT = .Range("c" & Rows.Count).End(xlUp)(2) 
    Set rngDaata_total_b = rngT.Resize(257, 43) 
End With 
'Set rngData_Total_b = Sheets("Data").Range(Cells(3 + 270 * i, 3), Cells(3 + 257 * (i + 1), 3)) 

rngData_Total_b.Value = rngData_Total_a.Value 
End Sub