• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Elegantere manier dan .Offset ?

Status
Niet open voor verdere reacties.

korol

Nieuwe gebruiker
Lid geworden
11 dec 2015
Berichten
2
Ik gebruik momenteel een macro met daarin een aantal if statements waar een aantal cellen geëvalueerd worden.

De IF statement staat in een loop en als de loop over A1 gaat evalueer ik bijvoorbeeld de waarde in C1 of G1.

Nu doe ik dat momenteel met .offset(0,2) etc.

Maar is er geen elegantere manier om dit te doen? Kan ik bijvoorbeeld mijn C en G kolommen een naam geven en dan op een of andere manier steeds refereren naar de cellen naast de cel die de loop momenteel gebruikt?

Of in ieder geval een manier die overzichtelijker/netter/eleganter is?
 
Laat je code eens zien, dat kijkt een stuk makkelijker.
 
Eigenlijk iets als dit, maar dan is de lijst veel langer en zijn er veel meer "ands" waardoor het onoverzichtelijk en lelijk wordt.

Code:
If cell = "1" and cell.offset(0, 4) = "2" and cell.offset(0, -2) = "3" Then

Elseif cell = "4" and cell.offset(0, 4) = "5" and cell.offset(0, -5) = "6" and cell.offset(0, -2) = "7" Then

Ik bedoelde ook gewoon in zijn algemeenheid of er een alternatieve methode was.
 
Laatst bewerkt:
maar dan is de lijst veel langer en zijn er veel meer "ands" waardoor het onoverzichtelijk en lelijk wordt.

En juist daarom is het zo belangrijk de hele code te laten zien.
 
In zijn algemeenheid: je kunt altijd met de Cells collectie werken; daarbij geef je rij en kolom op.
Code:
If Cells(2, 2).Value = 4 And Cells(6, 4).Value = 5 And Cells(8, 4).Value = 3 Then
Maar laat vooral meer van je code zien; we kunnen nooit beoordelen of iets beter kan als we niet weten waar het over gaat.
 
Zo te zien kijk je alleen binnen een rij. Bind je gegevens door er een excel tabel van te maken (Invoegen > Tabel), dan krijg je een hele object structuur cadeau om op een elegante manier rijen en kolommen te verwerken.
Listobject, Listrow, Lisrows.count, Listrows(i).range, Listcolumns("Naamveld").databodyrange.cells(i).value, etc etc.
 
Code:
sub M_snb()
   select case cell & cell.offset(0, 4) & cell.offset(0, -5) & cell.offset(0, -2)
   case "123" 

   case "4567" 
   
   end select
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan