Avatar billede kasperh Nybegynder
18. maj 2000 - 10:33 Der er 6 kommentarer og
2 løsninger

Visual Basic og excel!

Er der nogle der kan giv emig et eksempel på hvordan man henter værdien A1 fra et excel regneark og smider i en variabel og derefter tager B1 og smider i en anden, derefter looper den og begynder videre med A2 og B2 osv..
Avatar billede kasperh Nybegynder
18. maj 2000 - 10:36 #1
jeg smider gerne 400 point ekstra oveni hvis det er noget jeg virkelig kan bruge.
Avatar billede mix Nybegynder
18. maj 2000 - 11:18 #2
Dim A(1 to 10) as string
Dim B(1 to 10 as string
Dim I as integer

' Her tag jeg værdierne fra celler A1 til A10
'og putter i en streng variable der hedder A(1) til A(10)

For i = 1 to 10
A(i) = activesheet.cells(i,1)
next i

' Her tag jeg værdierne fra celler B1 til B10
'og putter i en streng variable der hedder B(1) til B(10)

For i = 1 to 10
B(i) = activesheet.cells(i,2)
next i

Hilsen
Mix

P.S
det kan være du skal udskrive komma "," tegnet med et simikolon ";".
så det ser sådan ud.


For i = 1 to 10
A(i) = activesheet.cells(i;1)
next i

' Her tag jeg værdierne fra celler B1 til B10
'og putter i en streng variable der hedder B(1) til B(10)

For i = 1 to 10
B(i) = activesheet.cells(i;2)
next i
Avatar billede henrikudsen Nybegynder
18. maj 2000 - 11:30 #3
Sæt en reference til Excel 8.0 i Visual basic og kør så fælgende kode:
   
Dim XL As New Excel.Application
Dim XLArray() As String
Dim Counter As Integer
   
XL.Workbooks.Open "C:\TestXL.xls"
    XL.Visible = True
    Range("A1").Select
   
    Do
    Counter = Counter + 1
    If Range("A" & Counter).Text = "" Then
        Exit Do
    Else
        ReDim Preserve XLArray(Counter)
        XLArray(Counter) = Range("A" & Counter) & " " & Range("B" & Counter)
    End If
    Loop
    Set XL = Nothing

Ovenståen kode åbner et regneark (C:\TestXL.xls) og henter værdierne ud fra A1:B1,A2:B2 osv. og læser dem allesammen ind i det dynamiske array XLArray() - så skulle det problem være løst :o)
Avatar billede henrikudsen Nybegynder
18. maj 2000 - 13:09 #4
Jeg glemte at nævne at det "smarte" ved min metode kontra mix's forslag/løsning er at hans kode ikke tager højde for hvor mange rækker der er ... hans virker KUN sålænge der ikke er mer' end 10 rækker, min metode er en anelse mer' fleksibel idet den redimensionere arrayet med én hver gang der kommer en ny række, på den måde kan du være ligeglad med om der er 3 rækker eller 12467 - :)
Avatar billede mix Nybegynder
18. maj 2000 - 13:30 #5
Hmmm... nu var det et eksemple.
hvis den ikke skal være bestem.
gør du sådan her.
Dim Find as string
Dim Antal as string
antal = 1
find = activesheet.cells(1,1)
do while len(Find)
antal = antal +1
find = activesheet.cells(antal,1)
loop

ReDim A(1 to Antal) as string
ReDim B(1 to Antal) as string
Dim I as integer

' Her tag jeg værdierne fra celler A1 til A10
'og putter i en streng variable der hedder A(1) til A(10)

For i = 1 to antal
A(i) = activesheet.cells(i,1)
next i

' Her tag jeg værdierne fra celler B1 til B10
'og putter i en streng variable der hedder B(1) til B(10)

For i = 1 to antal
B(i) = activesheet.cells(i,2)
next i

Hilsen
Mix

Avatar billede henrikudsen Nybegynder
18. maj 2000 - 15:16 #6
Hej Mix,

Hva' er forskellen på det du gjorde her i sidste omgang og mit eksempel?

Hilsen
Henrik
Avatar billede kasperh Nybegynder
18. maj 2000 - 16:42 #7
jeg har droppet excel, og gjort det på en anden måde..
Avatar billede mix Nybegynder
18. maj 2000 - 16:44 #8
Hej Henrik.

Forskellen er forståelsen.
for en der ikke kan lave nogle af de 2 ekslemper vi har lavet.
Vil det være nemmer forstå det der er delt op.
sådan er det om ik andet for mit eget vedkommende.

hilsen
Mix
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