Avatar billede Batman25 Nybegynder
27. maj 2012 - 12:20 Der er 4 kommentarer

Hjælp til VBA/Excel

Jeg sidder her med nogle opgaver, og er løbet ind i nogle problemer.

problemerne er at;

Jeg skal lave en Rnd funktion, hvor den skal generere tilfældigt imellem to bogstaver (m og k i denne opgave).
jeg har fundet frem til følgende:

Sub Random()

Dim randomrange As Range, cell As Range
Set randomrange = Range("A2:A21")
For Each cell In randomrange
cell.Formula = "=CHAR(Randbetween(75,77))"
Next
randomrange.Value = randomrange.Value

Problemer er at Randbetween(75,77) tager tilfældige bogstaver IMELLEM k og m. dvs. at  den også kan genere et L.



- Et andet problem er, at jeg skal have denne funktion, til at gå fra B2 til B6:


Dim score As Integer, grade As String
score = Range("B2").Value


If score < 5 Then
  grade = "Falsk"
ElseIf score > 100 Then
  grade = "Falsk"
Else
  grade = score
 
 
End If

Range("B2").Value = grade

Da den i Range kun står til ("B2") virker den selvfølgelig kun i B2, men hvordan får jeg den til at virke til og med B6?
Og hvis den også skal gå vandret ud, hvordan virker den så til og  med E6?



Et sidste problem, er at jeg skal lave en If then else funktion, hvor hvis der står et m, skal der stadigvæk være et m, hvis der står et k, skal der stadigvæk være et k, og hvis der står alt muligt andet, skal der står "falsk". Har gjort det på følgende måde:


Dim Køn As String, værdi As String
Køn = Range("A2").Value

If Køn = m Then
  værdi = "m"
ElseIf Køn = k Then
  værdi = "k"
Else
værdi = "falsk"

End If

Range("A2").Value = værdi

Altså hvis køn = alt andet end m og k, så skal værdien være falsk. Ellers skal værdien være lig med køn.
Tror det har noget med at der står Value efter Range, har prøvet med Text, men det virker heller ikke.

Det ville være til stor hjælp, hvis der var nogen der kunne hjælpe eller henvise mig til et sted hvor jeg kan finde svar.
Avatar billede jime_boy Nybegynder
26. juni 2012 - 12:39 #1
Første problem kan løses hvis du bruger denne formel i cell.formula

=HVIS(AFRUND(SLUMP();0)=1;"k";"m")

du må selv lige oversætte hvis det er en engelsk version du har.
Avatar billede jime_boy Nybegynder
26. juni 2012 - 12:57 #2
Andet problem...

For det første behøver du ikke bruge VBA for at løse det den kan gøre direkte i formler.

Anden kan løses ved at bruge Cells() i stedet for range og loope igennem inden for ønskede range

Dim score As Integer, grade As String, kol As Integer, række As Integer

kol = 2

Do While kol < 6
    række = 2
    Do While række < 7
       
        score = Cells(række, kol)

        If score < 5 Then
            grade = "Falsk"
        ElseIf score > 100 Then
            grade = "Falsk"
        Else
            grade = score
        End If

        Cells(række, kol) = grade
       
        række = række + 1
    Loop
   
    kol = kol + 1
Loop
Avatar billede jime_boy Nybegynder
26. juni 2012 - 13:02 #3
3. problem... brug cells igen

Dim Køn As String, værdi As String
Køn = Cells(2,1) 'kollone,række
If Køn = m Then
  værdi = "m"
ElseIf Køn = k Then
  værdi = "k"
Else
værdi = "falsk"

End If

Cells(2,1) = værdi
Avatar billede jime_boy Nybegynder
26. juni 2012 - 13:03 #4
En anden gang kan det være en fordel for dig at splitte dette op til 3 seperate spørgsmål. Det gør det mere overskueligt at svare ;)
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
Kurser inden for grundlæggende programmering

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