-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
félisten
válasz medium84 #8596 üzenetére
"Megjelölni azokat a serialokat, amelyek mindkét file-ban szerepelnek."
Az világos, hogy a file(A) ban kell megjelölni, de mivel legyen megjelölve?(Színnel, egy oszlopba beírt szöveggel vagy mindkettővel, stb)[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
1. Ezt nem tudom, nem használom már a 2003-at, majd valaki ránéz
2. Ezt meg nem biztos, hogy jól értem. Miért akarsz egy olyan gombot az eszköztárra, ami már létezik?
3. UsedRange.Select
4. Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="FSCD_" & Format(Now, "yyyymmdd") & ".xlsm"
Application.DisplayAlerts = TrueMindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
-
félisten
Deleting All VBA Code In A Project résznél találod
Most nem próbálom ki, de majd írj mire jutottál véle, logikusan ennek az egy makrónak azért meg kellene, hogy maradjon(mármint ami kitörli az összes többit)...Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz m.zmrzlina #8621 üzenetére
Nincs ebben ellentmondás, csak vannak olyan esetek (általában egyszerű dolgok esetében), ahol a beépített funkciók lassabbak, mint egy VBA kód.
Az első példa erről szól, azaz a MAX függvény meghívása sokkal lassabb, mint egy IF/THEN/ELSE elágazás/struktúra alkalmazása.A második eset már teljesen más, hisz ott egy nagyobb tartomány összegét számolják ki, ciklus segítségével, ez esetben a beépített WorkSheetFunction.Sum függvény meghívása lényegesen hatékonyabb.
A topicban leggyakrabban elég egyszerű problémák merülnek fel, legalábbis arra gondolok, hogy nem igazán számít a sebesség. Egy összetettebb project esetében persze ezekre illik odafigyelni. A másik "probléma" meg az szokott lenni, hogy gyakran (főleg azon emberkéknél, akik nem rég óta ismerkednek az Excel-el illetve a VBA programozással) abba a hibába esnek, hogy a netről összeszednek mindenféle leírást és azt alkalmazzák, azaz ilyen dirib-darabokból "tákolják össze" a programjukat. Na ez öreg hiba, mert gyakran az egyik szubrutinjuk teljesen más programozástechnikát tartalmaz(akárcsak szintaktikailag is), mint a másik.
Az is gond kezdő emberkéknél, hogy nem arra használják az excel-t, amire az alapvetően hivatott, azaz néha úgymond adatbázis-kezelőként használják, olyan feladatokat szeretnének kivitelezni az excel-el, amire Ő nem igazán hivatott, és ilyenkor jön a teljesen felesleges makrózgatás, és a szükségtelenül bonyolult makrókódok.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
A diagramok szerelmeseinek (hátha valaki számára jól jön)
SimplexNumerica (Ingyenes)
Pár kép
Gyári oldal[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz m.zmrzlina #8625 üzenetére
Hát ez gond, ugyanis a
Sheets("szűrőháló").Range("A1").Selectés
Sheets("szurohalo").Range("A1").Select
sem működhetne...Ha másik munkalapon állsz, akkor nem lehet direktbe hivatkozni(kiválasztani) így egy cellát. Szerintem telepíts szervízcsomagot az Office-hoz, mert jó eséllyel most nincs, vagy legalábbis nem naprakész a frissítése...
(Nálam sem megy egyik verzió sem, Office 2010 x64)
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
-
félisten
Pontosan tudtam miért nem futott le a kód, csak igazából az Extensibility csomag, az talán a leggyengébb láncszem az Excelben (is), legalább is régebben az volt. Bátorság (meg rendszervisszaállítási pont) kell ahhoz, hogy én azt bekapcsoljam...
(20 másodperc alatt állítom vissza a rendszer ha arról van szó, de akkor sem szórakozok azzal a csomaggal)Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Ha csak annyi a problémád, hogy mindig más és más a fájlnév, az könnyen orvosolható. Ahogy látom, a fájl neve(és csak a fájlnév) alapvetően az aktuális dátumból származtatott, de mindig ugyanabban a mappában található, azaz
"C:\utazas\12\utazas2010november11.xls"
"C:\utazas\12\utazas2010november12.xls"
"C:\utazas\12\utazas2010november13.xls"
és így továbbNo ebben az esetben egyszerűen elő lehet állítani a kívánt fájlnevet, az alábbi kód, mindig az aktuális dátumnak megfelelő fájlnevet állítja elő, azaz MA a
C:\utazas\12\utazas2010november14.xls fájlt nyitná meg.My_FileName = "C:\utazas\12\utazas" & Format(Now, "yyyymmmmdd") & ".xls"
Workbooks.Open Filename:=My_FileName[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Esetleg (ha így is megfelelne), akkor sima feltételes formázással
Tudom, ez nem diagram, de ha csak az a lényeg, hogy vizuálisan legyenek megjelenítve a kapcsolók állásai adott dátumkor, akkor talán ez is megoldást jelenthet...(B,C,D oszlopokban 1 és 0 értékek szerepelnek, csak a feltételes formázásnál kikapcsoltam az értékek megjelenítését. Természetesen a cellákba 1-est és 0-át írhatsz...)
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Betennél egy képet a gnu plottal készített diagramról?
Csak kíváncsi vagyok, hogy mégis milyen az a diagram...kwd
És ha ilyesmik vannak a cellában "C0103, S5584" , akkor miben fog változni/nálad miben változik ha szövegről általánosra alakítod?[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Korábban nem volt szó ugyan VLOOKUP-ról, de végül is lényegtelen, mert a szöveg->általános vagy fordított konverzió nem okozhat ilyen jelenséget. Valami nem kerek Nálad...Itt van 2 példa egy hagyományos és egy makrós megoldás, talán segít kideríteni, hogy nálad mi lehet a gond.
(Az A1:A4 tartományt elneveztem Adatok-nak...)Makró
Private Sub CommandButton1_Click()
Dim MyFxs As WorksheetFunction
Set MyFxs = Application.WorksheetFunction
Dim MyRange As Range
Set MyRange = Sheets("Munka1").Range("Adatok")
On Error Resume Next
Result = MyFxs.VLookup("A456", MyRange, 1, False)
If Err.Number <> 0 Then
MsgBox ("Nincs ilyen elem: " & Result)
Else: MsgBox ("Található ilyen elem: " & Result)
End If
End Sub[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz zagoston #8651 üzenetére
Tudtommal Excelből csak egyesével lehet ki- és bekapcsolni a lapvédelmet, de makróval megoldható, hogy az összeset levédd. Az első kód bekapcsolja(jelszóval védve), míg a második meg feloldja a lapvédelmet, az összes munkalapon
Private Sub CommandButton1_Click()
For i = 1 To Sheets.Count
Sheets(i).Activate
ActiveSheet.Protect Password:="FSCD"
Next i
Sheets(1).Select
End Sub
Private Sub CommandButton2_Click()
For i = 1 To Sheets.Count
Sheets(i).Activate
ActiveSheet.Unprotect Password:="FSCD"
Next i
Sheets(1).Select
End Sub[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz zagoston #8653 üzenetére
Még annyit akkor, hogy ha ezt úgy akarod megoldani, hogy elkészítesz egy munkafüzetet, levéded a lapokat majd ezt usereknek oda lesz adva, akkor gondoskodni kell arról, hogy a userek ne láthassák a macro kódját, hisz akkor onnan kileshetik a jelszót, aztán simán módosítják a cellákat.
Ezt a VBA editorban így lehet levédeni
Tools menü/VBAProject Properties/Protection fül/Lock project for viewing elé pipa, jelszó megad. [link]Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Mike318 #8678 üzenetére
Biztos, hogy a korábbi kódodban az END-el van a gond? Az END-nek simán működnie kell és azt is csinálja, amit szeretnél, azaz teljesen mindegy, hogy a macron belül hol van meghíva az END, megállítja a macro futását és teljesen visszaadja a vezérlést az Excelnek...
Pl az alábbi kód i=3 esetén "leáll", a ciklust követő sorig nem jut el.Private Sub CommandButton1_Click()
For i = 1 To 100
If i = 3 Then
End
End If
Next i
MsgBox (i)
End SubUI: A z excelből való teljes kilépés meg Application.Quit
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
A 2000-től a 2007-es Office-ig bezárólag, 6.0-ás VBA "motort használ", azonban ezen azonosság ellenére vannak olyan programozástechnikai eltérések (elsősorban pl deklarálásokban, függvényhívásokban), amikre oda kell figyelni és ez 2003 vs. 2007-re is igaz. A 2010-es Office már 7.0-ás "motort használ", ami alapvetően kompatibilis teljesen a 6-ossal, csak kibővített funkciókkal rendelkezik és ami nem mellékes, ugye a 2010-es Office x64-es változatban is elérhető.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
1. Igen, szedd szét.
2. Nem tudom, melyik pdfcreatort használod(van jó pár), ezért ezt a pdf creatort töltsd le és telepítsd(miután a jelenlegit uninstaláltad), aztán tanulmányozd ezeket a kódokat.
(Azt, hogy hogy lehet fájlnevet létrehozni, (ami tartalmazza a pl dátumot), azt meg korábban megválaszoltam, csak szerintem átsiklottál rajta...Olvass vissza...
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Delila_1 #8686 üzenetére
1. Őszintén szólva nem is gondoltam arra, hogy lazlo8 hsz-ában az első kérdése, az a másodikban szereplő makróra vonatkozik
2. Az adott pdfcreator-os kódban ez meg letudva(ciklusba van szervezve)
Csak infóként: 2007/2010-es Office-ban létezik PDF Add-In, illetve enélkül is lehet PDF-be menteni, ha telepítve van Acrobat Reader...Ez esetben maga a VBA is ad lehetőséget rá...
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Satchmo7 #8688 üzenetére
[link](Az Ebooks ajánlat nem él már)
Továbbá van egy nagyon hasznos fájl is alapban minden excelben, a neve FUNCS.XLS
Az, hogy ez a fájl pontosan hol található, az függ az OS és az Office változattól, itt az x86 vagy x64-es változat értendő. Nálam (W7 x64 és az Office 2010 x64) itt található.C:\Program Files\Microsoft Office\Office14\1038\
A fent említett munkafüzetben megtalálható magyarul és angolul az összes függvény, ami azért nagyon hasznos, mert makróban mindig az angol függvénynevekkel lehet csak dolgozni és jól jöhet, ha egy magyar függvénynek nem tudod az angol nevét.
Amiket ajánlottam, nem makróprogramozási tutorialok, de nélkülözhetetlen segítség hozzá
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Autószűrővel szűkítheted a táblázatod, majd egy makróban írt szubrutin segítségével kinyered a linkek címét.
Makrókód
Function GetLinkAddress(MyCell As Range) As String
GetLinkAddress = MyCell.Hyperlinks(1).Address
End FunctionRáállsz az I2-es cellára és =GetLinkAddress(B665)
(Azért B665 szerepel itt, mert a szűrések következtében a B oszlopban ez az első sor)Aztán hagyományosan, egérrel lemásolod a képletet. Mindez képben
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Kösz, de a kódom nem azt csinálja amit kértek, majd ha később megjavul a PH!(mert most borzalmasan be van állva), akkor elküldöm újra...
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Fire/SOUL/CD #8693 üzenetére
Szóval egy "kicsit" másabb lett a makrókód, így egy az egyben beillesztheted a PH-ra való hozzászólásod folyamán.
Function GetLinkAddress(MyCell As Range) As String
GetLinkAddress = "[L:" & _
MyCell.Hyperlinks(1).Address & _
"]" & _
MyCell.Value & _
"[/L]"
End FunctionA Function az visszaad valamilyen értéket, ez esetben STRING-et, azaz amelyik cellából meg van híva, annak a cellának a tartalma megváltozik, mint egy hagyományos pl SZUM esetén...
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
1. Sub vs. Function
Private Sub CommandButton1_Click()
Call My_SUB_Multiplication(5)
MsgBox (My_FUNC_Multiplication(5))
End Sub
Sub My_SUB_Multiplication(MyNumber As Integer)
Range("A1") = MyNumber * MyNumber
End Sub
Function My_FUNC_Multiplication(MyNumber As Integer) As Integer
My_FUNC_Multiplication = MyNumber * MyNumber
End FunctionDe belinkelve a PH-ra összecsúszott
Azért, mert a PH! törli a felesleges szóközöket(egynél több szóköz szavak közt vagy végén. (Ezen még egy kicsit agyalok, csak megint (még mindig) totálkáros a PH! ebben az időszakban, örülök, ha ez a HSZ elmegy (kb 6-7 perce próbálom küldeni)
márpedig az Excel úgy tűnik még olyat sem tud a cserénél, hogy adott oszlopban lévő elemeken hajtsa csak végre a cserét.
CTRL+H/Listába mind gomb, listából kijelölheted, hogy melyiken legyen a csere végrehajtva. [link]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Sickboy25 #8711 üzenetére
Használd a vágólap megjelenítést és akkor korlátlan számban beillesztheted egy klikkel a szimbólumot.
(Mellesleg az "átmérő" szimbólum az unicode karakter, ezért nem fogod tudni ALT+NUMPAd segítségével megadni)Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz atesz90 #8716 üzenetére
Egy makrós megoldás, csak a "változatosság kedvéért"...
Private Sub CommandButton1_Click()
Dim MyFxs As WorksheetFunction
Dim Src_Range As Range
Dim Dest_Range As Range
Set MyFxs = Application.WorksheetFunction
'Melyik tartmányban számolja meg a számokat
Set Src_Range = Range("A1:B7")
'Eredménytáblázat kezdőcellája (bal-felső)
Set Dest_Range = Range("D1")
For i = 1 To 100
Dest_Range.Select
With ActiveCell
.Offset(i - 1, 0).Value = i
.Offset(i - 1, 1).Value = MyFxs.CountIf(Src_Range, i)
End With
Next i
Set MyFxs = Nothing
Set Src_Range = Nothing
Set Dest_Range = Nothing
End Sub[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Nincs makró? Mert alapban ahol áll a cellakurzor mentéskor, megnyitáskor is ott kellene lennie. Ha ez nem így van, akkor valaminek el kell mozdítania, az meg általában makró szokott lenni...
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Delila_1 #8750 üzenetére
Hirtelen felindulásból eddig jutottam, ami még nem megfelelő, remélem nem kell teljesen más módszerhez folyamodni: A maradék golyók még nem kóserek...
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Delila_1 #8758 üzenetére
Az nem kóser, hogy a szoroban nem használt golyói nem látszódnak...Pl az előbbi képen amit linkeltem a nulla az nem ugy kell hogy kinézzen, hanem felülről lefelé
teli
üres
üres
teli
teli
teli
teliSzóval mint amikor lenullázod a szoroban-t....
Igen, sima függvényekkel dolgoztam(meg még nekiugrom majd)
Te írtad, hogy nem lehet makrózni... Azzal sec-perc kész lenne...Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Delila_1 #8760 üzenetére
elküldhetem a munkafüzetet, tesztelésre?
(Sajnos a feltételes formázás miatt csak 2007/2010-ben használható)Még nem küldöm, mert még találtam egy "apró" bugot...
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Delila_1 #8760 üzenetére
Na végre megoldottam mindent, elméletileg minden oké. Már kóserok a golyók
Írj(akár privebe és küldöm ha érdekel a munkafüzet)Szerk
Elküldve.[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Delila_1 #8766 üzenetére
Hát egyszerűbben oldottad meg mint Én, mivel segédcellákat is használsz(amit makróval elrejtesz), illetve a 10 számjegyig feltölteni nullával, ez szuper ötlet volt, kár hogy nem jutott eszembe, lényegesen leegyszerűsödtek volna az én képleteim is...
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Delila_1 #8771 üzenetére
Gondolom az Én megoldásom egy kicsit "elborultnak" találod nem?
Hát igen, sajnos vannak egy páran, akik néha eltűnnek egy jó időre, egy szó nélkül, és ha előtte az ember rászánt a saját idejéből (néha nem is kevés időt), akkor legalább annyi elvárható lenne, hogy legalább megírja, hogy "ok minden rendben, köszi. Most egy időre eltűnök..." vagy valami...
Zomb€€
i = 48
j = 40
Range("D" & i).Select
ActiveCell.FormulaR1C1 = "='Alap tábla'!R[-" & j & "]C[-1]"
Range("D" & i + 1).Select
ActiveCell.FormulaR1C1 = "='Alap tábla'!R[-" & j + 1 & "]C"Értelem szerűen egy ciklusba teszed, aztán növelgeted az I és J változót (gondolom kettővel)
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
válasz Sickboy25 #8797 üzenetére
Nem biztos, hogy jól értem, de talán erre gondolsz
=HA(D42>16;D44;HA(ÉS(D42<=16;D42>=12);E44;F44))
Magyarul:
Ha D42 nagyobb 16-nál, akkor D44
Ha D42 12 vagy nagyobb, de 16 vagy annál kisebb, akkor E44
Ha D42 12-nél kisebb, akkor meg F44[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
A1-be 298,15
A2-be 299,15
kijelölöd az A1 és A2 cellát együtt
a kijelölés jobb alsó sarkához viszed az egérkurzort, nyomva tartod a bal egérgombot és elkezded lemásolni2 kérdésedre
beírod pl B9 cellába azt a képletet(egyenlőségjellel kezdeni), aztán ráállsz a B9 cellára, a kijelölés jobb alsó sarkához viszed az egérkurzort, nyomva tartod a bal egérgombot és elkezded lemásolniMindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
-
félisten
válasz zsotesz81 #8874 üzenetére
Sajnos nálam ilyen nincs már alapban...Az sem biztos, hogy be tudnám "adagolni" azt a bővítményt, amiben benne van... (W7 x64 és Office 2010 x64)
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
-
félisten
1. A help/súgó hasznos dolog, mert abból is sokat lehet tanulni, főleg, ha kezdeteknél még egy for-next ciklus felépítése/megírása is problémát okoz. Ezen felül ezt javaslom: [link]
A kezdőknek szánt könyvekben általában a VBA programozást szokták bemutatni, de olyan szinten, aminél a súgó többet ér, viszont az objektumok bemutatása, az ki szokott maradni az ilyen alap könyvekből. Na szóval ezért javaslom azt, amit fentebb...2. Range("A" & Rows.Count).End(xlUp).Row
Ez az A oszlop utolsó használt sorának a számát adja eredményül, remélem nem értettem félre a kérdésed...[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
ActiveWorkbook.SaveAs Filename:="D:\FIRE\" & Format(Now(), "yyyy.mm.dd") & ".csv", FileFormat:= _
xlCSV, CreateBackup:=False"van egy több If-ből álló tömböm"
Ilyen nincs, ez így értelmetlen, bár tudom mire gondolsz.
Amikor az ActiveWorkbook.SaveAs segítségével mented a CSV-t, akkor nincs beleszólásod abba, hogy milyen karakterrel legyenek az elemek elválasztva, mint ahogy abba sem, hogy a szöveg/általános típusú értékeket idézőjelek közé tegye avagy sem.
Excel illetve az OS területi beállításai a mérvadók ebben az esetben. Ha tényleg "személyre szabott" CSV-t szeretnél létrehozni, akkor azt más módszerrel kell megoldani.[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Azért van, hogy idézőjelbe teszi a NINCS DÖNTÉS értéket, mert szóközt tartalmaz, ezt kikerülni nem lehet azzal a módszerrel, amit használsz (legalábbis én nem tudok róla).
Ezért kellene egy másik megoldást eszközölni.(természetesen megoldható, csak egy kicsit több meló, de tényleg csak kicsit több)Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Az elsőre majd írok valamit, most nem sok időm van...
""Mentés másként -> CSV (pontosvesszővel tagolt)"
Ha így mented el, akkor az a területi beállításokra támaszkodik, íme a példaMentés másként -> CSV (pontosvesszővel tagolt)-ként mentettem, és ez az eredmény
A makrót nem érdekli a területi beállítás, az az angol beállításokat követi, angolul kell a függvényneveket megadni, a függvények paramétereit vesszővel kell elválasztani stb stb...
Ezért kell más elven megoldani a CSV fájl létrehozását, hogy az területi beállításoktól, a makró alapértelmezett(angol) nyelvétől függetlenül, mindig ugyanazt a formátumú(pontosvesszővel elválasztva, szövegek idézőjelek közt(vagy sem) stb stb) CSV-t produkálja...[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Szerintem elég egyértelműen fogalmaztam:
"A LISTAELVÁLASZTÓT(pontosvesszőről, ami az alapbeállítás magyar OS esetén) egy függőleges vonalra cseréltem"Ha magyar operációs rendszert használsz, akkor a területi beállításokban az alapértelmezett LISTAELVÁLASZTÓ a pontosvessző, ha meg pl Angol OS-t használsz, ott meg a vessző az alapértelmezett.
A makrót meg nem érdekli, hogy milyen OS-t használsz, az mindig vesszővel fogja elválasztani a CSV-t, ha azzal a módszerrel készíted, ahogy korábban beírtad(ActiveSheet.SaveAs)Jobban/érthetőbben nem tudom leírni...
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Ok, akkor inkább szavak helyett.
'itt add meg, mi legyen az ELVÁLASZTÓ karakter
Const MYDELIMITER = ";"
Dim MyCell As Range
Dim MyRow As Range
Dim MyCellValue As String
Dim MyFname As String
Dim MyFnum As Long
Dim MyRange As Range
Private Sub CommandButton1_Click()
'itt add meg a táblázatod tartományát
Set MyRange = Range("A1:B7")
MyFname = "D:\FIRE\" & Format(Now(), "yyyy.mm.dd") & ".csv"
If Not Dir(MyFname) = vbNullString Then
UserChange = MsgBox(prompt:="A fájl (" & MyFname & ") már létezik. Felülírja?", Title:="Megerősítés", Buttons:=vbYesNo)
If UserChange = vbYes Then WriteMyFile
Else
WriteMyFile
End If
End Sub
Private Sub WriteMyFile()
MyFnum = FreeFile
Open MyFname For Output As MyFnum
For Each MyRow In MyRange.Rows
For Each MyCell In MyRow.Cells
MyCellValue = MyCellValue & MyCell.Value & MYDELIMITER
Next MyCell
MyCellValue = Left(MyCellValue, Len(MyCellValue) - 1)
Print #MyFnum, MyCellValue
MyCellValue = ""
Next MyRow
Close MyFnum
End Sub[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Igen, az remek "trükk", csak az a "gond" vele, hogyha egy másik gépen is lesz használva esetleg a munkafüzet és ott más nyelvű OS fut(vagy valamiért mások a területi beállítások), akkor voila, máris nem pontosvessző lesz...
Persze, ha csak és kizárólag a Te gépeden lesz használva az excel munkafüzet, akkor tökéletes megoldás.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
Hát azt csak úgy lehet, ahogy írtad. Ki kell jelölni az összes üres cellát, majd beírni az ="" "képletet" mindbe. Ezt természetesen fel lehet gyorsítani, nem kell egyenként elvégezni.
1. Szerkesztés/Ugrás/üres cellák kijelöl és OK
2. (Most ki van jelölve az összes üres cella), kezd el begépelni ezt ="", majd CTRL+ENTEREzáltal minden üres cellába bekerül a "semmi"...
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
félisten
De Én nem azt írtam
Egyenlőségjellel kezdődjön, mint egy képlet(ahogy írtam), és akkor működni fog. (Kipróbáltam és működik, nem írnám le ha nem működne )
tessék, itt az A és B oszlopok illetve még pár találomra kijelölt cellák üresek (beleírtam az ="" képletet az összes üres cellába) ez az eredmény mentés után, a Te makróddal:[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
Új hozzászólás Aktív témák
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
- Eladó Steam kulcsok kedvező áron!
- Új, bontatlan World of Warcraft gyűjtői kiadások
- AKCIÓ! - STEAM kulcsok / Punch Club, Oddworld: Soulstorm, Children of Morta, stb. - 2024.05.16.
- Game Pass Ultimate előfizetések 1 - 25 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN!
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs