[VBA] Converteren value van cellen

Pagina: 1
Acties:

  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 16-07 13:04
Om te beginnen, ik weet niet of dit bij officesuites hoort of bij programming. Omdat het in principe VBA is lijkt het met toch een programming vraagje.

Ik heb een stukje code gebakken, volgens mij is het verschrikkelijk lelijk, maar ik weet geen andere manier (als je die hebt, laat het me weten :+ ).

Excel 2003:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub DagnaamConversie()
 Range("A1:A7").Select
 For Each Cell In Selection
  Select Case ActiveCell.Value
          Case "maandag", "Maandag"
              ActiveCell.Value = "Ma"
          Case "Dinsdag", "dinsdag"
              ActiveCell.Value = "Di"
          Case "woensdag", "Woensdag"
              ActiveCell.Value = "Wo"
          Case "Donderdag", "donderdag"
              ActiveCell.Value = "Do"
          Case "vrijdag", "Vrijdag"
              ActiveCell.Value = "Vr"
          Case "Zaterdag", "zaterdag"
              ActiveCell.Value = "Za"
          Case "Zondag", "zondag"
              ActiveCell.Value = "Zo"
    End Select
 Next
End Sub

Ik heb cellen met dagen erin. In dit voorbeeld heb ik maar even 7 cellen onder elkaar genomen, één voor elke dag.

De bedoeling is dat elke cell apart bekeken wordt, en op basis daarvan hernoemt.
"Maandag" moet bijvoorbeeld "Ma" worden. De performance v/d code is niet belangrijk.

btw, als iemand gelijk een oplossing weet voor UCase en LCase onafhankelijkheid in deze code :) ziet er al wat netter uit.

you had me at EHLO


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 17-07 16:05

Maasluip

Kabbelend watertje

ActiveCell.Value = UCase(left(ActiveCell.Value,1)) & LCase (mid(ActiveCell.Value,2,1))

Niks met Select nodig dus.

[ Voor 3% gewijzigd door Maasluip op 11-07-2007 11:01 ]

Signatures zijn voor boomers.


  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 16-07 13:04
nu heb ik dus
code:
1
2
3
4
5
6
7
Sub dag()
 Range("A1:A7").Select
 For Each Cell In Selection
ActiveCell.Value = UCase(Left(ActiveCell.Value, 1)) & LCase(Mid(ActiveCell.Value, 2, 1))
Next Value

End Sub


maar dan pakt hij alleen de eerste cell (a1)

[ Voor 3% gewijzigd door sjongenelen op 11-07-2007 11:11 ]

you had me at EHLO


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17-07 21:52

Creepy

Tactical Espionage Splatterer

TheNymf schreef op woensdag 11 juli 2007 @ 10:48:
Om te beginnen, ik weet niet of dit bij officesuites hoort of bij programming. Omdat het in principe VBA is lijkt het met toch een programming vraagje.
Aangezien het hier Excel betreft en dat een office applicatie is hoort het toch in Officesuites en -software.

Move Programming -> Officesuites en -software

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Visual Basic:
1
2
3
4
5
6
 
Sub ookdaggraagwatmeerinspanninggevraagd()
 For Each AantepassenCel In Range("A1:A7")
AantepassenCel.Value = UCase(Left(AantepassenCel.Value, 1)) & LCase(Mid(AantepassenCel.Value, 2, 1))
Next
End Sub

  • Maasluip
  • Registratie: April 2002
  • Laatst online: 17-07 16:05

Maasluip

Kabbelend watertje

Met _heretic_.

[ Voor 67% gewijzigd door Maasluip op 11-07-2007 11:38 ]

Signatures zijn voor boomers.


  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 16-07 13:04
dat was 'm

bedankt :+

you had me at EHLO

Pagina: 1