HiSpeed Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 Jeg har en annen tråd om oppbygging av maler i Word men prøver meg nå på en annen løsning som forhåpentligvis er "enklere"? Jeg har en dialogboks hvor bruker fyller inn noen felt og velger en Avdeling. Når avdelingen er valgt ønsker jeg at noen andre variabler skal settet for avdelingen. Tenker som følger: txtAvdeling settes lik verdien som velges i dialogboksen. Når dette er gjort så skal: txtAdresse settes lik adresse for valg avdeling txtSted settes lik stedsnavn for valgt avdeling txtTelefon settes lik telefonnummer for valgt avdeling Er det noen som kan hjelpe meg å lage et CB script for dette? Lenke til kommentar
Harald Staff Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 La oss bygge videre på det siste vi gjorde igår. Lag en fil C:\Temp\Steder.txt, inneholdende tabulatordelt informasjon slik: Sør Oslo Norge 12345 Vest New York USA 000273 Øst Beijing Kina 128 Døp om vedlagte fil fra Test.txt til Test.xls. Koden ligger i Userform1-modulen. Håper det hjelper deg i gang. Beste hilsen Harald Test.txt Lenke til kommentar
HiSpeed Skrevet 17. februar 2010 Forfatter Del Skrevet 17. februar 2010 Kanon! Dette funket Kan dette også brukes i Word? Lenke til kommentar
Harald Staff Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 Ja, det skal bare være å flytte userformen. Høyreklikk i VBeditor project explorer - Export file..., og så Importer i Word samme sted når du er i dokumentet du vil ha den. Hvis trøbbel er det bare å lage tilsvarende userform i Word og klippe-lime koden. Pass på at dette ikke er VBscript men VBA -det gjør allverdens forskjell når du googler. Beste hilseen Harald Lenke til kommentar
HiSpeed Skrevet 17. februar 2010 Forfatter Del Skrevet 17. februar 2010 (endret) Jeg prøvde å tilpasse denne til mine data i Word men får en kompileringsfeil: "Methode or Data member not found" AddItem blir markert! Kan du se noen feil i denne koden? Private Sub UserForm_Initialize() Dim iFnum As Integer Dim Linje As String Dim Felt() As String iFnum = FreeFile Open "C:\Temp\Steder.txt" For Input As #iFnum While Not EOF(iFnum) Line Input #iFnum, Linje Felt = Split(Linje, vbTab) On Error Resume Next Me.cboSelskap.AddItem Felt(0) Me.txtSAdr.AddItem Felt(1) Me.txtSPost.AddItem Felt(2) Me.txtSTlf.AddItem Felt(3) Wend Close #iFnum ' Fyll inn data txtForfatter = Application.UserName txtDato = Format(Date, "dd.mm.yyyy") End Sub Endret 17. februar 2010 av HiSpeed Lenke til kommentar
Harald Staff Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 (endret) Kan du ha brukt en Textbox og ikke en Combobox? Combo er den med nedtrekkspil. Endret 17. februar 2010 av Harald Staff Lenke til kommentar
HiSpeed Skrevet 17. februar 2010 Forfatter Del Skrevet 17. februar 2010 (endret) Her er filen. Reneme til demo.dotm Endret 17. februar 2010 av HiSpeed Lenke til kommentar
Harald Staff Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 Du må legge feltene i hver sin listbox: Me.ListBox1.AddItem Felt(1) Me.ListBox2.AddItem Felt(2) Me.ListBox3.AddItem Felt(3) Og så legge kode i change og click-eventene for Comboen, som i excelfilen. Lenke til kommentar
HiSpeed Skrevet 17. februar 2010 Forfatter Del Skrevet 17. februar 2010 Tusen takk! Når har jeg fått det til å virke Et siste spm. Kan man bruke annet skille enn TAB i setupfilen (*.txt)? Lenke til kommentar
Harald Staff Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 Så bra, grattis. Ja hva som helst kan brukes som skilletegn. Jeg pleier å bruke @ hvis det ikke er mailadresser i sikte. Husk å angi slike tegn i gåseøyne: Felt = Split(Linje, "@") Beste hilsen Harald Lenke til kommentar
HiSpeed Skrevet 17. februar 2010 Forfatter Del Skrevet 17. februar 2010 Stilig! Du er god! Lenke til kommentar
HiSpeed Skrevet 17. februar 2010 Forfatter Del Skrevet 17. februar 2010 (endret) Harald! Jeg prøver å lære litt mer om VBA og har derfor et par spm. til deg. Hvorfor bruker du en "Listbox" og ikke en variabel? Hvis det er mulig å bruker en variabel hvordan blir scriptet da? Endret 17. februar 2010 av HiSpeed Lenke til kommentar
Harald Staff Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 Hvorfor bruker du en "Listbox" og ikke en variabel?Hvis det er mulig å bruker en variabel hvordan blir scriptet da? Ok, nå er du på videregående. Du virket ikke helt klar til det. Jeg brukte Listbox fordi det er forståelig. Ett eller annet sted skal du lagre informasjonen og Listbox er i samme verden som comboen du bruker. Det du er ute etter er en variabel som er f.eks. "et kontor". Sånt finnes ikke i VBA, du har strenger og heltall og datoer og sånt men ikke kontorer. Det man kan gjøre da er å lage sin egen datatype, rimeligvis definert som Type, der du kan putte inn forskjellige navngitte variabler. Nyttig nok, men ganske døde greier. Neste steg derfra, sånn jeg ville løst det, er å heller lage en klasse "Kontor". Klasser gjør og inneholder det samme som typer, men det er muligheter for makroer og events i alle ender. Så man lager en kontor-klasse, lager instanser av kontorer med forskjellige data og egenskaper, og samler disse i en Collection. Nå først er du inne i ordentlig objektorientert programmering, det er her ting får ordentlig struktur. (Og kall det ikke script. VBA er programmering.) Jeg kan lage en demofil hvis du vil. Etterhvert. Jeg foreslår du bruker litt mer tid å userforms og kontroller og syntaks først. Klasser og collections krever såpass presisjon at pakka rundt ikke bør kreve så mye oppmerksomhet. Beste hilsen Harald Lenke til kommentar
HiSpeed Skrevet 18. februar 2010 Forfatter Del Skrevet 18. februar 2010 Takker igjen for innspill! Send meg gjerne en demofil når dette måtte passe. Takker igjen for all hjelp Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå