Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Arvo Excel-taulukosta muuttujaan

mabkuosa [27.01.2012 15:21:02]

#

Hei,

Ei ole vielä selvinnyt, että miten tänne laitetaan uusi kysymys ja siksi kysyn täällä, kun excelistä puhutaan. (Mod. loi aiheen. Jos et näe edes noin pientä vaivaa asian selvittämiseksi, miten voit odottaa, että muut viitsivät nähdä vaivaa auttaakseen sinua?)

Probleema olisi seuravanlainen: yritän lukea Sheet1:ltä
1D taulukon (sisältää 5 kpl desimaalilukuja) visual basic koodin puolelle:

Dim x As Variant

x = Sheet1.Range("B1:B5").Value

Solut B1...B5 sisältää ulkolämpötilan arvoja.

Miten saan tuosta x matriisista yhden lämpötilalukuarvon luettua muuttujaan

T_u?

t. mk

Mod. lisäsi kooditagit!

jtha [27.01.2012 15:42:09]

#

Kokeile taulukkoa vaikka näin:

Dim x(1 to 5) As Variant

x(1) = Sheet1.Range("B1").Value
x(2) = Sheet1.Range("B2").Value
x(3) = Sheet1.Range("B3").Value
x(4) = Sheet1.Range("B4").Value
x(5) = Sheet1.Range("B5").Value

(tee luuppi isommille määrille)

Mod. lisäsi kooditagit!

neau33 [27.01.2012 16:23:08]

#

Moi mabkuosa!

testaa...

Dim x
Set x = Range("B1:B5")
MsgBox x(1)
MsgBox x(2)
'jne...
Set x = Nothing

jos haluat loopata...

Dim x, y
Set x = Range("B1:B5")
y = x.Value
For z = LBound(y) To UBound(y)
   MsgBox x(z)
Next
Set x = Nothing

mabkuosa [27.01.2012 20:38:18]

#

Hei,

Kiitos vastauksista. Tuohon matriisiin tulee enemmänkin lukuja esim 24 h x 31 päivän lämpötilat.

Ymmärtääkseni jtha:n ehdottama luuppi voisi olla:

i = 0
Do
i = i + 1
x(i) = Sheet1.Range("B1")
Until i =24 x 31

Tässä kysymykseksi jää, että miten "B1" saadaan muuttumaan "B2":ksi, "B3":si jne.

Ilmeisesti Nea:n luuppi sijoittaa Sheet1:n lämpötilojen lukuarvoja (yksi kerrallaan soluista B1:sta B5:een?) muuttujaan x(Z) ja voitaisiin kirjoittaa, että T_u = x(z) solujen arvoja luettaessa? Mutta miksi eka versiossa MsgBox x(i), i = 1, 2,... komento ja Set x = nothing ovat mukana, onko tuo MsgBox sitä varten, että voidaan vain "boksista katsoa" niitä lt arvoja?

Olen kyllä vba:lla jonkin verran koodannut mutta nämä matriist/vektorit ovat outoja.

t. mk

Mod. lisäsi kooditagit!

mabkuosa [27.01.2012 21:05:47]

#

Vielä lisäys. Minulla on

do
.
.
.
until

muotoinen koodi, jossa yhdellä kierroksella tarvitaaan vain yhtä taulukon B1, B2... (Sheet1) sisältämää lämpötila-arvoa. Ts. eri solun arvo / kierros.

jtha [28.01.2012 09:50:46]

#

Moi. neau33 esitti kätevämmän keinon, mutta jos haluat tehdä noin niin
lisäile tähän tyyliin:

x(i) = Sheet1.Range("B"& trim(str(i)))

Mod. lisäsi kooditagit, voisiko niitä opetella käyttämään?

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta