2017-09-25 1 views
1
Set rngFound = Rows(5).Find("*", Cells(Columns.Count, 5), xlFormulas, , xlByColumns, xlNext) 

Le code ci-dessus donne l'erreur de décalage de type 13.Comment récupérer la première cellule non vide et la valeur de toutes les lignes dynamiques vba

vous prie de nous ce que je fais mal, ou suggère une autre méthode de faire la même chose.

+0

pouvez-vous partager le reste du code pertinent? Comment est défini 'rngFound', quelle feuille de travail essayez-vous d'utiliser' Find', etc. –

+0

rngfound est défini comme varriant ou range et si je remplace les lignes par des colonnes alors la même ligne de code fonctionne mais je n'arrive pas à trouver le valeur non vide d'une ligne. –

Répondre

1

Essayez le code ci-dessous, des explications à l'intérieur les commentaires de code:

Dim rngFound As Range 
Dim LastCol As Long 
Dim nonBlankCell As Variant 

With Worksheets("Sheet1") ' <-- modify to your sheet's name 
    ' -- get last column in a specific row by using the Find function -- 
    Set rngFound = .Rows(5).Find(What:="*", Lookat:=xlPart, LookIn:=xlFormulas, _ 
        SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) 

    If Not rngFound Is Nothing Then ' Find was successful 
     LastCol = rngFound.Column ' get last Column with data 
     nonBlankCell = rngFound.Value 
    End If 

End With 
+0

Merci pour l'aide, mais ce code montre toujours erreur de type incompatibilité 13, le problème est dans la ligne Set rngFound = .Rows (5) .Find (Quoi: = "*", Après: =. Cellules (1), Lookat: = xlPart, LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, SearchDirection: = xlNext, MatchCase: = False) –

+0

@yashikavaish essayer le code édité –

+0

Hé, ça fonctionne Merci de me dire s'il vous plaît quel est le problème dans le code ci-dessus ? –

0

Remplacer Cells(Columns.Count, 5) avec Cells(5, Columns.Count).End(xlToLeft) pour obtenir

Set rngFound = Rows(5).Find("*", Cells(5, Columns.Count).End(xlToLeft), xlFormulas, , xlByColumns, xlNext) 

Essayez cette

Sub Find_Cell() 
    Dim rngFound As Range 
    Set rngFound = ThisWorkbook.Sheets("Sheet1").Rows(5).Find(What:="*", LookIn:=xlValues) 

    If rngFound Is Nothing Then 
     MsgBox "All cells are blank." 
    Else 
     MsgBox "First Cell Address: " & rngFound.Address 
     MsgBox "First Cell Value: " & rngFound.Value 
    End If 
End Sub 

Si vous voulez aussi trouver cellule non vide ayant une formule équivalant à vide puis au lieu de LookIn:=xlValues utiliser LookIn:=xlFormulas