|
| Klippe et ord ud i en IndputBox og indsætt~ Fra : Kim Hansen |
Dato : 06-03-03 19:25 |
|
Hej gruppe... håber i kan hjælpe mig.
Jeg er meget ny med hensyn til programmering
- hvilket mit spørgsmål måske bevidner.
Det er visual-basic til Office-word dette spørgsmål
drejer sig om - håber det er den rigtige gruppe.
Jeg har fået den tvivlsomme opgave at lave en InputBox
hvori man skal skrive sit fulde navn f.eks. "Kim Hansen"
der så skal vises i en MsgBox i formatet "K. Hansen"
dog uden " ". - Det er en afleveringsopgave til skolen.
Er der nogen her der ved hvordan man laver dette.
Jeg har nu siddet i to dage og bøvlet med det men
kan altså ikke få det til at virke.
Jeg kan komme dertil hvor der i MsgBoxen står
"K. " men altså ikke efternavnet.
Håber jeg har beskrevet problemet på en
nogenlunde forståelig måde.
På forhånd tak
Kim Hansen
KimHansen35@Hotmail.com
| |
Jens Vestergaard (06-03-2003)
| Kommentar Fra : Jens Vestergaard |
Dato : 06-03-03 19:40 |
|
"Kim Hansen" <KimHansen35@Hotmail.com> skrev i en meddelelse
news:EoM9a.113010$Hl6.10328305@news010.worldonline.dk...
> Jeg har fået den tvivlsomme opgave at lave en InputBox
> hvori man skal skrive sit fulde navn f.eks. "Kim Hansen"
> der så skal vises i en MsgBox i formatet "K. Hansen"
> dog uden " ". - Det er en afleveringsopgave til skolen.
>
Et bud i alm VB - om det er præcis sådan i VBA, må du så finde ud af
Private Sub Command1_Click()
Dim sFullName As String
Dim lSpacePos As Long
sFullName = InputBox("Skriv dit fulde navn", "Navn", "")
lSpacePos = InStr(sFullName, " ")
MsgBox Left(sFullName, 1) & ". " & Right(sFullName, Len(sFullName) -
lSpacePos)
End Sub
--
mvh
Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
www.railsoft.dk
Døgnets jernbanenyheder: www.railsoft.dk/medier.asp
| |
Kim Hansen (06-03-2003)
| Kommentar Fra : Kim Hansen |
Dato : 06-03-03 20:50 |
|
"Jens Vestergaard" <j@railsoft.dk> wrote in message
news:3e6795b6$0$159$edfadb0f@dtext01.news.tele.dk...
| "Kim Hansen" <KimHansen35@Hotmail.com> skrev i en meddelelse
| news:EoM9a.113010$Hl6.10328305@news010.worldonline.dk...
| > Jeg har fået den tvivlsomme opgave at lave en InputBox
| > hvori man skal skrive sit fulde navn f.eks. "Kim Hansen"
| > der så skal vises i en MsgBox i formatet "K. Hansen"
| > dog uden " ". - Det er en afleveringsopgave til skolen.
| >
|
| Et bud i alm VB - om det er præcis sådan i VBA, må du så finde ud af
|
| Private Sub Command1_Click()
| Dim sFullName As String
| Dim lSpacePos As Long
|
| sFullName = InputBox("Skriv dit fulde navn", "Navn", "")
|
| lSpacePos = InStr(sFullName, " ")
|
| MsgBox Left(sFullName, 1) & ". " & Right(sFullName, Len(sFullName) -
| lSpacePos)
|
| End Sub
|
|
| --
| mvh
| Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
| www.railsoft.dk
| Døgnets jernbanenyheder: www.railsoft.dk/medier.asp
|
Tak til dig Jens, men jeg har faktisk løst problemet -
typisk når man endelig har taget sig sammen til at spørge.
Løsning var:
Sub Opgave5()
'
' Opgave5 - Laver for og efternavn om til formen [initial. efternavn]
' Macro recorded 05-03-2003 by Kim Hansen
'
Dim Fuldenavn, Efternavn, Initial, Laengde, Mellemrum, Svar As String
Fuldenavn = InputBox("Skriv dit for og efternavn")
Initial = Left(Fuldenavn, 1)
Laengde = Len(Fuldenavn)
Mellemrum = InStr(Fuldenavn, Chr(32))
Efternavn = Mid(Fuldenavn, Mellemrum, Laengde)
Svar = MsgBox("Dit korte navn er: " & Initial & "." & " " & Efternavn)
End Sub
Faktisk var det eneste jeg manglede dette: Mid(string, start[, length])
Men tusind tak alligevel
| |
Tomas Christiansen (06-03-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 06-03-03 22:54 |
|
Kim Hansen skrev:
> Dim Fuldenavn, Efternavn, Initial, Laengde, Mellemrum, Svar As String
> Fuldenavn = InputBox("Skriv dit for og efternavn")
> Initial = Left(Fuldenavn, 1)
> Laengde = Len(Fuldenavn)
Ovenstående linie er unødvendig. Se lidt længere nede.
> Mellemrum = InStr(Fuldenavn, Chr(32))
Du bør ikke begynde at rode dig ud i ANSI-koder (dvs. 'Chr(32)'), brug i
stedet " ", altså anførselstegn-mellemrum-anførselstegn.
> Efternavn = Mid(Fuldenavn, Mellemrum, Laengde)
Rent principielt er det forkert at sætte længde på strengen her, idet du
altid sætter en forkert længde på!!!
Brug i stedet: Efternavn = Mid(Fuldenavn, Mellemrum)
>
> Svar = MsgBox("Dit korte navn er: " & Initial & "." & " " & Efternavn)
>
> End Sub
>
> Faktisk var det eneste jeg manglede dette: Mid(string, start[,
length])
Her kan du også se at 'length' kan udelades. Det betyder så 'resten af
strengen', hvilket er præcis hvad du ønsker.
Det er godt at se at du selv fandt frem til en helt fornuftig løsning.
Det er klart det, som du lærer mest af!
-------
Tomas
| |
Kim Hansen (07-03-2003)
| Kommentar Fra : Kim Hansen |
Dato : 07-03-03 15:40 |
|
"Tomas Christiansen" <toc-nospam-01@blikroer.dk> wrote in message
news:b48fva$o1q$1@news.cybercity.dk...
| Kim Hansen skrev:
| > Dim Fuldenavn, Efternavn, Initial, Laengde, Mellemrum, Svar As String
| > Fuldenavn = InputBox("Skriv dit for og efternavn")
| > Initial = Left(Fuldenavn, 1)
| > Laengde = Len(Fuldenavn)
|
| Ovenstående linie er unødvendig. Se lidt længere nede.
|
| > Mellemrum = InStr(Fuldenavn, Chr(32))
|
| Du bør ikke begynde at rode dig ud i ANSI-koder (dvs. 'Chr(32)'), brug i
| stedet " ", altså anførselstegn-mellemrum-anførselstegn.
|
| > Efternavn = Mid(Fuldenavn, Mellemrum, Laengde)
|
| Rent principielt er det forkert at sætte længde på strengen her, idet du
| altid sætter en forkert længde på!!!
| Brug i stedet: Efternavn = Mid(Fuldenavn, Mellemrum)
|
| >
| > Svar = MsgBox("Dit korte navn er: " & Initial & "." & " " & Efternavn)
| >
| > End Sub
| >
| > Faktisk var det eneste jeg manglede dette: Mid(string, start[,
| length])
|
| Her kan du også se at 'length' kan udelades. Det betyder så 'resten af
| strengen', hvilket er præcis hvad du ønsker.
|
| Det er godt at se at du selv fandt frem til en helt fornuftig løsning.
| Det er klart det, som du lærer mest af!
|
| -------
| Tomas
Jeg kan godt se nu hvor du siger det at Len() ikke er nødvendig.
Hvad Chr(32) kontra " " angår så skyldes det nok mere læreren
der syntes vi skulle lære lidt om ANSI-koder.
Idet jeg har brugt " " i andre opgaver.
| Rent principielt er det forkert at sætte længde på strengen her, idet du
| altid sætter en forkert længde på!!!
| Brug i stedet: Efternavn = Mid(Fuldenavn, Mellemrum)
Dette forstår jeg ikke.
Jeg har kontrolleret og det er den rigtige længde den sætter ind.
F.eks. med navnet: Kim Hansen skriver den da 10
Men det gælder måske kun i forbindelse med:
Mid(stringvar, start[, length])
Iøvrigt kan jeg godt se i hjælp at length er optional.
Men tak for oplysningerne.
For det gælder vel altid om at gøre koden så lille som muligt.
mvh.
Kim Hansen
| |
Tomas Christiansen (08-03-2003)
| Kommentar Fra : Tomas Christiansen |
Dato : 08-03-03 00:53 |
|
Kim Hansen skrev:
> | > Efternavn = Mid(Fuldenavn, Mellemrum, Laengde)
> |
> | Rent principielt er det forkert at sætte længde på strengen her,
idet du
> | altid sætter en forkert længde på!!!
> | Brug i stedet: Efternavn = Mid(Fuldenavn, Mellemrum)
> Dette forstår jeg ikke.
> Jeg har kontrolleret og det er den rigtige længde den sætter ind.
> F.eks. med navnet: Kim Hansen skriver den da 10
Ja, længden af "Kim Hansen" er ganske rigtigt 10, men du ønsker jo netop
IKKE med Mid-funktionen at tage HELE navnet, men kun efternavnet, og
hvis længden af fornavn+mellemrum+efternavn er lig 10, KAN længden af
efternavn ikke være 10.
Du får altså Mid-funktionen til at søge efter nogle tegn som du ved ikke
kan være der. Det sker er i og for sig ikke noget ved (du er nemlig så
heldig at Mid-funktionen er implementeret på en måde, så at den
tolererer den slags fejl).
Det, som jeg ser som problemet, er, at den næste, som skal læse din
kode, vil skulle bruge tid på at sidde og undre sig over hvad meningen
med det er, og forhåbentlig komme til den konklusion, at det er en fejl
(unødvendighed).
Der er ingen som siger, at kort kode er bedre end lang kode. Man kan
sagtens lægge alt for mange ting "oveni" hinanden, så koden bliver svær
at læse, og nogle gange er det bestemt en fordel at dele tingene op
(f.eks. i procedurer og funktioner, selvom de kun vil blive kaldt ét
sted fra). Men overfødig eller direkte forkert kode bør til en hver tid
undgås.
-------
Tomas
| |
|
|