Avatar billede xezbeth Nybegynder
22. august 2008 - 15:07 Der er 11 kommentarer og
1 løsning

For loop og split i excel (VB)

Hej jeg har følgende problem

har en form i excel, hvor man skal kunne taste 1 eller flere post numre ind, adskildt med komma.
Derefter skal der fortages en søgning ud fra de postnr man har tastet ind.
som dete r nu virker det fint med ET postnummer, men ikke med flere..

her stump kode af hvor jeg mener det går galt

strRepFrom = RepFrom
strRepTo = RepTo
strPostCode = DistriktPostNr
Words = Split(strPostCode, ",")

For Each postcell In Sheets(strRepFrom).Range("a2:a63536")
    For i = 0 To LBound(Words)
    strPostCode = Words(i)
    If Len(strPostCode) > 0 Then
    '  MsgBox (strPostCode)
her går det galt''''''''''''      If strPostCode = ActiveSheet.Range(strCurrentCell).Offset(0, 6).Value Then
            bolPostMatch = True
        Else
            bolPostMatch = False
        End If
Avatar billede kabbak Professor
22. august 2008 - 15:27 #1
LBound(Words) betyder det første = 0
UBound(Words) betyder antal sidste nummer.

så ret
LBound(Words)
til
UBound(Words)
Avatar billede kabbak Professor
22. august 2008 - 15:32 #2
hvor får du (strCurrentCell) fra ??

hvorfor sammenligner du ikke med 'postcell'
Avatar billede xezbeth Nybegynder
22. august 2008 - 15:42 #3
virker næsten, den kopiere ikke alle postnumre med over og nogle gange skal jeg klikke på send flere gange før den gør det ...når jeg har tastet mere end 1 post numemr ind i feltet
Avatar billede xezbeth Nybegynder
22. august 2008 - 15:43 #4
strCurrentCell = ActiveSheet.Range("A1").End(xlDown).Address
Avatar billede xezbeth Nybegynder
27. august 2008 - 09:14 #5
er der ikke nogen der kan hjælpe?
Avatar billede kabbak Professor
27. august 2008 - 09:38 #6
jeg troede vi var færdige, så sorry:
Se mine bemærkninger


For Each postcell In Sheets(strRepFrom).Range("a2:a63536") ' du læser ind her, er det postnumre
    For i = 0 To UBound(Words)
    strPostCode = Words(i)
    If Len(strPostCode) > 0 Then
    '  MsgBox (strPostCode)
'her går det galt''''''''''''
If strPostCode = ActiveSheet.Range(strCurrentCell).Offset(0, 6).Value Then
' det er det aktive ark, som du sammenligner på, skulle det ikke være Sheets(strRepFrom), som du tjekker
            bolPostMatch = True
        Else
            bolPostMatch = False
        End If
Avatar billede xezbeth Nybegynder
29. august 2008 - 12:31 #7
hej desværre nej :(
når jeg skal flytte bliver jeg nødtil at klikke på flyt knappen flere gange så flytter den de postnr der er i en sheet til den anden

For Each postcell In Sheets(strRepFrom).Range("a2:a63536") ' nej det er ikke postnumre men bruger nr, feks 40 som også de forskellige sheets også hedder
    For i = 0 To UBound(Words)
    strPostCode = Words(i)
    If Len(strPostCode) > 0 Then
    '  MsgBox (strPostCode)
'her går det galt''''''''''''
If strPostCode = ActiveSheet.Range(strCurrentCell).Offset(0, 6).Value Then
' det har jeg prøvet, det fejler
det er det aktive ark, som du sammenligner på, skulle det ikke være Sheets(strRepFrom), som du tjekker
            bolPostMatch = True
        Else
            bolPostMatch = False
        End If
Avatar billede kabbak Professor
29. august 2008 - 17:31 #8
Jeg er vist nødt til at se et eksempelark, hvori du beskriver dine ønsker, for at jeg kan hitte ud af det.
kabbak snabela tiscali dot dk
Avatar billede xezbeth Nybegynder
01. september 2008 - 09:17 #9
har sendt mail
Avatar billede kabbak Professor
01. september 2008 - 17:46 #10
Public Sub MovePostcode(DistriktPostNr, RepFrom, RepTo)
    Application.ScreenUpdating = False

    Dim strTest, strPostCode, strRepFrom, strRepTo As String, Words As Variant
    Dim RW As Long, CE As Long, Flere As Boolean

    strRepFrom = RepFrom
    strRepTo = RepTo
    strPostCode = DistriktPostNr

    If strPostCode = "" Then    ' tjekker indtastninger
        MsgBox ("Vælg postnummer")
        Exit Sub
    ElseIf strRepFrom = "" Or strRepTo = "" Then
        MsgBox ("Indtast distrikt nr")
        Exit Sub
    End If

    If InStr(strPostCode, ",") > 0 Then    ' er der flere end 1 postnummer
        Words = Split(strPostCode, ",")
        x = UBound(Words)
        i = 0
        Flere = True
    Else
        Words = strPostCode
        x = 1
        i = 1
        Flere = False
    End If

    With Sheets(strRepFrom)
    RW = .Range("A1").End(xlDown).Row ' sidste række i Fra arket
   
For i = i To x
    For CE = RW To 2 Step -1
            If Flere Then ' hvis flere, er de i em array variabel
                strPostCode = Words(i)
            Else                        ' ellers i en almindelig variabel
                strPostCode = Words
            End If
            If strPostCode = .Cells(CE, 1).Offset(0, 6) Then
                .Cells(CE, 1).EntireRow.Cut Sheets(strRepTo).Range("a65536").End(xlUp).Offset(1, 0)
                .Cells(CE, 1).EntireRow.Delete Shift:=xlUp
            End If
        Next CE
    Next i
End With
EndOfSub:
    Application.ScreenUpdating = True

End Sub
Avatar billede xezbeth Nybegynder
03. september 2008 - 08:07 #11
Super,d et virker tusind tak skal du have
Giver du et svar så du kan få points :)
Avatar billede kabbak Professor
03. september 2008 - 08:13 #12
et svar ;-))
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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