J'ai le code ci-dessous qui fonctionne (presque) où la déclaration debug.Print est, j'aimerais que cela soit variable newrng em>. P> Si j'essaie de définir ce objet requis p>
blockQuote> Qu'est-ce que je fais mal? p> p> Set Newrng = cellules (x, 2) .Address code>, je reçois une erreur: p>
3 Réponses :
Vous n'avez pas besoin du .Address code>. Tout ce dont vous avez besoin est celui-ci: set newrng = cellules (x, 2) code> p>
Cela me donne la valeur des cellules, mais je veux vraiment l'adresse. pensées?
C'est dans une instruction "avec", vous devez donc faire référence aux membres en préfixant A "."
N'oubliez pas d'utiliser directement référence (c'est-à-dire wb.worksheets) p>
devrait être un exemple pour vous ... p>
J'essayais à l'origine cela, mais cela renvoie une chaîne de texte "05" lorsque je mets la période, et cela le fait 8 fois. Je suis familier avec l'utilisation de la période au sein d'une déclaration, mais cela ne fonctionne pas pour une raison quelconque. et quand j'essaye le débogage.Print Newrng.Address, il apparaît 8 fois plus de 113 dollars C $ - 120 $ C $) lorsque cela devrait faire référence à la colonne B.
C'est parce que newrng est fixé par rapport à la colonne B.
Donc, la solution n'était pas de déclarer Newrng comme une plage. Je l'ai laissé comme une variante et le code ci-dessous fonctionne maintenant.
Sub Find_PhaseCode_Cell2()
Dim rng As Range
Dim newrng
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = Sheets("Control budget ")
With ws
Set rng = Range("b57:b64")
With rng
For x = 57 To 64
If Cells(x, 2).Value <> "" Then
Debug.Print Cells(x, 2).Address
newrng = Cells(x, 2).Address
MsgBox newrng
End If
Next x
End With
End With
End Sub
Veuillez noter que tous vos avec code> sont inutiles que si vous commenciez une instruction avec un point . Code> comme .Cells code>. Je recommande fortement de lire sur la manière dont avec code> déclarations Actuall fonctionne.