21. oktober 2004 - 11:03Der er
8 kommentarer og 1 løsning
Lineskift i en MsgBox
Hejsa
Jeg sidder og laver en meget simpel makro i Excel, som skal undersøge diverse celler i mit ark. Efter undersøgelse skal informationerne kommer frem i en MsgBox. Jeg har dog brug for, at lave et linieskift i denne MsgBox, men synes ikke, at kunne finde ud af det.
Jeg har prøvet med vbCrLf, men kan ikke få den til at virke!
Min MsgBox er som følgende: MsgBox("Undersøgelse1 ") & Count0 & " af " & Count1.
Jeg ønsker så en ("Undersøgelse2 ") & Count2 & " af " & Count3 sat ind i en ny linie.
Er der nogen der kan hjælpe mig?
//Oergaard
Ps. Det skal lige siges, at jeg normalt koder i Delphi, hvorfor min viden i VB ikke er så stor :-) (endnu)
At bruge 'vbNewline' er en _rigtig_ dårlig idé. Risikoen for at man så laver noget, man ikke selv forstår, er nemlig betydelig ;o)
'vbCrLf' er i virkeligheden en sammentrækning af to tegn (selvom de i VB optræder som ét samlet): 'vbCr' (carriage-return) og 'vbLf' (Linefeed). Det er af allerstørste betydning, hvis du skal behandle filer fra et andet OS (f.eks. Linux, BSD, MacOS) - eller hvis du skal tale med f.eks. en Linux/PHP server - at du ved, hvad det er for et linieskift, du anvender.
Derfor har du bedre styr på, hvad du laver, hvis du skriver 'vbCrLf'. 'vbNewline' er det kun en fordel/lettere at bruge, hvis du ikke ved, hvad du laver - og i øvrigt også er ligeglad med, om du forstår dine egne koder :)
vbCrLf og vbnewline er da præcis det samme! De 'indeholder' begge både carriage-return og linefeed. Ingen forskel der....det er blot 2 konstanter som har samme værdi.
Ja, men det lidt ligesom med ordet 'roastbeef' ... ordet siger selv, der er tale om et stykke oksekød, der er stegt. 'Rostbøf' er det derimod totalt umuligt at gætte, hvad er. Begge dele er dog gangbar, dansk stavemåde.
'vbNewline' kan ingen se, hvad betyder. Man kunne fejlagtigt tro, der bare var tale om et linieskift - men det er der jo ikke 'bare' :) 'vbCrLf' kan enhver se, er et carriage-return, efterfulgt af et linefeed - eller som det også kan skrives i VB: vbCr & vbLf.
Forskellen ligger udelukkende i, at 'vbCrLf' er logsik og selvforklarende - hvor 'vbNewline' ikke viser, hvad den indeholder, men har 'forklædt' sig. Her skal man altså _vide_ (og huske på), hvad det er, der gemmer sig bag 'vbNewline'.
At to fremgangsmåder giver samme resultat, gør dem ikke nødvendigvis lige gode - eller fornuftige at bruge :) /mvh
Det synes jeg er en meget tynd forklaring (no offense ;). Om man bruger det ene eller det andet, er da fuldstændig det samme og ligegyldigt. De 2 konstanter ER de samme. Og for en nybegynder (eller én som bare ikke er vokset op i DOS-tiden, hvor man altid skulle huske både 'cr' og 'lf') så er vbCrLf altså ikke særligt indlysende. Det kunne ligeså godt betyde alt muligt andet. Hvorimod vbnewline helt indlysende laver en ny linie. Og da der ikke er noget som helst, der kan gå galt (som du ellers prøvede at skræmme med i dit første indlæg) så er der ingen risiko ved denne metode.
Og hvis man skal føre din tanke om "at man skal forstå og vide hvad man laver" ud i livet, så skal man jo slet ikke arbejde med Visual Basic, men derimod med C eller endnu bedre: assembler/maskinkode. En af styrkerne ved VB (og grunden til, at det er blevet så udbredt) er jo netop, at det er intuitivt og at man får en masse forærende og derfor ikke behøver at forstå hvordan en knap bliver tegnet på skærmen.
Det er ok, hvis du troede at der var forskel på de 2 konstanter. Men lad os ikke dreje diskusionen hen på om det hedder 'røv' eller 'numse' ;o) Det er og bliver en smagssag.
Hvis nogen stadig er i tvivl om, at de er ens, kan man jo bare spørge på: asc(left(vbcrlf,1)), asc(right(vbcrlf,1))
...og tilsvarende for vbnewline. Begge giver 13 og 10.
Nå, men lad os stoppe denne fjollede (men interessante) diskusion, mens tonen endnu er venskablig ;o)
Ja, fjollet er den da blevet - og jeg synes også, vi bør slutte her, hvis der er fare for, du ikke kan holde den venlige tone :)
Jeg vil dog lige påpege, at jeg ikke selv er 'vokset op' under DOS - men MacOS. Jeg påbegyndte heller ikke min scripting/programmering i VB - men i JavaScript og PHP - og er faktisk ikke 'gammel' i VB. Jeg er altså én af dem, du taler om - men passer slet ikke ind i din teori. Jeg skal ikke kunne sige, om du kan udtale dig om, hvordan det er ikke at være 'vokset op' under DOS. Jeg kan - og finder som sagt vbCrLf _langt_ mere sigende en vbNewline. Jeg forstod umiddelbart forkortelsen og fandt den overordentligt sigende.
Hvad angår antallet af tegn, der gemmer sig bag de to benævnelser, tror jeg ikke _nogen_ kan være i tvivl om. Det fremgår med al ønskelig tydelighed - og har tråden igennem været skåret ud i tykt pap flere gange. At du skærer det ud endnu engang, får mig til at tro, du stadig ikke forstår, hvad jeg mener.
I håbet om at andre forstår min argumentation, afslutter jeg også i venskabelighed :) /mvh
Synes godt om
Ny brugerNybegynder
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.