Visual Basic - Szoftverfejlesztés fórum

üzenetek

hozzászólások


yahagyma
(tag)

[illegális tevékenységre buzdítás hűlt helye]


b@ndi
(tag)

Gondoltam nem nyitok uj temat, mert a cim itt is magaert beszel.
Lenne egy kicsit luzer :O kerdesem VB6-ban:
A kovetkezo egyszeru dolog miert nem mukodik? Illetve mit kellene valtoztatni?
Azt hiszem vmi object problemaja van, de ???

Dim x As Variant

Sub Macro()
x = 1
Range(R1Cx).Select
End Sub


jeges
(senior tag)

ez ugye vba?
és excelbe' van? :)
mer' gondolom, csak ott működik...

és milyen hibát ír?


b@ndi
(tag)

Igen, visual basic 6.0. es egy excel cellat akarokmegnevezni, de ugy, hogy kulso utasitasra modositani lehessen egy masik cellara.

A hibauzenete : error 1004,
Method 'Range' of object '_Global' failed


jeges
(senior tag)

a range objektumot annyira ugyan nem ösmerem, de én spec ezt a hivatkozást cells()-el csinálnám:

Sub Macro()

x = 1

Cells(1, x).Select

End Sub


[Szerkesztve]


b@ndi
(tag)

Muxik :DD
THX


jeges
(senior tag)

persze, hogy müxik ;]
ezér' nem szeretem a range objektumot: a hülye hivatkozásai miatt... :D


b@ndi
(tag)

Meg 1 kerdes?

Igy miert nem helyes megnevezni egy cellat pl?

A hiba :
error 9 subscript out of range

Activecell.Value =
:F Workbooks(''c:\ VBA\proba.xls'').Sheets(''blabla'').Cells( 1,1).Value




[Szerkesztve]


jeges
(senior tag)

teszteld le! :)
de komolyan, általába' utálok más workbookra hivatkozni, de az tuti, hogy a ''value''-ra nincs szükség a végén :)
(bár asszem, a value-val együtt is működnie kék...)

egyébként ha jól értem, először kijelölöd a cellát, majd az activecell értékét állítod?
erre sztem nincs semmi szükség, a cells() objektumra hivatkozhatsz nyugodtan kijelölés nélkül is...
azaz értékadás így néz ki:
cells(1, x)=workbooks(''példabook'').sheets(''példasheet'').cells(1,1)

vagy ha ugyanarról a sheetről:
cells(10, 10)=cells(20, 20)

lehet (de ebbe' nem vagyok biztos), hogy vmi frissítési parancsot köll még ráengedni, ha külső forrásból veszi az értéket... :U


b@ndi
(tag)

Koszi a gyors valaszt, de sajnos ez most nem muxik igy :(

Amit egyebkent el akartam erni, hogy egy cella erteket egy masik excel file-bol athelyezze. Mindezt relative, mert kb 1-2ezer cellanyi kell, ami loop-olva viszonylag egyszeru lenne.

Meg 1x thx, de mara sajnos mar mennem kell. Udv


KovacsUr
(addikt)

A Workbooknak már nyitva kell lennie, nyisd meg valamikor:
   Workbooks.Open ("Z:\Dokumentumok\XLS\fuzet.xls")
aztán válts vissza a saját workbookodra:
   ThisWorkbook.Activate
Ezután
   Workbooks("fuzet.xls").Sheets("lap").stb
(tehát már elérési út nélkül)...


jeges
(senior tag)

no, most nekem lenne egy kérdésem:
hogy lehet makró értékadást úgy definiálni, hogy két mező összege kerüljön a cellába, de úgy, hogy ne az összeg, hanem a képlet legyen a cella értéke?
azaz:
cells(x,4)=cells(x,3)+cells(x,2) érték, de ne konkrét érték, hanem a képlet kerüljön bele
előre is köszi :)


jeges
(senior tag)

no...senki? :O


jeges
(senior tag)

izé...ugyan van elkerülő megoldás, de még mindig érdekelne... :B


lao ce
(aktív tag)

ize... nem lehet egyszeruen beirni a worksheet function-t mint stringet? ugy ertem ''=sum(a1:b2)'' ?


jeges
(senior tag)

fogalmam sincs, de ezzel nem lennék sokkal előrébb, mer' ahogy írtam, nekem relatív hivatkozás kéne képletbe, azaz minden sorba a neki megfelelő sor összege kéne, kerüljön
erre még csak-csak tunnék vmi megoldást (pl. copy és paste eljárásokkal)...
a ''súlyosabb'' probléma a következő lenne:
van egy táblázat, amit egy másik sheetről töltök fel. a tábla függőlegesen csoportokra van osztva, és ezeknek a csoportoknak kéne az összegét ''beképletezni'', de az egyes csoportok rekordszáma csak a feltöltés után válik ismertté. ugyanakkor elképzelhető, hogy a táblát manuálisan köll korrigálni a kitöltés után, ezért lenne jó, ha a csoportösszegek be lennének képletezve
a probléma az, hogy nem t'om, van-e olyan függvény, ami a cells(x,y) kifejezést az általad is írt (pl. ''a6'') formátumra konvertálja. lehet, hogy külön ki kéne jelölni a range-eket (ezt a cells()-el is meg lhet tenni), elnevezni őket (pl. ''range1'', ''range2'', stb.), és így behivatkozhatók a sum függvénybe? :U

az a legnagyobb bajom, hogy így a makrófutás több percig is eltarthat, ami nem túl praktikus (kb 30 oszlop és 500-600 sor) :O


jeges
(senior tag)

:U


jeges
(senior tag)

no, hátha délután van itt vki, aki tudja a választ :U


KovacsUr
(addikt)

Formula propertyvel, pld.

Cells(Target.Row, 4).Formula = "=$C" & Target.Row & "+ $B" & Target.Row

Vagy valami ilyesmi, nem tudom, konkrétan hol akarod alkalmazni :)


