[illegális tevékenységre buzdítás hűlt helye]
Visual Basic - Szoftverfejlesztés fórum
hozzászólások
b@ndi
(tag)
Gondoltam nem nyitok uj temat, mert a cim itt is magaert beszel.
Lenne egy kicsit luzer 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]
jeges
(senior tag)
persze, hogy müxik
ezér' nem szeretem a range objektumot: a hülye hivatkozásai miatt...
b@ndi
(tag)
Meg 1 kerdes?
Igy miert nem helyes megnevezni egy cellat pl?
A hiba :
error 9 subscript out of range
Activecell.Value =
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...
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)
izé...ugyan van elkerülő megoldás, de még mindig érdekelne...
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?
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)
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, 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??
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
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)
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 D!!!!
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.
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
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?