J'ai essayé de résoudre ce problème depuis quelques jours maintenant et je ne peux pas m'en occuper. J'ai cherché plusieurs sites Web (Même ici plusieurs fois), j'ai vu que beaucoup de gens ont posé cette question, mais les solutions ne fonctionnent pas pour moi.
Je souhaite find la dernière apparition d'une string dans une gamme et stocker l'adresse dans une variable et afficher un message me dire où elle se trouve.
Jusqu'à présent, j'ai ce
Private Sub CmdBtnClockIt_Click() Dim job As Ssortingng Dim searchTerm as Range job = CmbBoxJob.Value searchTerm = Range("A1:A999").find(what:=job, searchorder:=xlByColumns, searchdirection:=xlPrevious).Column MsgBox "last cell is " & searchTerm.Address End Sub
Tout ce que je semble avoir, c'est soit un «qualificatif invalide», soit une «variable d'object ou une variable de bloc non définie»
Toute aide est appréciée
Le premier problème est que searchTerm
est défini comme un object Range
. Vous devez définir les affectations d'objects en utilisant le mot-key Set
. Donc, l'affectation devient Set searchTerm = Range("A1:A999")...
Deuxièmement, vous accédez à des messages d'erreur si le searchTerm
n'est pas trouvé, car searchTerm
recevra une valeur de Nothing
. Nous pouvons éviter ce problème en utilisant une condition simple pour vérifier si le job
été trouvé.
Par conséquent, votre Sub
actualisé pourrait ressembler à ceci:
Private Sub CmdBtnClockIt_Click() Dim job As Ssortingng Dim searchTerm As Range job = CmbBoxJob.Value Set searchTerm = Range("A1:A999").Find(what:=job, searchorder:=xlByColumns, searchdirection:=xlPrevious) If searchTerm Is Nothing Then MsgBox "Text was not found" Else MsgBox "Last cell is " & searchTerm.Address End If End Sub
Que diriez-vous:
Sub dural() Dim job As Ssortingng Dim searchTerm As Range job = "Happiness" Set searchTerm = Range("A1:A999").Find(what:=job, after:=Range("A1"), searchorder:=xlByColumns, searchdirection:=xlPrevious) MsgBox "last cell is " & searchTerm.Address End Sub
Remarquez que j'ai utilisé Set .