Avatar billede plastikanden Nybegynder
30. marts 2004 - 13:31 Der er 6 kommentarer

ændring af værdi i range

Tallene 8011 – 8016 ændres til 8001 – 8006. 
Tallene 8020 – 802145 ændres til 9000 – 9145.
Tallene 803000 – 803024 ændres til 10000 – 10024.

Dvs i den første er der 6 tal
i den anden er der 146 tal
i den tredje er der 25 tal

Hvordan laver jeg en løkke/tæller så den selv ændres. Nedenfor er den kode jeg selv har genereret indtil videre, ved godt at det kan gøres mindre kodemæssigt, men hvordan får jeg en tæller/løkke ind, så jeg ikke behøver skrive det for hver linie?

Sub Change_Database()




Dim data1 As Range, data2 As Range, data3 As Range, data4 As Range, data5 As Range, data6 As Range
Range(Range("B1015").Offset(0, 0), Range("B1015").End(xlDown)).Select

Do
    For Each data1 In Selection
        If data1.Value = "8011" Then data1.Value = "8001"
    Next
   
    For Each data2 In Selection
        If data2.Value = "8012" Then data2.Value = "8002"
    Next
   
    For Each data3 In Selection
        If data3.Value = "8013" Then data3.Value = "8003"
    Next
   
    For Each data4 In Selection
        If data4.Value = "8014" Then data4.Value = "8004"
    Next
   
    For Each data5 In Selection
        If data5.Value = "8015" Then data5.Value = "8005"
    Next
   
    For Each data6 In Selection
        If data6.Value = "8016" Then data6.Value = "8006"
    Next
   
    b = 1
Loop Until b = 1

End Sub
30. marts 2004 - 13:59 #1
b = b +1
Avatar billede plastikanden Nybegynder
30. marts 2004 - 14:00 #2
jeg er lidt for dum til VBA

kan du uddybe det yderligere?
Avatar billede bak Forsker
30. marts 2004 - 14:45 #3
Jeg synes jeg har set spm. før i VBA-kategorien. Her er en måde at gøre det på.


Sub test()
Dim ws As Worksheet
Dim rKat As Range
Dim lLastRow As Long
Dim rCell As Range
Set ws = Sheets("old_database")
lLastRow = ws.Range("B" & Rows.Count).End(xlUp).Row
Set rKat = ws.Range("B2:B" & lLastRow)
For Each rCell In rKat
    Select Case Left(rCell, 3)
        Case "801": rCell.Offset(0, 10) = 8000 + CLng(Mid(rCell, 4))
        Case "802": rCell.Offset(0, 10) = 9000 + CLng(Mid(rCell, 4))
        Case "803": rCell.Offset(0, 10) = 10000 + CLng(Mid(rCell, 4))
        Case Else
    End Select
Next
End Sub
Avatar billede bak Forsker
30. marts 2004 - 14:51 #4
Bemærk lige at alle
rCell.offset(0,10)= skal ændres til
rCell=

Det andet er til testformål.
Avatar billede plastikanden Nybegynder
30. marts 2004 - 15:24 #5
fatter ikke et hak! min karma er vist ikke så høj!

vi er 100 elever der ikke fatter en brik!

er det noget for SuperBak? : )
Avatar billede bak Forsker
30. marts 2004 - 15:42 #6
Lidt forklaring. Sig til hvis du skal bruge mere

Sub test()
Dim ws As Worksheet
Dim rKat As Range
Dim lLastRow As Long
Dim rCell As Range

'sæt ws lig med arket old_database
Set ws = Sheets("old_database")
'Find sidste række med data i kolonne B i arket old_database
'Starter nedefra (række 65536) og og går op og finder rækken
lLastRow = ws.Range("B" & Rows.Count).End(xlUp).Row
'sæt rKat lig alle data i kolonne B
Set rKat = ws.Range("B2:B" & lLastRow)
'For hver celle i rKat gør :
For Each rCell In rKat
    'Kig på de første 3 cifre
    Select Case Left(rCell, 3)
        'Hvis de første 3 cifre er 801 så tag de
        'resterende cifre (fra 4. ciffer og udad) og læg dem til 8000
        Case "801": rCell = 8000 + CLng(Mid(rCell, 4))
        'hvis de er 802 så tag de resterende cifre og læg til 9000
        Case "802": rCell = 9000 + CLng(Mid(rCell, 4))
        ''hvis de er 803 så tag de resterende cifre og læg til 10000
        Case "803": rCell = 10000 + CLng(Mid(rCell, 4))
        Case Else:
        'ellers gør ingenting
    End Select
Next rCell

End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester