• 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.

tot laatste waarde kolom a

Status
Niet open voor verdere reacties.

don42

Gebruiker
Lid geworden
25 apr 2014
Berichten
800
Hallo allemaal nog even 1tje

ik heb dit gemaakt
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("a1:a97"), Target) Is Nothing Then
   Range("e2") = Target.Value
   Range("l1").Select
   End If
End Sub

ik wil weer graag van die 97 af maar tot de laatste waarde van kolom A
dus maak er
Code:
Range("a1").end.(xlup)
Dat werkt overal maar hier niet iemand die het weet

Don
 
Maak er eens dit van:
Code:
Range("A65536").End(xlup).Row
 
Hoi

nee dat werkt niet krijg de melding typen komen niet overeen en .Row is dan blauw
 
Ja, die werkt wel. Laat anders eens zien hoe het nu in je code staat.
 
Oke ik heb dit

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("A65536").End(xlUp).Row, Target) Is Nothing Then
   Range("e2") = Target.Value
   Range("l1").Select
   End If
End Sub

compileerfout is de melding
 
Zo werkt dat natuurlijk ook niet. Probeer deze maar eens:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim LastRow As Integer

    LastRow = Range("A65536").End(xlup).Row
    If Not Intersect(Range("A1:A" & LastRow), Target) Is Nothing Then
       Range("E2") = Target.Value
       Range("L1").Select
   End If
End Sub
 
Edmoor,

Ja dit is weer andere koek
en uiteraard werkt deze wel
vind dit zo raar (Range("A1:A" & LastRow)

bedankt maar weer eens een keer
 
Toch klopt het, zoals je gemerkt hebt. Ik heb een variabele met de naam LastRow gedeclareerd. Deze wordt gevuld met het regelnummer dat wordt teruggegeven door Range("A65536").End(xlup).Row. In (Range("A1:A" & LastRow) wordt dat regelnummer d.m.v. het & teken vastgeplakt aan (Range("A1:A" en klopt het weer.
 
Weet dat de integer maar t/m rij 32767 gaat.
Beter is om met Long te declareren.
Ook mis ik nog een "cancel = true" in de code.

Maar ik schrijf het nog liever zo:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Range(Range("a1"), Cells(Rows.Count, 1).End(xlUp)), Target) Is Nothing Then
       Range("E2") = Target.Value
       Application.Goto Range("L1")
       Cancel = True
   End If
End Sub
 
Laatst bewerkt:
Wat betreft het verschil tussen Integer en Long heb je gelijk en ik kom inderdaad wel werkbladen tegen met meer dan 1 miljoen regels en daar is dat dan zeker nodig. Voor de lezer, de Cancel = True wordt in dit geval gebruikt om het dubbelklik event te elimineren. Een seintje dus naar Excel dat 'ie er verder niets mee hoeft te doen en dus niet de actieve cel in edit mode zet.

Wellicht handig om in het kader van Long en Integer ook even de de min en max waarden te laten zien van de verschillende datatypes in VB(A):
http://msdn.microsoft.com/en-us/library/47zceaw7.aspx
 
Laatst bewerkt:
Ik zou die grote werkbladen niet graag door willen spitten Ed. :D

Ik heb de link even bekeken, maar hoe komen ze nu t/m 32767 voor de integer.
Helaas zegt me 32 bits of 64 bits ook niets voor mijn Pc. (nooit in verdiept).
 
Die 32767 is alweer oud en gaat om 16-bit systemen maar is om 1 of andere reden nog steeds het maximum voor een Integer. Waarschijnlijk om compatibiliteitsproblemen te voorkomen. Het is trouwens een totaal van 32768 omdat de 0 ook wordt meegerekend, maar 32767 is inderdaad het hoogste getal dat in een Integer past. Of beter, door de compiler wordt toegestaan.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan