Hozzászólások
-
SzerzőBejegyzés
-
Sziasztok!
Most beleokoskodok.:)
Ez mehetne az elejére:
Dim DataSH As Worksheet
On Error GoTo errhandler:Set DataSH = Sheets(“adat”)
Nem vagyok benne biztos, de szerintem nem kell selectálni copyhoz
Sheets(“adat”).Select
Range(“B8:G209”).Select
Selection.copy
helyett:
DataSH.Range(“B8:G209”).copy
az se biztos hogy érdemes copy-zni
helyette:
DataSH.Range(“CQ8”).resize(DataSH.Range(“B8:G209”).rows.count, DataSH.Range(“B8:G209”).columns.count).value=DataSH.Range(“B8:G209”)
persze a DataSH.Range(“B8:G209”) tartomány hozzárendelhető változóhoz, akkor jobban néz ki.
Nem szeretem (nem is használom sose) a RowSource tulajdonságot.:)
Próbáltad már a list-et helyette?
Ha van egy ranged, amit hozzárendelsz egy variant típusú változóhoz tömb lesz belőle a listbox.list tulajdonság egy tömböt vár.
azért is jobb szerintem a list, mert nem csak range-ből jöhetnek az értékek, de abból is.
Az eredeti kérdésre nem tudok válaszolni, azt nem értem.:)Köszönöm,
ZoliKedves Kata!
Kell legyen a kódodban egy sor, ami megjelíti a form-ot, annak a sornak a környékét meg tudnád osztani?
Az érdekelne még, hogy az a kód hogy néz ki, ami elrejti (bezárja) a formot. Illetve az hogy a form modal vagy sem.Köszönöm,
ZoliSziasztok!
Az kérdés nekem, hogy mitől függ, mi lesz a munkafüzet. Nem lehet ezt valahogyan algoritmizálni (jól megválasztott fájl neveken keresztül)? Esetleg, ha új a munkafüzet, lehet nevet generálni neki. Az is kérdés számomra, hogy nyitva van-e vagy sem? Ha tudsz írni egy formot, akkor feldobhatja egy listában a megnyitott munkafüzeteket, ahonnét ki tudod választani futás közben, vagy feldobhatsz egy valamilyen open file dialogust is, ha zárva van, aminek a visszatérési értéke lehet a munkafüzet neve. Az is lehetőség, hogy mindig az aktív munkafüzetbe írjon ki, ha tudod úgy alakítania a programod. Ha az Imre által javasolt megoldást választod, ami kétségtelenül praktikus, érdemes a változó értékadásakor megadni a munkalap nevét is, sőt ha szükséges valahogy a munkafüzetét is, ahol a nevet tárolod.
valtozo = ThisWorkbook.Sheets(1).Range(„D1”)
Üdv,
LZZoli!
belátom elsőre felületesen olvastam el.:)
már értem miért akarsz függvényeket használni.
viszont még mindig túl általános a kérdés számomra.
az lenne jó, ha a függvény tömböt készítő rutint be tudnád másolni, hogy be tudjam másolni egy modulba. vagy bontsuk a kérdést kisebb, specifikusabb problémákra!:)
Imi bejegyzése még eszembe jutatott valamit. Lehet, hogy nincs értelme, mert általánosságban már értem, de még részleteiben nem… szóval lehet, hogy érdemes előre neveket definiálni a workbook-ban, ha ez lehetséges. mikor legyártod a sablont, a kóddal hozzáadhatsz a wb-hez egy pl. ecskoordinatay nevet, aminek értéket adsz.. de lehet, hogy ez nem segít, értelmetlen. ha jól értem a sablon is egy sablon alapján gyártod le?Üdv,
LZszia Zoli!
az lenne jó, ha bemásolnád a rutint.
szerintem nagyon ritkán jó megoldás worksheet képleteket használni. szerintem van egyszerű megoldás a problémádra, csak nem látom át, hogy mi (a probléma) az pontosan.
Üdv,
LZ2014-02-04-12:08 Hozzászólás: Hová mentsük a makróinkat? A Personal.xls-be vagy a Bővítmény.xla-ba? #1383szia!
szerintem a personal-ban semmit nem kell tárolni.:)
ööö… nem is tudom, hogy indokoljam, betelik (átláthatatlanná válik), bizonytalan a helye, ha több gépről beszélünk, nehezen mozgatható, hálózatról nem könnyen látható.
a personal kb. hobbi programozásra alkalmas, ha van 5 procedurád mondjuk, megpróbál egy olyan megoldást biztosítani, ami lefedi a programozó tudásbeli hiányosságait. mindig elérhető, mert betöltődik.:) persze ezt csak én gondolom, most találtam ki.:)
pont arra erősít rá, ami a VBA legnagyobb bénasága, hogy nehéz központi kódokat használni, könnyen (egyáltalán) újrafelhasználni, karbantartani.bővitményekben akkor már.:)
ha csinálsz hozzájuk vezérlőket, akkor mindegy hol van, ami az elérhetőséget illeti.Üdv
2014-02-04-11:54 Hozzászólás: Az excel- és a felhasználói függvények (udf) számítási sebessége #1382az a jó, ha nincsenek semilyen függvények a worksheeten ennyi cellában.:)
Szia!
nekem ez nem világos, egy tartományt akarsz egy tömbbe olvasni?
általában:
dinamikus tömböt kell deklarálnod így:
dim ara() as variantaztán redimenzionálni:
redim ara(1 to x, 1 to y)ehhez persze itt már tudnod kell mi lesz x és y
azt is kell tudnod, hogy több dimenzió tömböknél az első redim után már csak az utolsó dimenzió méretét tudod újra dimenzionálni
persze ez kivédhető ha range-ről van szó, több módon is, de attól függ a jó módszer, hogy utána mit akarsz csinálni a tömbbel.ha range tartalmat akarsz tömbbe tenni, akkor pozicionálnod kell a range-et
utána meg egyszerűen azt mondod:ra=Range
Üdv
nálam a következő gyakorlat alakult ki:
mindig deklarálom a változókat, egy tartomány az egy range típusú objektum, aminek az apja a sheet, annak az apja meg workbook. ezért fentről lefelé deklarálok változókat, amiket után inicializálok, így biztos lehetek abban, hogy függetlenül attól, hogy hol vagyok, a változóra hivatkozva ugyanoda jutok.kb, így (másold be egy modulba és jobban fogod látni):
Sub formatRange()
‘wb a változó neve a típusa workbook
Dim wb As Workbook
Dim sht As Worksheet
Dim wArea As Range‘változók hierarchikus inicializálása
Set wb = Workbooks(„AmibenAzInvActSheetVan.xlsx”) ‘a nyitott workbookok közül az x nevű
Set sht = wb.Sheets(„InvAct”)
Set wArea = sht.Range(Cells(3 + i, 1), Cells(3 + i, 1 + j))
‘ha több formázási művelet van érdemes így
With wArea
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
‘ha csak egy akkor:
‘wArea.HorizontalAlignment = xlCenter
End Sub -
SzerzőBejegyzés