Avatar billede nicklasb Nybegynder
14. oktober 2009 - 17:11 Der er 8 kommentarer og
1 løsning

Cell(i).Text på brugerdefineret formateret celle-indhold

Jeg er igang med et plugin til et excel-ark, men er stødt på et problem, jeg ikke lige har kunne finde en løsning på. (Det er lidt svært at søge på Google, da den ikke accepterer tegn som #########.)

Jeg har nogle celler - nogle formateret som tekst, andre formateret med en brugerdefineret formatering.

Jeg har oprette et tekstfelt (Dim txt As String).

Når jeg tilgår tekst-felternes indhold med
      txt = r.Cells(i).Text
      MsgBox txt
får jeg rigtigt nok teksten ud.

Tilgår jeg de brugerdefinerede felters indhold med samme kode, returnerer metoden #########, hvis den tekstuelle repræsentation af feltets indhold er længere end 10 tegn (altså fx 100.000.000).

      txt = r.Cells(i).Value
      MsgBox txt
returnerer rigtigt nok værdien (i ovenstående eksempel 100000000). Men jeg vil gerne have den formaterede streng.

Hvordan læser jeg indholdet af brugerdefineret formaterede felter med flere end 10 tegn?
Avatar billede tjacob Juniormester
14. oktober 2009 - 17:27 #1
Hvis jeg laver et talformat med 1000-tals separator, og indtaster 100000000, så returnerer Cells(x,y).Text den korrekte streng.

Hvad er dit brugerdefinerede format?
Avatar billede nicklasb Nybegynder
14. oktober 2009 - 17:59 #2
Umiddelbart er det ligegyldigt hvordan jeg formaterer den - jeg bruger flere forskellige formateringer og alle ser ud til at fejle.

En af dem er formatering af 100000 med
"\e{"#.##0"}" (skulle gerne give \e{100.000})

Ændre jeg tallet til 10000 udskriver den rigtigt nok \e{10.000}
Avatar billede tjacob Juniormester
15. oktober 2009 - 09:05 #3
Well, jeg kan ikke reproducere din fejl.
Uanset hvad jeg prøver med, så returnerer .Text korrekt. (Har også prøvet "\e{"#.##0"}" med 20 cifre).
Det er måske versionen? Jeg kører med Excel 2007....
Avatar billede nicklasb Nybegynder
15. oktober 2009 - 10:39 #4
Jeg bruger også Excel 2007.

Jeg har klippet lidt i mit program - der er stadig overflødigt kode, men koden er ikke så lang:
http://peecee.dk/upload/download/197197

Prøv at skrive følgende

A1 = Test
A2 = 10000
B1 = Test med lang tekst
B2 = 100000

og formater A2 og B2 med "\e{"#.##0"}". Marker cellerne A1 til B2 og kør makroen "Test". Hos mig skriver den
"Test", "\e{10.000}", "Test med lang tekst", "#########"
hvilket burde være
"Test", "\e{10.000}", "Test med lang tekst", "\e{100.000}"
Avatar billede tjacob Juniormester
15. oktober 2009 - 11:03 #5
Jeg mangler lige makroen Test........
Avatar billede tjacob Juniormester
15. oktober 2009 - 11:09 #6
Glem det, havde overset dit link....
Avatar billede tjacob Juniormester
15. oktober 2009 - 11:29 #7
Jeg får en fejl når jeg åbner dit ark. Men jeg kan dog godt se koden.
Så jeg har lavet et normalt ark med følgende kode:

Sub Test()

    If Selection Is Nothing Then GoTo ErrorMsg
    If TypeName(Selection) <> "Range" Then GoTo ErrorMsg
    If Selection.Areas.Count > 1 Then GoTo ErrorMsg
    Dim r As Range
    Dim i As Long, j As Long
    Dim txt As String
    For j = 1 To Selection.Rows.Count 'for each row r
        Set r = Selection.Rows(j)
        For i = 1 To r.Cells.Count  'for each cell i in row r
            txt = r.Cells(i).Text
            MsgBox txt
        Next i
    Next j
   
ErrorMsg:
    'do nothing
End Sub

Når jeg kører den med de betingelser du skriver i #4 får jeg det korrekte resultat:
"Test", "\e{10.000}", "Test med lang tekst", "\e{100.000}"

Det er måske fordi du har lavet det som et tilføjelsesprogram (.xla)? ved det ikke..........
Avatar billede nicklasb Nybegynder
15. oktober 2009 - 11:40 #8
Ja, hvis jeg afspiller makroen alene ligesom dig (havde jeg ikke lige tænkt på), får jeg det rigtige resultat.

Fejlen må ligge et andet sted i min xla - men har intet bud på, hvad fejlen kan skyldes.
Avatar billede nicklasb Nybegynder
14. januar 2010 - 11:51 #9
Fik det vist aldrig til at virke korrekt - lukker bare igen (regner med det er i orden at jeg smider et svar, nu der ikke er andre var at acceptere). Tak for hjælpen alligevel ..
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
Kurser inden for grundlæggende programmering

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