Avatar billede JAHT Nybegynder
02. marts 2012 - 20:01 Der er 11 kommentarer og
1 løsning

VBA Kode

Hej.....

Jeg har brug for lidt hjælp til nogle VBA koder.

Jeg har et Excel ark, til brug for registering af værdipapirer. Til den brug har jeg udarbjdet to Userforms. En til brug for "Bogføring" af køb/salg/renter, og en til brug for ændring af indtastet data.

Jeg har begge Userforms nogle forskellig textboxe, hvor brugeren skal indtaste div. oplysninger. I den forbindelse har jeg følgende problemer:

Userform for reg. af køb/salg og renter:
- Der bliver ikke vist nogle værdier i den oprettet Combobox
- I text feltet "Bærenr." der skal bærenr. for navne på 
  værdipapiret vises
- Hvis der er tale om et køb (nominel beh., kursværdi m.v.
  indtastet med positivt foretegn, så skal der under Resultat i
  Userformen ´"Bofgørt kursværdi" tage summen af kursværdi og
  handelsomk.
- Hvis der er tale om et slg (nominel beh., kursværdi m.v.
  indtastet med minus foretegn, så skal der under Resultat i
  Userformen ´"Bofgørt kursværdi" tage summen af kursværdi -
  handelsomk., dvs.
  - Kursværdi: -1.000
  - Handelsomk.: -10
  - Bogført kursværdi = -990

De indtastede oplysniner skal overføres til fanen køb, henholdvis Renter

Kan man lave en UserForm / Makro, hvor man hurtig kan ændre bærenummeret i fanerne Køb og Renter.
Har lavet Userformen, har dog brug for lidt hjælp til koden

Kunne være en fordel, hvis du fik arket sendt

På forhånd tak for hjælpen
Avatar billede Thorp Praktikant
05. marts 2012 - 15:35 #1
Hej,

du er velkommen til at uploade arket på gratisupload og sætte et link.

Link: http://gratisupload.dk/
Avatar billede Thorp Praktikant
13. marts 2012 - 18:00 #2
Det er en vældig kompleks kode du har fået udviklet dér!

I koden til UserForm3 får du udfyldt Comboboksen ved at ændre følgende:

Private Function findComboNavn(faneNavn)
Dim Navn As String
    findComboNavn = ""
   
    If faneNavn = "køb/salg" Then  '"køb" ændret til "køb/salg"

Din Multipage på UserForm3 har Caption "køb/salg" og ikke kun "køb".

Umiddelbart ser det ud til at værdier herefter overføres korrekt.

til Arket Køb.
Avatar billede Thorp Praktikant
15. marts 2012 - 15:06 #3
Hej,

har set på din UserForm5 og har en idé til hvordan koden skal udvikles, men jeg har lige nogle spm.

Ville det ikke være en fordel hvis du ændrede den første tekstboks til en comboboks, så du kan vælge det bærenummer du ønsker at ændre mellem dem alle?

Samtidigt, så skal en ændring af bærenummeret vel slå igennem på samtlige ark. så ændringen foretages såvel i Oversigt, Salg som i Køb og renter.
Avatar billede JAHT Nybegynder
16. marts 2012 - 22:27 #4
Hej.

Vedr. #2
Super. Nu bliver værdierne i comboboxen vist :-)
Det ser dog ud til. at værdierne ikke bliver overført korrekt til arket køb :-(
Vedr. Renter. Så bliver det navn som brugeren vælger i Comboboxen også vist i tekstboxen nedenfor, som ellers skulle vise bærenummeret.

Vedr. #3
- God idé med at lave en combobox, så der kun kan vælges de bærenummer som fremgår af fanen oversigt.
- Jo, ændringen skal slå igennem i aller fanerne.

pft.
Avatar billede Thorp Praktikant
18. marts 2012 - 13:33 #5
Ad #2: Overførsel til arket Køb, så vil jeg foreslå flg. ændringer:

a) i arket køb indsætter du en ny kolonne ("Bærernr.") efter kolonnen "Navn" herefter ændre du formlen i kolonne "IID" til =""&[@[Bilagsnr.]]&"_"&[@[Bærernr.]]&""

b) I proceduren Sub BogførKøbOgSalg(ks) i modul 3 ændre du linjen:

.Offset(RowCount, 2).Value = UserForm3.NameCB.value til .Offset(RowCount, 2).Value = UserForm3.NameCB.Column(1)

c) Proceduren Private Sub adder() i koden til UserForm3 ændre du til flg.:

Private Sub adder()

Dim Homk As Double

    Me.TextBox4 = erUdfyldt(Me.TextBox4)
    Me.TextBox5 = erUdfyldt(Me.TextBox5)
   
    Homk = CDbl(Me.TextBox5)
   
    If Me.TextBox4 < 0 Then Homk = -CDbl(Me.TextBox5)
   
    Me.txtBogførtværdPage1 = Format(CDbl(Me.TextBox4) + Homk, "#,##0.00")
End Sub

Dette skulle sørge for at registeringen af Køb/salg samt bogføringen af kursværdi sker korrekt.

