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

Excel Visual basic selectie script

Status
Niet open voor verdere reacties.

Tostie

Gebruiker
Lid geworden
29 okt 2009
Berichten
11
Beste allemaal,

Ik zie dat hier heel wat mensen met kennis rondhangen, en dat moet ik hebben.
Ik heb een vraag over een VB scriptje in excel.

Om in grote sheets alles een beetje goed te kunnen overzien, heb ik dit scriptje gevonden.
Wat hij doet is zowel links als boven aangeven in welke kolom/rij ik werk.
'Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
h = ActiveCell.Height
w2 = ActiveCell.Width
t = ActiveCell.Top
W = ActiveCell.Left

On Error Resume Next
ActiveSheet.Shapes("RectangleV").Delete
On Error Resume Next
ActiveSheet.Shapes("RectangleH").Delete

ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, t, W, h).Name = "RectangleV"
With ActiveSheet.Shapes("RectangleV")
.Fill.Visible = msoFalse
.Fill.Transparency = 1#
.Line.Weight = 2#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With

ActiveSheet.Shapes.AddShape(msoShapeRectangle, W, 0, w2, t).Name = "RectangleH"
With ActiveSheet.Shapes("RectangleH")
.Fill.Visible = msoFalse
.Fill.Transparency = 1#
.Line.Weight = 2#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub

Nu kan ik de velden boven de rij die bewerk niet meer aanklikken/bewerken. Als ik daar op klik word het VB object geselecteerd.

Hoe kan ik het zo instellen dat ik ook gewoon aan de boven en zijkant een veld aan kan klikken of bewerken ? Ik kom er niet echt uit ;)
Ik hoop dat jullie de vraagstelling snappen.

Alvast bedankt,


Tim
 
Laatst bewerkt:
Kun je je vraag nog eens overlezen en er foutloos en begrijpelijk Nederlands van maken ?
 
Wat hoop je met de code te bereiken?
Excel geeft namelijk automatisch aan wat de actieve cel is met het bijbehorende adres?

Iedere keer als je iets selecteer in het bestand dan wordt de code geactiveerd.
In Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) zou je de Selection kunnen verwijderen zodat uitsluitend bij een wijziging de code wordt geactiveerd.

Een voorbeeld bestand zou wat duidelijkheid kunnen scheppen.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
hmm, ja. ik zie het.. is wel heeel slecht ;) zal het aanpassen
 
Roncancio,

Als ik in mijn excel lijst heel veel rijen en kolommen heb is het slecht te overzien wat de kolom/rij is waar ik in werk.

Bekijk bijlage test.zip
Voor jou ook een voorbeeld. Het is een xlsm
 
Laatst bewerkt:
Ik bedoel boven de A=kolom staat een vakje waarin het adres van de actieve cel staat.
Anders moet je even aangeven wat je wilt hebben.

Met vriendelijke groet,


Roncancio
 
Alternatief:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  For j = 1 To 2
    If [A100] = "" Then [A100] = Target.Address
    With Choose(j, Range([A100]), Target)
      .Offset(1 - .Row).Resize(.Row - 1).Interior.ColorIndex = Choose(j, 0, 7)
      .Offset(, 1 - .Column).Resize(, .Column - 1).Interior.ColorIndex = Choose(j, 0, 7)
      End With
  Next
  [A100] = Target.Address
End Sub
 
Super SNB,

Dit lijkt er erg op.
Alleen nu nog 1 ding. Kan ik ze ook alleen omlijnen en dus niet opvullen ?

Groeten,

Tim
 
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  For j = 1 To 2
    If [A100] = "" Then [A100] = Target.Address
    With Choose(j, Range([A100]), Target)
      .Offset(1 - .Row).Resize(.Row - 1).Borders.ColorIndex = Choose(j, xlNone, 3)
      .Offset(, 1 - .Column).Resize(, .Column - 1).Borders.ColorIndex = Choose(j, xlNone, 3)
      End With
  Next
  [A100] = Target.Address
End Sub
 
Super ;) :thumb:

Nu nog 1 ding ;)
kan de lijn ook dikker en eventueel niet met elk veld omlijnd ?

Groeten,

TIm
 
Ja hoor.
Met 99% van de oplossing kun jij die laatste procent best wel inkoppen.
 
iets met
.LineStyle = xlContinuous
.ColorIndex = 0
.Weight = xlThin

Maar ik heb geen idee hoe of waar
 
Laatst bewerkt:
Hoi Tim,

Best een leuke code die je in je eerste post hebt staan.

Je kunt in VBA aangeven wat het bereik is waar de VBA-code werkzaam moet zijn. Dat is volgens mij je vraag.

If not intersect(target, Range("A10:K999")) is nothing then
Jouw code
End if

En met intersect(target, Union(Range("A10:K999"),Range("P20:Z49"))) is nothing kun je verschillende rangegebieden an elkaar knopen.

Jeroen
 
Laatst bewerkt:
Jammer, nog niet gelukt.

Nog een terug op mijn code.
Als ik klik op een vakje, kun je links en boven zien in welke rij of kolom ik werk.

Nu wil ik klikken op een veld boven me, dit kan dus niet omdat ik dan de door de VB gecreeerde balk aanklik.

Jeroen, met jouw code krijg ik een foutmelding, ik ben niet zo into VB..
 
Test deze eens.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets(1).UsedRange.Borders.LineStyle = xlLineStyleNone
If Target.Column = 1 Or Target.Row = 1 Then Exit Sub
    With Target
      .Offset(1 - .Row).Resize(.Row - 1).BorderAround xlContinuous, xlMedium, 3
      .Offset(, 1 - .Column).Resize(, .Column - 1).BorderAround xlContinuous, xlMedium, 3
    End With
End Sub
 
Laatst bewerkt:
Bij het eerdere voorbeeld document gaat het goed, echter alleen in de bestaande rijen/kolommen. Als ik het verder op een leeg vak creeer, omlijnd het script alle rijen en kolommen.

Deze :
'Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
h = ActiveCell.Height
w2 = ActiveCell.Width
t = ActiveCell.Top
W = ActiveCell.Left

On Error Resume Next
ActiveSheet.Shapes("RectangleV").Delete
On Error Resume Next
ActiveSheet.Shapes("RectangleH").Delete

ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, t, W, h).Name = "RectangleV"
With ActiveSheet.Shapes("RectangleV")
.Fill.Visible = msoFalse
.Fill.Transparency = 1#
.Line.Weight = 2#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With

ActiveSheet.Shapes.AddShape(msoShapeRectangle, W, 0, w2, t).Name = "RectangleH"
With ActiveSheet.Shapes("RectangleH")
.Fill.Visible = msoFalse
.Fill.Transparency = 1#
.Line.Weight = 2#
.Line.ForeColor.SchemeColor = 10
.PrintObject = False
End With
End Sub

en Deze :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For j = 1 To 2
If [A100] = "" Then [A100] = Target.Address
With Choose(j, Range([A100]), Target)
.Offset(1 - .Row).Resize(.Row - 1).Borders.ColorIndex = Choose(j, xlNone, 3)
.Offset(, 1 - .Column).Resize(, .Column - 1).Borders.ColorIndex = Choose(j, xlNone, 3)
End With
Next
[A100] = Target.Address
End Sub

Waren goed alleen bij de eerste waren de rijen en kollommen niet aanklikbaar en bij de onderste gaat hij elk vakje omlijnen. Ze hebben allebei een stukje code die ik nodig heb.
 
Vorige code aangepast zodat hij ook werkt buiten de tabel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan