Dit kan je doen door bijvoorbeeld de volgende macro.
Hierbij is het zo dat de waarden uit c16 en d16 dienen te
worden gewisseld.
Gebruik hiervoor de volgende macro:
Sub wissel()
Dim cel1 As String
Dim cel2 As String
cel1 = Range("c16")
cel2 = Range("d16")
Range("c16") = cel2
Range("d16") = cel1
End Sub
Succes ermee.
Groeten,
Remco
>.
>
Private Sub Worksheet_SelectionChange _
(ByVal Target As Range)
Dim a As String
Dim b As String
If Selection.Cells.Count = 2 Then
a = Selection.Cells(1).Value
b = Selection.Cells(2).Value
Selection.Cells(1) = b
Selection.Cells(2) = a
End If
End Sub
--
Met vriendelijke groeten,
Ber Visser
"Arjan" <arjan....@gepex.ge.com> schreef in bericht
news:a8af01c24f4d$cd895200$a4e62ecf@tkmsftngxa06...
Werner
Ber Visser <viss...@pandora.be> schreef in berichtnieuws
O6NP9e1TCHA.2652@tkmsftngp12...
Dat heeft er mee te maken dat de code wordt uitgevoerd op het moment dat je
een tweede cel kiest en als je dat bijvoorbeeld doet met de muis met
ingedrukte controltoets dan wordt een tweede gebied geselecteerd. "Selectie"
houdt vervolgens alleen rekening met het eerste gebied (dat je hebt
geselecteerd) en ziet Cells(2) als de cel onder Cells(1). De wisseling is
dan ook tussen de eerst gekozen cel en die eronder. De tweede gekozen cel
doet aan de wisseling niet mee.
Vermoedelijk heeft Ber dit alleen als demonstratievoorbeeld
geplaatst en dat werkt.
Een aantal aanpassingen, maar daarmee uiteraard niet persé foutloos, volgt
hieronder.
Onderstaande macrocode kun je in een aparte module plaatsen en bijvoorbeeld
aan een sneltoets hangen.
Deze wisselt twee waarden ook als ze niet direct naast of onderelkaar staan
(er is dan sprake van meerdere gebieden of Areas).
Bovendien wordt de celopmaak voor wat betreft de notatie (NumberFormat) mee
gewisseld. Dat is bijvoorbeeld van belang als je datums wisselt met gewone
getallen.
Als er formules in de cellen staan wordt er niet gewisseld.
Om de code hier beter, zonder dat regels al te vaak worden afgebroken, te
kunnen plaatsen, heb ik de leesbaarheids inspringingen grotendeels
weggelaten.
Private Sub WaardenWisselen()
Dim a As Variant
Dim aL As Variant
Dim msg As String
If Selection.Cells.Count = 2 Then
If Selection.Areas.Count = 1 Then
'in geval van aaneengesloeten cellen
'als er formules staan wordt er niet gewisseld
If (Selection.Cells(1).Formula = CStr(Selection.Cells(1)) Or _
IsNumeric(Selection.Cells(1).Formula)) And (Selection.Cells(2).Formula = _
CStr(Selection.Cells(2)) Or IsNumeric(Selection.Cells(2).Formula)) Then
a = Selection.Cells(1).Value
aL = Selection.Cells(1).NumberFormat
Selection.Cells(1) = Selection.Cells(2).Value
Selection.Cells(1).NumberFormat = Selection.Cells(2).NumberFormat
Selection.Cells(2) = a
Selection.Cells(2).NumberFormat = aL
Else
msg = "De selectie bevat formules. Er wordt niet gewisseld."
End If
Else
'in geval van niet aaneengesloten cellen
If (Selection.Areas(1).Formula = CStr(Selection.Areas(1)) Or _
IsNumeric(Selection.Areas(1).Formula)) And (Selection.Areas(2).Formula = _
CStr(Selection.Areas(2)) Or IsNumeric(Selection.Areas(2).Formula)) Then
a = Selection.Areas(1).Value
aL = Selection.Areas(1).NumberFormat
Selection.Areas(1) = Selection.Areas(2).Value
Selection.Areas(1).NumberFormat = Selection.Areas(2).NumberFormat
Selection.Areas(2) = a
Selection.Areas(2).NumberFormat = aL
Else
msg = "De selectie bevat formules. Er wordt niet gewisseld."
End If
End If
Else
msg = "Het aantal geselecteerde cellen en/of gebieden is ongelijk aan twee."
End If
If Len(msg) > 0 Then
MsgBox msg, vbInformation, "Waarden wisselen"
End If
End Sub
't Is wel een heel verhaal geworden, maar ja ....
Jan