KovacsUr
(addikt)

van-e olyan függvény, ami a cells(x,y) kifejezést az általad is írt (pl. ''a6'') formátumra konvertálja

A Range objektum Address() propertyje.


lao ce
(aktív tag)

''a tábla függőlegesen csoportokra van osztva, és ezeknek a csoportoknak kéne az összegét ''beképletezni''''
ugy erted oszloponkent osszegezni kell?

''az egyes csoportok rekordszáma csak a feltöltés után válik ismertté''
ugy erted a sorok szama valtozo?

''a makrófutás több percig is eltarthat''
csudat. pilanat alatt meglesz.

eloszor is ha igy altalanosan irsz, akkor azt mondom, hogy az elso sheetre tennek nehany fuggvenyt es a masodik sheetre mikor be lenne pastezva a tablazat akkor 'kitoltodnenek' a szamok az elso oldalon. az, hogy a sorok szama dinamikus nem szamit, mert a fuggvenybe az elso 5e sort kell hasznalni es kesz.


b@ndi
(tag)

Talan vhogy igy is mehet:
Cell(x,4) = ''=Cell('' & a & '', 1) + Cell('' & b & '', 1)''
Eleg barbar modszer, de talan mukodik.

Ugyanakkor vki megirna nekem, pliz, :O hogy, hogyan lehet range-et valtozoval megnevezni? En igy probaltam, de nem tetszett neki (1004-altalanos hiba).

a = Inputbox(''1 es 10 kozott egy szam'')
Range(''a:a'').Select



[Szerkesztve]


Veron
(őstag)

Hi al!

Egy ismerősömnek kéne segítenem visual basicben, gondolom ilyen tök alap szintű dolgokat csinálnal. Én igazából csak pascallal, meg c-vel ismerkedtem meg, és nem igazából ismerem a vb-t. Elöször is az a kérdésem hogy honnan lehet leszedni vmi compilert (ha igyenes egyáltalán)?
A második hogy szintaktikában mennyire hasonlít a pascalhoz agy a c-hez??


Veron
(őstag)

haho mindenki alszik vagy mi????


T_bee
(aktív tag)

hi

az lenne a kérdésem, VB6ban hogyan lehet a list vezérlőnek különböző elemeket értéknek megadni, meg hogy hogy lehet az egyes elemekre való kattintást érzékelni

kösz

T_bee


KovacsUr
(addikt)

A .NET Framework SDK-ban van VB.NET compiler --> Bővebben: link. Telepítés előtt fel kell tenned magát a .NET frameworköt is --> Bővebben: link.

Ha VB 6-ot vagy régebbi változatot használ az ismerősöd, nincs ilyen egyszerű megoldás. Esetleg valami 60 napos Visual Studio 6 próbaváltozat, ha találsz valahol. Vagy campus-licensz, ha diák vagy.


Veron
(őstag)

Koszi azota sikerült szereznem egy visual studiót, de diak vagyok ugyhogy valszeg a campusz liszensz is jó lett volna csak későn szóltak hogy van ilyen :D


blemidon
(tag)

Hi!

Az elemre kattintás vizsgálata egyszerű: a listbox Click() metódusában le tudod kérdezni az éppen aktuális elem indexét:

Private Sub List1_Click()
MsgBox List1.ListIndex
End Sub

Ennyi.


[Szerkesztve]


blemidon
(tag)

Amit meg kifelejtettem:

A ''különböző értékeket megadni''nál arra gondolsz hogy hogyan lehet feltölteni?
Mert az se bonyesz:

List1.AddItem ''text''


Sopi
(senior tag)

Helló!

Nem rég kezdtem el VB-ben programozni.
De kéne egy kis segítség.
Van 21objektum(kép). Nevük tömbben van.
Taska(0), Taska(1), Taska(2), ... Taska(20)
Így ugye ugyanaz a Clicked esemény fog tartozni mind, a tömbben lévő képre.
Hogy tudnám megoldani, hogy annak az elemnek az Indexét olvassam ki, amelyik képre kattintok.
PL.:
ha a Taska(5) nevűre kattintok n legyen egyenlő 5-el.

(Remélem érthető, mit akarok)


Sopi
(senior tag)

UP


T_bee
(aktív tag)

asszem
private sub taska.click (index as integer)
if case index
case 0 then
.
.
.
case 1 then
.
.
.
end selectt


Sopi
(senior tag)

THX :DDDD!!!!
Ugyan nem ez lett a vége, de hála neked megtudtam, hogy kell írni, mivel én mindenre gondoltam, csak arra nem, hogy simán Index

Private Sub imgTaska_Click(Index As Integer)
n = Index
End Sub

Ennyi :):):)
KIRÁLYSÁG!


T_bee
(aktív tag)

tudod... A jó űttörő ott segít ahol tud :))
na nekem is van kérdésem, hogy lehet a listáról kiválasztott elemeket törölni?
meg hogy lehet a listán a beírásokhoz tartozó indexeket összeadni?


dbali
(aktív tag)

Kira!:) akkor megnyugodhat a leked Sopi mégis csak egyszerűbben megtudjuk csinálni..és most már a táska letiltás is menni fog. :C


blemidon
(tag)

Milyen lista? Milyen elemek? Milyen beírás? Milyen indexek?
Légyszíves próbálj meg konkrétabban kérdezni, akkor talán válaszolni is tudunk:)
(Már az előző listcontrolos kérdésed sem volt vmi egyértelmű:)


T_bee
(aktív tag)

ok.
tehát a list1.list listán vannak elemek: a 120 indexxel, b 240 indexxel. el szeretném távolítani a elemet a listáról. ezt hogy lehet?


T_bee
(aktív tag)

na. már rájöttem erre is :))
DE.
van egy progi, ami bekér két számot text1 és text2 vezérlőben, a és b változóba.

Private Sub Command1_Click()
If i = False And j = False Then
c = a
c = c + ''*''
c = c + b
o = a * b
index = a * b
List1.AddItem = c
q = q + o
Text3.Text = q
End If
End Sub

és ha a lista egyik elemét törlöm akkor hogy lehet annak az értékét( tehát az elem c változójának értékét) törölni egy másik Q változóból?


blemidon
(tag)

A listboxban 5*6 stb formátumban vannak az elemek.
A következő függvény egy ilyen stringet alakít vissza az eredménnyé:

Private Function ListItemFromText(s As String) As Integer

Dim x As Integer
Dim s1 As String, s2 As String

s1 = Left(s, InStr(s, ''*'') - 1)
s2 = Right(s, InStr(s, ''*'') - 1)
ListItemFromText = Val(s1) * Val(s2)

End Function

Meghyvod az épp törölni kívánt listelemmel, és visszaadja hogy mennyi annak a számértéke, ezt már ki tdod vonni a q-ból.


T_bee
(aktív tag)

köszi, de ez csak az utolsó beírás értékének törlésére jó jó :(
olyan kéne, hogy az éppen kiválaszott elemének az értékét lehessen törölni


blemidon
(tag)

Ez nem csak arra jó. Ha jobban megnézed, ez 1 eljárás, ami a listboxod bármelyik elemének értékét adja vissza számként. Ha törölsz 1 elemet, akkor tudod hogy melyik volt az (az éppen kijelölt elemet a List1.Text függvénnyel kérdezheted le. Amit már írtam régebben hogy a kijelölt elem indexe, ugyanott lekérdezhető az értéke is ezzel) Mivel az éppen kijelöltet fogod törölni, ezt az értéket átadod ennek a függvénynek, és visszakapod a számértékét integerben.

Private Sub List1_Click()
MsgBox List1.ListIndex
MsgBox ListItemFromText(List1.Text)
End Sub

Itt simán q-ból kivonod a ListItemFromText(List1.Text)-et, és kész. Az épp az az elem ami ki van jelölve, tehát az aktuális törlendő.


T_bee
(aktív tag)

hi

mi a hiba atz alábbi kóddal? mer nekem sajna nem fogadja el

pivate sub command1_click

dim szam as string
dim i as byte
i=i+1
list1.additem szam,i

end sub

na ez nem akar mennni, és nagyon zavar, hogy nem tudok az elemeknek külön indexet adni :O :O

köszi


T_bee
(aktív tag)

meg még 1 kérdés: Linuxok alatt működik a microsoft visual studio 6, meg a VB?


T_bee
(aktív tag)

valaki?

[Szerkesztve]

üzenetek