2009-12-30 4 views
0
Date | data | data | data 
12/29| G | F | G 
12/30| G |  | 

J'ai une feuille de calcul comme ci-dessus. Je veux trouver la ligne qui est la date actuelle, puis référence la ligne qui est la date actuelle dans un type Range. Parcourez ensuite les données de cette ligne.Excel 2007 VBA Trouver la ligne basée sur la date

je peux trouver la date actuelle, et obtenir l'adresse de la cellule qui est la date actuelle:

dateRange = "A1:" & regionSheet.Range("A1").End(xlDown).Address 

    For Each cell In regionSheet.Range(dateRange) 
     If cell.Value = Date Then 
     row = cell.Address 
     End If 
    Next cell 

qui renvoie $ A $ 2. Je dois transformer en quelque sorte dans un type Range. J'ai essayé d'utiliser le cell.Address comme ci-dessous:

row = cell.Address & ":" & regionSheet.Range(row).End(xlRight).Address

mais que les erreurs sur.

Peut-être que je vais à ce sujet dans le mauvais sens? Des idées? Merci!

+0

Allez-y et accepter la réponse, si c'est ce que vous recherchez. – shahkalpesh

Répondre

2
range(cell, cell.End(xlToRight)).Address 

OU

range(cell.Address, range(cell.Address).End(xlToRight)).Address 

EDIT: Si vous voulez qu'il ait dans le type Range, vous pouvez utiliser range(cell, cell.End(xlToRight))

+0

Bien, merci! –

1

averti que la fonction Fin() peut retourner des résultats incorrects si il y a des lacunes dans les données. Par exemple, si vous avez des données dans les deuxième et quatrième colonnes, Fin ne vous donnera pas le résultat souhaité.

Vous pouvez essayer quelque chose comme ceci (en supposant que vos données commencent à la ligne 1 et la colonne 1):

Sub RowOfCurrentDate() 

    Dim lngCurrDateRow As Long 
    Dim lngNumCols As Long 

    Dim rngDates As Range 
    Dim rngToday As Range 
    Dim c As Range 

    'Get current region and count the number of columns 
    Set rngDates = Range("A1").CurrentRegion 
    lngNumCols = rngDates.Columns.Count 

    'Resize the range down to one column 
    Set rngDates = rngDates.Resize(rngDates.Rows.Count, 1) 

    'Find today's date in the range 
    lngCurrDateRow = Application.WorksheetFunction.Match(CLng(Date), rngDates, 0) 

    'Set the range to search through for today 
    Set rngToday = Range(Cells(lngCurrDateRow, 1), Cells(lngCurrDateRow, lngNumCols)) 

    'then loop through all cells in that range 
    For Each c In rngToday 
     'if cell is not empty 
     If Len(c) > 0 Then 
      'do something 
     End If 
    Next c 

End Sub