Gå til innhold

Problem med oppgave i VBA


Anbefalte innlegg

Skrevet (endret)

Hei, jeg har et lite problem med en funksjon i VBA.

 

Det jeg ikke får til er det siste i oppgaven der man skal lage en sub-prosedyre slik at treghetsmomentet vises utifra en matrise..

 

Noen som kan hjelpe?

oppgave.doc

Endret av sull
Videoannonse
Annonse
Skrevet

Så vidt jeg kan skjønne:

Combo1 skal inneholde valgene IPE og HEA. Idet en av disse velges, skal den Combo2 fylles med korresponderende Høyde-verdi. Når så en av disse velges i Combo2, skal korresponderende Treghetsmoment skrives til ett eller annet sted.

 

Løs den første først: Tømme Combo2 og fyll med verdier fra rett kolonne idet Combo1 klikkes. (Dvs aller aller først; overfør greiene til Excel og vit hvor de ligger)

 

HTH. Beste hilsen Harald

Skrevet
men hvordan skriver man inn matriser i visualbasic=?

7107173[/snapback]

En matrise kan man enklest sett representere med en todimmensjonert array (tabell) således:

Dim X As Long, Y As Long

Dim aMatrix() As Long ' Endre datatypen til hva du behøver

 

' Allokerer en viss størrelse. Bruk Preserve for å beholde den allerede eksisterende informasjonen.

ReDim aMatrix(0 To 10, 0 To 10)

 

' For å finne minimun- og maksimumindeksene til de ulike dimmensjonene, benyttes henholdsvis LBound() og UBound()

For X = LBound(aMatrix, 1) To UBound(aMatrix, 1)

    For Y = LBound(aMatrix, 2) To UBound(aMatrix, 2)

   

        ' Sett verdien til dette elementet

        aMatrix(X, Y) = X * Y

   

    Next

Next

Skrevet

Oppgaven er tatt ut av sin sammenheng, men det virker på meg som du forventes å bruke en Exceltabell som datagrunnlag, og Excels objektmodell, ikke en virtuell matrise. Men jeg har tatt feil før :cool:

Skrevet (endret)

ja grunnlaget er at vi skal legge sub funksjonen i excell, men den forklaringen jeg har fått fra lærer om å lage matriser var mildt sagt manglende..

 

Jeg er student første året på byggingeniørlinjen på Høgskolen i Bergen

Endret av sull
Skrevet
ja grunnlaget er at vi skal legge sub funksjonen i excell, men den forklaringen jeg har fått fra lærer om å lage matriser var mildt sagt manglende..

 

Jeg er  student første året på byggingeniørlinjen på Høgskolen i Bergen

7125059[/snapback]

 

Kan jo hende lærern din tenker på ARRAY når han snakker om Matrise

 

Ikke godt å si

 

Ole

Skrevet

En array er en matrise.

 

In computer programming, an array, also known as a vector or list, is one of the simplest data structures. Arrays hold equally-sized data elements, generally of the same data type. Individual elements are accessed by index using a consecutive range of integers, as opposed to an associative array. Some arrays are multi-dimensional, meaning they are indexed by a fixed number of integers, for example by a tuple of four integers. Generally, one- and two-dimensional arrays are the most common.

en.wikipedia.org/wiki/Array

 

Det vil si: En en-dimensjonal array er en vektor på matematikkspråket, mens en to- eller fler-dimensjonal array er en matrise.

 

I dette tilfellet blir det vel riktig å bruke ordet matrise da man må ha en kolonne for tverrsnittshøyden og en for tilhørende treghetsmoment.

Skrevet

Jeg tror du ser deg blind på dette med matriser, oppgaven sier ingenting om det. Hvis du kopierer-limer tabellen fra word inn i ark1 i Excel, så kan du ta utgangspunkt i disse kodene:

 

Option Explicit

 

Dim C As Long

 

Sub SettOpp()

Sheets(1).DropDowns(1).AddItem "IPE"

Sheets(1).DropDowns(1).AddItem "HEA"

End Sub

 

Sub Drop1Click()

Dim R As Long, RL As Long

Select Case Sheets(1).DropDowns(1).ListIndex

Case 1

C = 1

Case 2

C = 4

Case Else

Exit Sub

End Select

Sheets(1).DropDowns(2).RemoveAllItems

RL = Sheets(1).Cells(Rows.Count, C).End(xlUp).Row

For R = 3 To RL

Sheets(1).DropDowns(2).AddItem Sheets(1).Cells(R, C).Value

Next

End Sub

 

Sub Drop2Click()

If C < 1 Then Exit Sub

MsgBox Sheets(1).Cells(Sheets(1).DropDowns(2).ListIndex + 2, C + 1).Value

End Sub

 

Tilordne Drop1-koden til første boks, Drop2-koden til andre og SettOpp til et egnet event (workbook_open eller noe sånt).

Men siden du skal bruke kontrollene fra Skjemaverktøylinjen, lurer jeg på om du skal levere VB i det hele tatt, kanskje det heller forventes en formelbasert løsning. Disse kontrollene har ingen intellisense i VB og nevnes ikke i Help, det er nesten bare vi gamlinger som kjenner objeektmodellen og kan kode dem. (Men kanskje er læreren din like gammel som meg ?)

 

HTH. beste hilsen Harald

Skrevet

Unnskyld Moskus. Det er op, Sull, som jeg mente som "du" i svaret mitt. På skolen i steialderen het det "les oppgaveteksten nøye" og den sier ingenting om verken matriser eller VBA. Men det gjør selvfølgelig ingenting om man lærer å programmere matriser under marsjens gang :)

Harald

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...