Avatar billede ulr Nybegynder
16. juni 2010 - 13:15 Der er 15 kommentarer og
1 løsning

Konverter String til Tal (macro)

Hej eksperter.

Jeg har denne macro kode:

___________________________________
Dim celle As String, nycelle As String, række As Long
    Dim Slut As Long, mellemRum As Byte, underStreg As Byte
    Slut = Range("A65536").End(xlUp).Row
    Application.ScreenUpdating = False
   
    'Does the GLOBE code cleaning
    For række = 2 To Slut
        celle = Cells(række, 1)
        underStreg = InStr(celle, "__")
        mellemRum = InStr(celle, " ")

        If underStreg > 0 And mellemRum > 0 Then
            nycelle = Mid(celle, underStreg + 2, mellemRum - (underStreg + 2))
            Cells(række, 1) = nycelle
           
        End If
    Next række
___________________________________

Mit problem er at nycelle er defineret som String og jeg skal egentlige bruge et tal (Long), hvordan konverterer jeg min nycelle til et tal inden jeg skriver vaerdien ind i min aktuelle celle - har proevet mange forskellige loesninger, men har endnu ikke kunne finde en der har fungeret (giver fejl), haaber I kan hjaelpe
Avatar billede supertekst Ekspert
16. juni 2010 - 13:55 #1
Eks:

dim tal as long
..
..
tal = nycelle
Cells(række, 1) = tal
Avatar billede ulr Nybegynder
16. juni 2010 - 14:07 #2
Det har jeg ogsaa proevet men saa siger den:
Run-time error '13':
Type mismatch

?
Avatar billede supertekst Ekspert
16. juni 2010 - 14:13 #3
Hvis muligt er du velkommen til at sende filen.
@-adresse under profil.
Avatar billede ulr Nybegynder
16. juni 2010 - 14:28 #4
Hej Supertekst - det kan jeg desvaerre ikke :o(
aLternativt, kan jeg evt. lave en lykke der koere en kolonne igennem og formaterer hver celle fra tekst til tal ved at gange den med 1 - er bare heller ikke sikker paa hvordan jeg laver sadan en?
Avatar billede supertekst Ekspert
16. juni 2010 - 14:36 #5
Ok - er cellernei kolonne A på forhånd defineret som tekst?

Alternativt kunne du måske uddrage en lille model, der indeholder samme formatering af celler og et fiktivt indhold på f.eks. 3 linier, hvor opbyg med understregning og mellemrum er realistisk og sende denne inkl. VBA-koden.
Avatar billede ulr Nybegynder
16. juni 2010 - 14:50 #6
Jep Kolonno A ser daadan her ud:
__12129449 / 2500424840100100000000000121294490017 / PlOrd.

Efter min Makro ser kolonne A saadan her ud:
12129449

Men da de bliver loaded ind i en String staar de nu i mit ark som tekst - jeg skal bruge dem som tal, da jeg skal lave vlookup paa dem...

En lykke der kan tage alle i kolonne A og gange dem med et vil ogsaa loese mit problem...
Avatar billede supertekst Ekspert
16. juni 2010 - 15:02 #7
Så problemet er at kolonne A er formatteret som tekst.

Prøv at indspille en makro,der kan ændre formateringen i kolonnen. Anvend koden herfor, når du har fundet tallet.
Avatar billede ulr Nybegynder
16. juni 2010 - 15:13 #8
Det er desvaerre ikke nok at aendre formattering - det skal ganges med 1 for at Excel forstaar det...
Avatar billede ulr Nybegynder
16. juni 2010 - 15:31 #9
Kan du hjaelpe med det - string til tal?
Avatar billede supertekst Ekspert
16. juni 2010 - 16:31 #10
Det skulle nok være muligt. Hvilken Excel version anvender du?
Avatar billede supertekst Ekspert
16. juni 2010 - 16:55 #11
<--- tilføjelser i forhold til din kode:

Sub test()
Dim celle As String, nycelle As String, række As Long
    Dim Slut As Long, mellemRum As Byte, underStreg As Byte
    Dim tal As Long  '<---
   
    Slut = Range("A65536").End(xlUp).Row
    Application.ScreenUpdating = False
   
    'Does the GLOBE code cleaning
    For række = 2 To Slut
        celle = Cells(række, 1)
        underStreg = InStr(celle, "__")
        mellemRum = InStr(celle, " ")

        If underStreg > 0 And mellemRum > 0 Then
            nycelle = Mid(celle, underStreg + 2, mellemRum - (underStreg + 2))
           
            tal = nycelle          '<----
            Cells(række, 1) = tal  '<----
            Cells(række, 1).NumberFormat = "0"  '<----
        End If
    Next række
End Sub
Avatar billede ulr Nybegynder
17. juni 2010 - 14:55 #12
Den kan ikke lide "tal=nycelle" - den siger Run-time error '13' Type mismatch... Jeg bruger Excel 2007
Avatar billede supertekst Ekspert
17. juni 2010 - 15:06 #13
Jeg anvender også 2007.

Vi kommer ikke videre med mindre jeg kan få en kopi eller model af dit ark+kode.
Avatar billede ulr Nybegynder
17. juni 2010 - 15:31 #14
Jeg ha lavet denne kode:

    Range("A40000").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("A40000").Select
    Selection.Copy
   
    Slut = 700
   
    For række = 3 To Slut
        Range("D" & række).Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
            SkipBlanks:=False, Transpose:=False
    Next række
   
    Range("A40000").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("A1").Select

Her gange jeg vaerdierne igennem med 1 - det loeser mit problem...
Avatar billede ulr Nybegynder
17. juni 2010 - 15:40 #15
Men tal for hjaelpen og tiden - giv mig et svar og du faar selvfoelgelig dine point
Avatar billede supertekst Ekspert
17. juni 2010 - 16:56 #16
Selv tak - blot problemet blev løst..
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