Grunden til at du ser sammme værdi i tekst boksen som i comboboksen er at comboboksen kun har en kolonne og proceduren Private Sub cmbNamePage3_Click() sætter textboks 11 lig med værdien af comboboksen.

Ad #3: så har jeg udarbejdet nogle kodesekvenser som du kan indsætte i dine moduler hhv. kode til userforms.

Link til kode. http://gupl.dk/676049/
Avatar billede Thorp Praktikant
18. marts 2012 - 13:48 #6
Ad #2: så skal du også tilføje følgende til proceduren Sub BogførKøbOgSalg(ks) i modul 3[SELECT CASE ks]:

b-1).Offset(RowCount, 9).Value = UserForm3.txtBogførtværdPage1.Value * 1

I proceduren BøgførKøbOgSalg foretager du naturligvis ændringerne for begge Cases [CASE Is = "s" og CASE Is = "k"]
Avatar billede Thorp Praktikant
18. marts 2012 - 14:15 #7
Før din Userform5 kan bliver udfyldt skal du lige tilføje denne kodestump til din Userform5 kode:

Private Sub UserForm_Activate()


    udfyldCombo


End Sub

Og du skal også definere flg. navne i dit regneark.

CnbAktier            =Oversigt!$B$10:$B$16
CnbAktierUdenlandske    =Oversigt!$B$20:$B$25
CnbInv                    =Oversigt!$B$45:$B$48
CnbObl                    =Oversigt!$B$31:$B$33
CnbOblUdenlandske    =Oversigt!$B$37:$B$39
Avatar billede JAHT Nybegynder
18. marts 2012 - 17:23 #8
Hej....

Nur har jeg tilføjet de koder du har oplyst, og det fungere 90 %. Har følgende småproblemer.

#1
Når jeg skal registrere et salg under Page Køb/salg (ved at indtaste - foran værdierne), så kommer der en fejlmeddelelse frem, når jeg klikker på knappen "Bogfør"
I fejlmeddelelsen står der
"Run-time error '424'
Objecet-required."


Når jeg trykker på knappen Debug, så markere den nedenstående linje gul under Modul 5

.Offset(RowCount, 3).Value = Uderform3.TextBox10.Value

NB: Der er ingen problemer når jeg indtaster et køb.

#2
Er ikke helt med hvad du mener med følgende:
"Grunden til at du ser sammme værdi i tekst boksen som i comboboksen er at comboboksen kun har en kolonne og proceduren Private Sub cmbNamePage3_Click() sætter textboks 11 lig med værdien af comboboksen."

Et lille tillægsspørgsmål:
Under fanen Indhold er der en knap der hedder "Ændre/slet køb m.v.". Når jeg klikker på knappen, så kommer der en fejlmeddelelse frem, hvori der står følgende:

"Run-time '2110'
Can't move focus to the control because it is invisible, not enabled, or of a type that does not accept the focus.

Når jeg klikker på knappen Debug, så bliver følgende linje markeret med gul:
  UserForm4.lstBilagsNr.SetFocus under modul Vis_Userform under Sub cmdÅbenUserForm4()

Jeg har lagt en version op under GratisUpload. Har sendt en mail med link.
Avatar billede Thorp Praktikant
18. marts 2012 - 19:05 #9
#1 skyldes blot en lille typho, den er rettet.

#2 Der anvendes samme teknik til at fylde textbox11 under fanen "renter" som der anvendes under fanen "køb/salg" forskellen er at comboboxen under "køb/salg" indeholder 2 kolonner(Navn + bærernummer) selv om du kun ser én (Navn), mens comboboxen under "renter" kun indeholder én kolonne (Navn).

Tillægsspørgsmål: Umiddelbart virker knappen til UserForm4 fint for mig, listboksen under fanen "køb/salg" bliver blot fyldt 2 gange med de samme værdier.


Link:http://gupl.dk/676073/
Avatar billede JAHT Nybegynder
19. marts 2012 - 16:39 #10
Hej....

Så har jeg fået tilrettet det, og det fungere super - Tak for hjælpen.

Hvis jeg lige må stille et spørgsmål. Er det relativt nemt at ændre koderne til, så man i Comboboxen for vist bærenummeret (i stedet for navn) og i tekst boksen, som pt. viser bærenummeret, viser navnet på værdipapiret?

Vil gerne oprette en ny opgave til dette, hvis det er?
Avatar billede Thorp Praktikant
19. marts 2012 - 18:30 #11
Hej,

ja det er ret let - kræver blot at man bytter lidt om enkelte steder i koden. Det kræver ikke noget nyt spørgsmål - ser på det lidt senere
Avatar billede Thorp Praktikant
19. marts 2012 - 22:20 #12
I koden til UserForm3 ændre du følgende:

Private Sub FyldComboboxNamecb()
.
.
.
    mitarray(0, l) = c.Offset(0, -2).Value
    mitarray(1, l) = c.Value

Her byttet du om på rækkefølgen så du i stedet får:

    mitarray(1, l) = c.Offset(0, -2).Value
    mitarray(0, l) = c.Value

så skulle bærernummer gerne stå i comboboksen og navn i tekstboksen

Husk også at foretage rettelser i Sub BogførKøbOgSalg(ks) så værdier ender i de rigtige kolonner i arket "Køb"
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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