Avatar billede Claus Mester
16. april 2004 - 08:17 Der er 4 kommentarer og
1 løsning

VBA Word XP: FEJL "Strengparameter er for lang"

Hej eksperter.

Når jeg forsøger at indsætte indholdet i en strengvariabel, får jeg ovenstående fejl medd.

Variabelindholdet har jeg defineret i koden for "Combafsnit" under "_change()". I en "select case", ved valg af listindex 0, skal variablen "afsnit" indeholde en tekst på 5 afsnit, 123 ord og 15 linier.

Herefter er det meningen, at indholdet i variablen afsnit, skal indsættes i mit dokument.

Det er her fejlen opstår.

Er der nogen der kan gennemskue udfordringen?

vh
Nicolaus
Avatar billede Claus Mester
16. april 2004 - 08:24 #1
Skal måske lige skrive koden jeg bruger ved indsættelse i dokumentet:

'Udfyld det variable afsnit
Set myrange = ActiveDocument.Content
myrange.Find.Execute FindText:="[Variabelt afsnit]", _
ReplaceWith:=afsnit
16. april 2004 - 10:10 #2
nu spørger jeg bare; det er ikke fordi, der er en begrænsning på 255 karaktere? Prøv evt at forkorte teksten i Afsnit. Eller prøv helt at fjerne ReplaceWith for at spore dig ind på fejlen.
Avatar billede martin_moth Mester
16. april 2004 - 10:16 #3
Hele din fine beskrivelse hjælper jo ikke meget når vi ikke ved hvad f.eks. Combafsnit er - er det en stringvariabel, en kontrol af en art, hvad? Hvorfor nævner du det med en select case og listindex - hvilken relevans har det? Prøv at smide din kode her (det relevante uddrag), det vil være nemmere at forholde sig til...

Nå, men er problemet at din string-variabel "Afsnit" indeholder for mange tegn (det er vel det du spørger til, ikke?), kan du så ikke dele det op i flere strings i stedet for blot en?

Evt. kan du have en richtextbox, med visible = false, til at indeholde al teksten i stedet for en string variabel. Altså bruge en kontrol som en variabel, og skjule den for brugeren, så de slipper for at glo på den :o)
Avatar billede Claus Mester
16. april 2004 - 10:25 #4
Jeg løste problemet med:

With Selection.Find
    .Text = "[Variabelt afsnit]"
    .Execute
    If .Found = True Then
        Selection.Text = afsnit
    Else
        MsgBox "Ikke fundet"
    End If
End With

Det virkede.

Men jeg har testet din løsning, martin_moth, med en tekstboks i stedet for en variabel. Og det virker. Men jeg forstår ikke helt, hvorfor datatypen String, ikke skulle kunne indeholde en streng på 123 ord;

Citat, VBA hjælp:
"A variable-length string can contain up to approximately 2 billion (2^31) characters."

Men martin; svarer du lige. Jeg ved godt jeg selv løste problemet, men du kom på den anden side med et brugbart svar ... og indsats :-)
Avatar billede martin_moth Mester
16. april 2004 - 11:05 #5
OK
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