Avatar billede miras06 Nybegynder
01. april 2008 - 17:46 Der er 4 kommentarer

VBA opgave

Hej Experten.

Jeg har fået en opgave hvor man skal hente oplysninger fra et regneark og sætte nogle af oplysningerne over i et andet regneark. Dette skal gøre ved at jeg selv skriver VBA-koden. Problemet er at de data jeg skal hente over, skal så sættes ind i f.eks. række 6. Der skal så hentes flere rækker med data. Dvs. regnearket skal kunne opdateres via en komandoknap, når der sættes en ny række ind. Til sidst skal rækkerne ordnes i datoorden, som er en af de oplysninger, der sættes ind i rækken.

Håber I kan hjælpe med problemet.

MVH Michelle
Avatar billede kronsj Nybegynder
02. april 2008 - 09:03 #1
Hvordan vil du vælge hvilke data du skal overføre ?

Dette eksempel kræver at du har sat en kontrolknap ind i det første ark:

Sub Knap1_Klik()

Dim xlApp As New Excel.Application
Dim xlWb As New Excel.Workbook
Dim xlWs As New Excel.Worksheet


Set xlWb = xlApp.Workbooks.Add

Set xlWs = xlWb.Worksheets(1)
xlWs.Range("A1").Value = 3
xlWs.Range("B1").Value = 4
xlWs.Range("C1").Value = xlWs.Range("A1").Value * xlWs.Range("B1").Value

xlWb.SaveAs ("c:\Michelle.xls")

End Sub

Så kan du jo altid ændre rangen til det du ønsker.
Avatar billede miras06 Nybegynder
02. april 2008 - 10:30 #2
Hej kronsj

Mit problem var også at hente dataerne over i regnearket, men jeg har prøvet på det. Nedestående er hvad jeg har prøvet at lave.

Call åbenfil("ordreoversigt.xls")

With Workbooks("westerlo.xls").Sheets

    Set område1 = Range("a1", "b4")
    Set område2 = Range(Range("a7"), Range("a7").End(xlToRight).End(xlDown))
    Set ordrer = Union(område1, område2)
   
End With
Workbooks("westerlo.xls").Activate
Worksheets("orderB4506-4").Activate
ordrer.Select

datoordre = InputBox("Indtast dato på ordre")
If datoordre = "" Then End

antalkolonne = ordrer.Rows.Count
MsgBox antalrækker
    fundet = False
For i = 1 To antalrækker
If UCase(ordrer.Cells(i, 1).Value) = UCase(ordrer) Then
    fundet = True
    MsgBox "Datoen findes"
    Exit For
    End If
Next i

If fundet = False Then
    MsgBox "datoen findes ikke"
    End
End If

Workbooks("ordreoversigt.xls").Activate
Sheets.Add
ActiveSheet.Name = orderB4506-4

Range("b1").Value = ordrer.Cells(i, 3)

Håber også du kan hjælpe med dette. Ellers mange tak for hjælpen.

MVH Michelle
Avatar billede kronsj Nybegynder
03. april 2008 - 00:08 #3
Hej igen,
Jeg ved ikke om din kode er en kopi fra det du bruger, eller blot lidt håndskrevet eksempel. Der ihvertfald nogle "smuttere":
- Antalkolonner (linje 15) skal visdt være antalrækker
- ActiveSheet.name (linje 33) skal også have tildelt en streng "orderB4506-4"

Jeg er ikke helt med på hvor problemet er, men har et forslag.
Opret en temporært range, og brug den i for-løkken, så du insætter rækker i ranget for hver dato der bliver fundet.
Kald derefter Range.Sort funktionen, og sorter kolonnerne efter ønske.
Indsæt til sidst rangen i det arket "Ordreliste.xls"

Jeg vil lige undersøge hvordan man laver disse fiktive ranges i vba, hvis det er ønsket.

Mvh
Jørgen
Avatar billede miras06 Nybegynder
03. april 2008 - 21:19 #4
Hej Jørgen

Jeg har fået løst mit problem, og siger mange tak for hjælpen.

MVH Michelle
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