VBA - Ensemble de la Gamme Entre les Deux Dates à l'Aide de la Fonction Recherche

J'essaie d'obtenir mon code VBA à la recherche à travers une colonne pour un utilisateur de saisie de la valeur (dans un formulaire) et de définir une plage sur la base des valeurs.

J'ai besoin du code pour balayer vers le BAS de la colonne jusqu'à ce qu'il trouve la valeur (qui est une date), puis de numériser à travers la colonne pour obtenir la deuxième partie de la gamme. J'ai besoin d'elle pour être comme cela, car il peut y avoir plusieurs instances de la même date et qu'ils doivent être pris en compte.

J'ai essayé ceci:

StartRange = ws.Cells.Find(What:=StartDate, SearchOrder:=xlRows, _
    SearchDirection:=xlNext, LookIn:=xlValues)

EndRange = ws.Cells.Find(What:=EndDate, SearchOrder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues)

Mais il ne fonctionne pas de la façon dont j'avais prévu, et est erroring. (Edit: le WS a été défini, donc je sais que ce n'est pas la question). Je ne sais même pas si je vais sur ce la bonne manière

Je me sens vaincu 🙁

Toute aide serait appréciée, Merci d'avance!

Edit:

Je n'ai pas encore essayer l'une des suggestions que je suis loin de mon projet pour le moment, mais je sens que j'ai besoin de clarifier un peu les choses.

  1. Les dates seront toujours dans l'ordre chronologique, j'ai un script qui les organise sur la feuille d'activation

  2. J'ai besoin d'être en mesure d'erreur gérer les dates qui ne figurent pas dans la base de données, j'ai aussi besoin du script pour etre capable de "sauter" des dates qui n'existent pas. C'est à dire, 1er 1er 1er, 3e, 3e, 5e. Si mon début et de fin dates ont été le 1er et le 5, l'ensemble de la gamme.

Merci pour votre aide pour l'instant les gars, si, je l'apprécie!

EDIT2:

J'ai essayé quelques réponses et ont ajouté ceci dans mon code, mais il est maintenant à défaut sur une Range_Global échouer.

Dim startrange, endrange, searchrange As Range
LookUpColumn = 2

With ws.Columns(LookUpColumn)
    Set startrange = .Find(What:=Me.R_Start.Value, _
      After:=ws.Cells(.Rows.count, LookUpColumn), _
      SearchOrder:=xlRows, _
      SearchDirection:=xlNext, LookIn:=xlValues)

    Set endrange = .Find(What:=Me.R_End.Value, _
      After:=ws.Cells(5, LookUpColumn), _
      SearchOrder:=xlRows, _
      SearchDirection:=xlPrevious, LookIn:=xlValues)

    searchrange = Range(startrange, endrange)

MsgBox searchrange.Address
End With

Des suggestions?

  • comme je comprends bien, la "date de début" et "date de fin" sont distincts. Q1: ces 2 entrées avec la même valeur? Q2:La colonne de recherche contient plus d'une fois à la fois la date de début/date de fin, une seule, laquelle? Projet de Solution: je voudrais aborder ce avec un for i=1 to X, s'arrêter quand j'ai frappé à la "date de fin", magasin, je de position et puis for j= (i's position) to 1 step -1 et de s'arrêter quand j'ai frappé à la "date de début". Je vais écrire le code mais j'ai besoin de plus de détails.
  • Merci Pour La Réponse. Q1) Oui, les dates peuvent être les mêmes et la gamme devrez sélectionner toutes les dates sont les mêmes. Q2) de La colonne de recherche peut contenir plusieurs entrées à la fois le début et la date de fin, par exemple: 1er, 1er, 1er, 2ème, 2ème, 3ème, 3ème. avec le 1er et le 3ème étant le début et date de fin. J'avais besoin de toute l'exemple de la gamme. Merci. Oh, et merci de votre projet, la seule chose est que je pourrait avoir le potentiel d'être au tamis de 30 000 lignes de données, j'ai donc pour X pourrait être très gourmande en mémoire?