-
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
-
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
-
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] -
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 -
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 -
-
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...)
-
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 -
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)
-
-
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)
-
A diagramok szerelmeseinek (hátha valaki számára jól jön)
SimplexNumerica (Ingyenes)
Pár kép
Gyári oldal -
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.
-
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)...
-
-
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 = True -
-
válasz
pentium4
#8592
üzenetére
Hali!
Pedig szépen leírták.
Leírom másképp: Ahol áll a cellakurzor, attól balra lévő oszlop(ok) és felette lévő sor(ok) lesz(nek) rögzítve. Esetedben tehát a C1 cellára állítsd a cellakurzort.Delila_1
Merre "kóboroltál" mostanság? Egy időre eltűntél, már hiányoltalak a topic-ból...
Fire.
-
válasz
dellfanboy
#8581
üzenetére
Hali!
Nem feltétlenül kell hozzá makró, lehet külső hivatkozást is alkalmazni, pl:
='C:\Users\Fire\Documents\[orszagok.xlsx]Hun'!B1Ez a C:\Users\Fire\Documents mappában található, orszagok.xlsx nevű munkafüzet, Hun nevű lapjának, B1 cellájának az értékét adja eredményül, jeleníti meg.
Fire.
-
válasz
tknof1871
#8572
üzenetére
Hali!
Nézd, én nem tudom, hogy került ide az Euler állandó vagy hogy ezt honnan szedted. Korábban azt írtad:
"Valami megragadott a haditechnika azon területében, ahol egy testet felgyorsítanak és valamit el akarnak találni vele. Ez pusztán kíváncsiság."
Ez semmi más, mint alapvetően a fizika hajítások témaköre. Semmi nem indokolja, hogy 10^46 értékekkel számolj avagy regressziós analízis jöjjön szóba...A sima pl ballisztikus görbe, az egy elméleti görbe, gyakorlatban nem létezik, pontosabban csak egy esetben, amikor nincs közegellenállás. A legegyszerűbb hajításokra vonatkozó képletek csak és kizárólag a fenti esetre érvényesek. A valós röppálya kiszámítása ennél sokkal kifinomultabb eljárás, mivel nem túl gyakori, hogy valaki légüres térben lövöldöz...
Fire.
-
válasz
m.zmrzlina
#8564
üzenetére
Hali!
Kértem, hogy olvasd el a leírást (ami magyar ráadásul)
![;]](//cdn.rios.hu/dl/s/v1.gif)
"Számomra ez arról szól, hogy az On Error Resume Next önmagában nem old meg semmilyen hibát csak ettől a kód "nem vesz tudomást" a hibáról."
nem akarom leírni mindent, ami a linken található, de az On Error Resume Next utasítás nem hogy letiltja, hanem bekapcsolja a beépített hibakezelőt(in-line error handler).
Az On Error Resume Next rögtön követő sor válthatja ki a hibát, ezért az elé kell rakni. Ha a hiba létrejön, akkor le lehet kezelni (IF err) és a program folytathatja a futását(a példaprogi amit adtam is ezt tenné, csak én abba beraktam egy Exit Sub sort, amivel ugyebár kilép a subrutinból).
Ha nincs hiba, akkor a hibakezelő rész "ki lesz hagyva" és úgy folytatja a futását.Zomb€€
Az OS Regional Settings (Területi Beállítások) módosítása globális, ha külön nincs felprogramozva az adott alkalmazás, akkor ezt veszi alapul. Az adatbázisoknál, amikor létrehozod őket, kapásból van lehetőség, magának az adatbázisnak a "területi beállításaira", azaz, hogy milyen formátumban tárolja az adatokat.(Oracle, Paradox, Access stb).
Ha a program felülbírálja a területi beállításokat(mert hogy lehet, sima formázással), akkor lényegtelen, hogy magának az adatbázisnak milyen területi beállításai vannak. Elsősorban amit érint ez a beállítás, az a Dátum/idő/pénznem...Szóval ezen esetekben(különösen a tizedesjegy-elválasztó esetén) érdemes csak magában az Excel-ben megváltoztatni az elválasztó karaktert, így nem fogja dátumként azonosítani a pl 1.23-at. Persze kézi beillesztéssel(nem pedig adatok importálásával adatbázisból) ez nem kivitelezhető anélkül, hogy az Exelben át ne írnád a tizedes-elválasztót, mert különben a pontal elválasztott tizedes számokat automatikusan dátumnak értékeli.Fire.
-
válasz
m.zmrzlina
#8560
üzenetére
Hali!
Először is amit kérdezel, az nem tudálékosság vagy okoskodás, nagyon helyes, hogy ezt megkérdezted, ha nem vagy tisztában ezzel a dologgal.

A legnagyobb tudásbázis természetesen a Microsoft MSDN Library-ban található, számos területen, egyetlen "gond", hogy angol, amit ha jól sejtem, nem űzöl alapszinten sem.
A sors fintora, hogy az OpenOffice tudásbázisában találtam magyarul leírást, és ahelyett hogy leírnám, hogy mi jó vagy nem jó a kérdésedben, inkább azt javaslom, hogy olvasd el, szerintem ezután már érthető/egyértelmű lesz a dolog.
Zomb€€
1. Ezt a "monológot" olvasd el.
(Mellesleg -tudtommal- nincs lehetőség az AutoDate formázás működésének beállítására)2. Ez érdekes kérdés, bevallom elsőre azt mondanám, hogy nem kivitelezhető, de ezt nem teszem, előbb utánanézek.
![;]](//cdn.rios.hu/dl/s/v1.gif)
Fire.
-
válasz
netti027
#8555
üzenetére
Hali!
Ha egyszer lejár a próbaidőszak, akkor nem lehet újabb próbaidőszakos Office-t feltelepíteni. Mi lenne a megoldás? Hát hogy megveszed, avagy ha köz- vagy felsőoktatási intézménynek vagy hallgatója, esetleg szüleid dolgoznak ebben a szférában(pl tanár, oktató stb), akkor Tisztaszoftver Program keretén belül ingyenesen juthatsz hozzá az Office csomaghoz vagy akár Windows 7 OS-hez is.
Fire.
-
válasz
m.zmrzlina
#8557
üzenetére
Hali!
Private Sub CommandButton1_Click()
On Error Resume Next
ActiveSheet.Paste
If Err Then
MsgBox "Nincs mit beilleszteni." + Chr(13) + "Végezd el a kijelölést!", vbCritical, "Figyelem !!!"
Err.Clear
Exit Sub
End If
'további utasítások (jó ág)
End SubFire.
-
válasz
tknof1871
#8552
üzenetére
Hali!
Ez az eltérés a lebegőpontos számábrázolás, pontosabban a bináris számábrázolás pontatlanságából adódik. Szép témakör ez, itt egy kis olvasnivaló, hogyan segíthetsz a dolgon: [link]
Mondjuk ez csak egy kérdés részemről, de nem igazán világos, hogy primitív koordináta-párosok estén mi szükség van ekkora karakterisztikára?

Fire.
-
-
válasz
Robb202
#8536
üzenetére
Hali!
Használj AcitveX ComboBox vezérlőt. A munkafüzet megnyitásakor végbemenő eseményhez/eseménybe [ Workbook_Open() ] írsz afféle inicializáló eljárást, ahol feltöltöd adatokkal amit kell, ebben az esetben a ComboBox1-et
Private Sub Workbook_Open()
With Sheets("Munka1").ComboBox1
.Clear
.AddItem ("Igen")
.AddItem ("Nem")
End With
End SubCella színe, attól függően, hogy igen vagy nem-et választottál a ComboBox1-ből
Private Sub ComboBox1_Change()
Select Case ComboBox1.Text
Case "Nem"
Range("A1").Interior.Color = RGB(255, 0, 0)
Case Else
Range("A1").Interior.Color = RGB(0, 255, 0)
End Select
End SubA függvényed visszaadott értékét ez alapján már elég egyértelmű feldolgozni, és aszerint színezni a megfelelő cellát...
Fire.
-
Hali!
Perfag linkjéhez annyit, hogy ne hogy megijedj tőle
, mert az egészben az a lényeg, hogy egy külső munkafüzetet az Application.ScreenUpdating = False és Application.ScreenUpdating = True között kelll megnyitni/feldolgozni/lezárni.Application.ScreenUpdating = False
...
Megnyitod
Átveszed az adatokat amit kell
Lezárod
...
Application.ScreenUpdating = TrueFire.
-
válasz
IReTrOI
#8515
üzenetére
Hali!
Első hallásra az FKERES függvényt nézd meg.
Delila_1
Kösz. Csak azért kérdeztem, mert látszott a képen a mínusz jel, csak azt nem tudtam, hogy esetleg változattál-e még azon is valamit. Amúgy annál jobban nem hiszem, hogy meg lehet oldani, mert úgy legalább a C oszlopba is a megfelelő helyre kerül az "elsődleges" mailcím, illetve a segédoszlopokban meg látszik a többi. rTyler-nek arra kell csak ügyelnie, ha több mailcímet ad meg, akkor egy újabb segédoszlopot kell felvenni ill. a képletet másolni...Fire.
-
válasz
Delila_1
#8513
üzenetére
Hali!
itt most milyen képlet is szerepel a C1-be?
"Ez most egy akadémista vita"
Jó legyen az, akkor meg a feladat nem ez, a legelső képletedet C1-be aztán kész is a feladat. A felvett oszlopok (IJKLM stb) feleslegesek innentől kezdve, mint ahogy az D oszlopba több vezetéknév illetve a E oszlopba a több email is, mert "döglött adatok", sosem kerülnek felhasználásra...
Fire.
-
válasz
Delila_1
#8511
üzenetére
Hali!
"Most csak megdupláztad az E tartalmát."
Nem igazán, mert ha nem szerepel a B oszlopban, akkor nem lesz ott a mail címe, lásd esetedben fabian esetén.Nézd az alapkérdés az, hogy ezzel a struktúrával hogyan tudnánk kivitelezni azt, hogy egy embernek több mailcíme van azokat megjeleníteni és emellett azt valahogy "jelölni", hogy az illető szerepel-e a B oszlopban...(merthogy volt ilyen irányú felvetés rTyler részéről)
Én abban látom a problémát, hogy ha szerepel B a D-ben, akkor csak 1 mailcímet írhatsz oda, ha nem egy mailcímet írsz egymás alá a C oszlopban, akkor áttekinthetetlen, ha annyi oszlopot áldozunk fel, ahány mailcíme van, akkor meg csak makró, mert hagyományos képlettel nem tudhatod, hogy hány darab mailcíme van valakinek. Ezért ez a megoldás ezért nem feltétlen megfelelő, hisz mindig újabb és újabb oszlopba kellene képlet, attól függően, hogy hány mailcíme van valakinek.
Természetesen, ha ez korlátozva lenne pl max 5, akkor nyilván a megoldásodat kibővítve több oszlopra tökéletes megoldás lenne.Fire.
-
-
Hali!
Na, hát sikerült ezzel a feladattal mind engem, mind Delila_1-et jól "átverni", mivel mindketten automatikusan elfogadtuk, hogy a feladatot úgy kell megoldani, ahogy azt Te leírtad, nevezetesen így

"arra lenne szuksegem, hogy a b oszlop tagjait megkeressem d oszlopban es a c oszlopba bemasoljam e-bol a b-hez tartozo email cimeket"
Nos ezt a feladatot lényegesen egyszerűbben meg lehet oldani, méghozzá úgy, hogy "megfordítom" a keresést, azaz nem a B oszlop tagjait keresem D oszlopban, hanem a D oszlop tagjait "keresem" a B oszlopban. Innentől a megoldás ennyire egyszerű:
C1-be -> =HA(DARABTELI($B$1:$B$4;D1)>0;E1;"-") majd ezt lemásolod, ameddig a D oszlopban vannak a vezetéknevek.
Angol megfelelője =IF(COUNTIF($B$1:$B$4,D1)>0,E1,"-")Mint látható, így nem kell makró, sem bonyolult képlethalmaz, ráadásul az egy emberhez több Email cím is letudva.
Fire.
UI: Szerintem Delila_1 is befonja a szemöldökét, ha ezt olvassa...

-
válasz
samfishR
#8505
üzenetére
Hali!
Példa kedvéért A oszlopban lesznek a számok.
1. A1-be 1, A2-be 2
2. A1 és A2 kijelöl, kijelölés sarka megfog, egérrel lehúz ameddig kell
(Ilyenkor semmi más nem történik, mint 1,2,3,4....40-ig bekerülnek egymás alá a számok az A oszlop celláiba.3. Teljes A oszlop kijelöl (de lehet csak azokat a cellákat is, amelyekben a számok vannak), jobb egér/cellaformázás/bal oldalt egyéni/jobb oldalt meg a Formátumkód-hoz beírod ezt (00) és leokézod. mindez KÉPEN
Ezzel a módszerrel számként szerepelnek, nem szövegként, azaz tudsz velük számolási műveleteket is végezni, annak ellenére, hogy megjelenésében (01), (02) stb lesznek.
Fire.
-
Hali!
Átlehet, csak ahhoz a Windows API függvények behívására lesz szükség, ami nem biztos hogy teljesen érthető lesz...[link]
Nem csak igen és nem gomb létezik, illetve megerősítés/figyelmeztető ikon is megjeleníthető a msgbox-on stb, ezek kombinációjával mindent meg lehet végül is oldani, amire a gyári gombfeliratokkal lehet válaszolni...De Te tudod...[link]
Fire.
-
-
-
-
-
-
válasz
zsotesz81
#8456
üzenetére
Hali!
Ebből a kódból az alábbi részből meríthetsz ihletet
On Error Resume Next
Set My_Sheet = Sheets(My_Sheet_Name)
On Error GoTo 0
If Not My_Sheet Is Nothing Then
My_Sheet.Delete
End IfEz létező munkalap esetén törli azt, egy kis átalakítással neked is megfelelhet, de ez függ a programod felépítésétől.
Másik alapmódszer az szokott lenni, hogy egy ciklussal végigmész a munkalapokon, a cikluson belül megvizsgálod a nevét, ha megegyezik, akkor valamilyen változót magasra állítasz és kilépsz a ciklusból. Ezt követően megvizsgálod azt a bizonyos változót, éa feltételnek megfelelően kihagysz programrészt.
Fire.
-
-
válasz
jobbacsabba
#8429
üzenetére
Hali!
Nem teljesen.
Az a megoldás, amit Te választottál, az globális, nem csak az Excel-t érinti/érintheti. Pl egy számlázó-progi(vagy bármi egyéb), ami adatbázishoz van kapcsolva lehet, hogy innentől szintén ponttal fogja elválasztani az értékeket a számlán. Ha Excel-en belül állítod, akkor az csak az Excel-t érinti...Fire.
-
válasz
jobbacsabba
#8426
üzenetére
Hali!
Magában a programban nem megoldható? Nincs ilyen beállítása a programnak, ami exportálja az adatpárokat?
(Excel-ben is állítható, hogy milyen tizedes-elválasztót használjon, csak az kihatással lesz más excel munkafüzetekre is. Szóval ha van olyan táblád, ahol meg a vessző az elválasztó, akkor arra kihatással lesz)Fire.
-
válasz
jobbacsabba
#8424
üzenetére
Hali!
Hát több oka is lehet, de tipikusan akkor van ez a jelenség, amikor számok kerülnek a cellába és nem az alapértelmezett tizedeselválasztó karaktert alkalmazzák. Magyar OS alatt a vessző karakter az alapértelmezett, ebben az esetben az 1,23 az 1,23 lesz, de ha a progi figyelmen kívül hagyja az alapértelmezett tizedeselválasztó karaktert és pl pontot használ, akkor az 1.23 az január 23 lesz...
Fire.
-
Hali!
Bocs, de ma ilyen ufótevékenység van felénk, a PH! elég furcsán viselkedett nálam, ehhez még hozzájött a netszolgáltatóm "remekelése" és már kész is a roppant értelmes hsz.

Na szóval, pl így
.SentOnBehalfOfName = Range("F2")
A másik kérdésedre passz...Annyit tehetsz, hogy nem az értékét(value) tulajdonságát módosítod, hanem a Text tulajdonságát.
Fire.
-
-
-
válasz
Fire/SOUL/CD
#8406
üzenetére
Bocsesz ezen átsiklottam: "Így szeretném használni: (az első sor columnid_1-edik oszlopába szeretnék állni, vagy ha nem akkor az I1-be)"
If columnid_1 <> 0 Then Cells(1, columnid_1).Select Else Range("I1").Select
Fire.
-
válasz
m.zmrzlina
#8405
üzenetére
Hali!
"Ez a sor a Case szerkezet egyik ága ezért nem evidens hogy a columnid_1-nek 0-tól különbözik az értéke. Simán lehet 0 ezért kell ezt az esetet kezelni."
Ez a korábbi hsz-odból, meg ebből a kódból sem derül ki, mert a ActiveCell.Column sosem ad vissza nullát.
Gondolom a változók nullázásáról a kód más részén gondoskodsz.Ebből a kódból azt feltételezem, hogy az lenne a feladat, hogy az első oszloptól, az activecell oszlopáig az összes oszlopot kijelöld. Ha jól feltételezem, akkor azt így lehet megoldani
Range(Columns(1), Columns(ActiveCell.Column)).SelectFire.
-
válasz
m.zmrzlina
#8403
üzenetére
Hali!
1. Az a feltétel értelmetlen, mivel mindig igaz lesz. Azért, mert a sor- és oszlop indexek 1-től kezdődnek.
2. Nem tudom pontosan mit szeretnél megoldani, de ez így teljesen rossz próbálkozás Range(1, columnid_1).Select
Fire.
UI: Nálam nem működik a programkód gomb jelenleg, sőt a smiley-k sem...:-(
Szerk.
Újra szerkesztve már megy...
-
válasz
m.zmrzlina
#8401
üzenetére
Hali!
Igen.
Fire.
-
-
-
válasz
fjanszi123
#8374
üzenetére
-
válasz
m.zmrzlina
#8365
üzenetére
Hali!
Delila_1 megoldása tökéletes alapot nyújt a kivitelezéshez. Annyit kell tenned, hogy a táblázat struktúráját módosítod (az egy adott másodperchez tartozó értékek egymás mellé kerüljenek külön oszlopba, mert most egymás alatt új sorban vannak) illetve ennek megfelelően a feltételes formázást.

Fire.
-
válasz
m.zmrzlina
#8356
üzenetére
Hali!
Cellában
=KÖZÉP(A1;3;1)Makróban
Valtozo = Mid(Range("A1"), 3, 1)(melyik cella, hányadik karakterétől, hány karaktert)
Fire.
-
válasz
Fire/SOUL/CD
#8352
üzenetére
Hali!
Private Sub CommandButton1_Click()
Dim My_Sheet As Worksheet
Dim My_Sheet_Name As String
Dim My_Range As Range
Dim My_Column As String
'Oszlop, amelyikben szállítólevélszámok vannak
'(Ugyanebben az oszlopban lesznek majd, az új munkalapon is)
My_Column = "D"
'Az első adat az oszlopban
My_Row = 2
'A létrehozandó, összesítő munkalap neve
My_Sheet_Name = "FSCD_Összesítés"
Application.DisplayAlerts = False
On Error Resume Next
Set My_Sheet = Sheets(My_Sheet_Name)
On Error GoTo 0
If Not My_Sheet Is Nothing Then
My_Sheet.Delete
End If
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = My_Sheet_Name
k = 0
For i = 1 To Worksheets.Count - 1
Worksheets(i).Select
Worksheets(i).Range(My_Column & My_Row).Select
Set My_Range = Worksheets(i).Range(My_Column & My_Row & ":" & My_Column & Worksheets(i).UsedRange.Rows(Worksheets(i).UsedRange.Rows.Count).Row)
My_Range.Select
For Each CurrCell In My_Range
Worksheets(My_Sheet_Name).Range(My_Column & 1 + k) = CurrCell.Value
k = k + 1
Next CurrCell
Set My_Range = Nothing
Next i
Worksheets(My_Sheet_Name).Select
Set My_Sheet = Nothing
Application.DisplayAlerts = True
End SubFire.
[ Módosította: Ndruu ]
-
válasz
Charlie Gordon
#8351
üzenetére
Hali!
Igen, azért.
Mindjárt módosítom a kódot.Fire.
-
válasz
Charlie Gordon
#8349
üzenetére
Hali!
Oksa, akkor
1. Készíts másolatot az excel fájlról, biztos ami biztos
2. Nyisd meg és az első munkalapra tegyél egy CommandButtont
3. Kattints rá duplán, a megjelenő ablakban törölj mindent és illeszd be az alábbi kódotPrivate Sub CommandButton1_Click()
Dim My_Sheet As Worksheet
Dim My_Sheet_Name As String
Dim My_Range As Range
Dim My_Column As String
'Oszlop, amelyikben szállítólevélszámok vannak
'(Ugyanebben az oszlopban lesznek majd, az új munkalapon is)
My_Column = "D"
'A létrehozandó, összesítő munkalap neve
My_Sheet_Name = "FSCD_Összesítés"
Application.DisplayAlerts = False
On Error Resume Next
Set My_Sheet = Sheets(My_Sheet_Name)
On Error GoTo 0
If Not My_Sheet Is Nothing Then
My_Sheet.Delete
End If
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = My_Sheet_Name
k = 1
For i = 1 To Worksheets.Count - 1
Worksheets(i).Select
Worksheets(i).Range(My_Column & "1").Select
Set My_Range = Worksheets(i).Range(My_Column & "1:" & My_Column & Worksheets(i).UsedRange.Rows.Count)
My_Range.Select
For Each CurrCell In My_Range
Worksheets(My_Sheet_Name).Range(My_Column & k) = CurrCell.Value
k = k + 1
Next CurrCell
Set My_Range = Nothing
Next i
Worksheets(My_Sheet_Name).Select
Set My_Sheet = Nothing
Application.DisplayAlerts = True
End Sub4. kattints a CommandButtonra
Ez a makró létrehoz a munkalapok legvégén egy új munkalapot, abba másolja az adatokat.
Fire.
-
válasz
Charlie Gordon
#8347
üzenetére
hali!
Van olyan munkalap, ami nem terméket tartalmaz, amit nem kell figyelembe venni?
Magyarul létrehozok egy munkalapot, végignézhetem az összes munkalapot,a D oszlop adatait összesíthetem?Ha vannak olyan munkalapok, amelyeket ki kell hagyni, akkor a pontos nevüket kérném...
Fire.
-
válasz
Charlie Gordon
#8344
üzenetére
Hali!
oksa, így érthető. Még annyi lenne a kérdésem, hogy az összesítő táblázatban, a termékekről milyen adatok kerüljenek bele és azok az adott munkalapon belül hol vannak, melyik cellá(k)ban?
(Ha minden D oszlopt "összesítünk", akkor csak számok lesznek, de hogy azok melyik munkalapon szerepeltek (melyik termékhez kötődve) az úgy nem fog kiderülni)Erre gondolok pl
Alma munkalap, D oszlop -> 1,3,5,7,9
Körte munkalap D oszlop -> 2,4,6,8Ha összesítjük a D oszlopot valahol (és csak azt) akkor azt kapod, hogy 1,2,3,4,5,6,7,8 de evvel nem sokra mész (szerintem)
Fire.
-
válasz
Charlie Gordon
#8342
üzenetére
Hali!
Nem értem a kérdést...
Pl Munkalapok -> alma, barack, körte stb
Minden munkalap D oszlopában szállítólevélszám
Ha ez így van, akkor mindegyik munkalap (alma, barack, körte stb) teljes D oszlopa eleget tesz a kérdésednek..."Össze kell hozni (esetleg egy új munkalapon) az
összes szállítólevélszámot, amelyeken ez a termékcsoport szerepelt."Mit értettem rosszul?
Fire.
-
-
Hali!
Hmm, érdekes gondolat...
Hát az egész excel ablakot nem tudom, hogy elrejteni de a worbook-ot így igen (nem elrejtjük, minimize-re állítjuk)Megnyitáskor így indíthatod a Formot
Private Sub Workbook_Open()
UserForm1.Show vbModal
End SubEz pedig a UserForm események, az előbbi amikor megnyílik a form, az utóbbi meg amikor bezáródik
Private Sub UserForm_Activate()
On Error Resume Next
With GetObject(, "Excel.Application")
.ActiveWindow.WindowState = xlMinimized
End With
End Sub
Private Sub UserForm_Terminate()
On Error Resume Next
With GetObject(, "Excel.Application")
.ActiveWindow.WindowState = xlMaximized
End WithFire.
-
válasz
scott_free
#8337
üzenetére
Hali!
Használj pl ComboBox-ot, ott megoldható, igaz ez esetben az érték "kinyeréséhez" makró kell...[link]
Fire.
-
-
-
-
Hali!
A példa kedvéért A1 : A100 tartományban vannak a linkek. Készítünk egy GetURL függvényt (ALT+F11/Insert menu/Module) a megjelenő ablakba illeszd be ez a kódot
Function GetURL(My_Range As Range) As String
If My_Range.Hyperlinks.Count > 0 Then
GetURL = My_Range.Hyperlinks(1).Address
Else: GetURL = My_Range
End If
End FunctionEzt követően B1 cellába meg írd be =GetURL(A1) , majd másold le ameddig szükséges.
Fire.
-
Hali!
Hát ebből a megfogalmazásból megint 2 dologra tudok gondolni
1. "A Link szó valóban egy link, és amire mutat, azt szeretném megjeleníteni."
Tehát ha a link egy pl képre mutat, akkor a képet akarod beillszteni a cellába?2. "Tehát a tényleges linket egyik cella sem tartalmazza csak maga a "Link" hivatkozása."
Ezek szerint meg az a cél, hogy a korábbi Link feliratú hiperhivatkozás megszűnjön létezni és helyette(ugyanabban a cellában) csak sima szövegként jelenjen meg a hiperhivatkozás címe?
(pl egy kép hiperhivatkozása van ott és csak a LINK felirat látszik, ezt kell lecserélni egy sima szöveggé, amire a hiperhivatkozás hivatkozott korábban pl http://www.valami.hu/kep1.jpg)Fire.
-
-
Hali!
Ma nehéz a felfogásom...

Dobj be 2 képet a cellákról, az elsőt hogy most milyen, a másodikat meg hogy ilyenre, akkor meg fogom érteni és módosítom a makrót...
Fire.
UI: Most is sejtem, mit szeretnél, csak a megerősítés jó lenne, mert nem akarom 5x átírni a makrót...

-
válasz
Fire/SOUL/CD
#8267
üzenetére
Hali!
Na még1x, szóval ha így néz ki a dolog és abból ilyet szeretnél készíteni, akkor ez a makró megfelel. A makró kód elején add meg, hogy melyik munkalap, melyik oszlopában vannak a linkek. Itt a példában a Munka1 lap A oszlopában vannak a linkek.
Fontos
Először legyen egy másolatod a kívánt munkafüzetről, mert ha mégsem azt csinálná a makró, amit szerettél volna, akkor nem lehet használni az undo parancsot...Private Sub CommandButton1_Click()
Dim SrcSheet As Object
Dim My_Range As Range
My_Sheet = "Munka1" 'Itt megadod, hogy melyik munkalapon van az oszlop
My_Column = "A" 'Itt megadod, hogy melyik oszlopban vannak a linkek
Set SrcSheet = ThisWorkbook.Sheets(My_Sheet)
Set My_Range = SrcSheet.Range(My_Column & "1:" & Range(My_Column & "1").End(xlDown).Address)
Application.ScreenUpdating = False
SrcSheet.Select
On Error Resume Next
For Each CurrCell In My_Range
CurrCell.Hyperlinks(1).TextToDisplay = CurrCell.Hyperlinks(1).Address
Next CurrCell
Set My_Range = Nothing
Set SrcSheet = Nothing
Application.ScreenUpdating = True
End SubFire.
-
-
-
-
Hali!
Pont úgy ahogy leírtad, azaz a cellába beszúrsz egy hiperhivatkozást amiben megadod(be lehet tallózni) a kívánt fájlt. Ilyenkor a cellára víve a kurzort linkként fog viselkedni(megváltozik az egérkurzor is) és ha rákattintasz, akkor megnyitja a fájlt pl egy másik XLS-t.
Remélem erre gondoltál, nem pedig pl külső hivatkozás adatforrásra...
Fire.
-
Hali!
Kép perfrag linkjéről
Kód
Sub YesNoMessageBox()
Dim Answer As String
Dim MyNote As String
'Place your text here
MyNote = "Do you agree?"
'Display MessageBox
Answer = MsgBox(MyNote, vbQuestion + vbYesNo, "???")
If Answer = vbNo Then
'Code for No button Press
MsgBox "You pressed NO!"
Else
'Code for Yes button Press
MsgBox "You pressed Yes!"
End If
End SubFire.
-
válasz
lackatwo
#8171
üzenetére
Hali!
A DIR-ben teljes útvonalat is megadhatsz, pl ez kilistázza az összes fájlt abból a könyvtárból, ahonnan az excel fájl meg lett nyitva
Private Sub CommandButton1_Click()
Fname = Dir(ThisWorkbook.Path & "\*.*")
Do While Len(Fname) > 0
MsgBox (Fname)
Fname = Dir()
Loop
End SubFire.
-
-
válasz
m.zmrzlina
#8163
üzenetére
Hali!
Akkor itt egy képlet, aminek "mindegy" hogy milyen a területi beállítás(minden olyan területi beállítás jó, amiben pont vagy vessző a tizedeselválasztó) illetve az is, hogy a cellában ponttal avagy vesszővel elválasztva szerepel a százalék. pl 12:34 (12.34 %) avagy 12:34 (12,34 %)
(Ha valaki nem pontot vagy vesszőt használ, akkor meg #ÉRTÉK hibát dob)=HA(HIBÁS(ÉRTÉK(HELYETTE(KÖZÉP(A1;SZÖVEG.KERES("(";A1)+1;SZÖVEG.KERES("%";A1)-SZÖVEG.KERES("(";A1)-2);".";",")));ÉRTÉK(HELYETTE(KÖZÉP(A1;SZÖVEG.KERES("(";A1)+1;SZÖVEG.KERES("%";A1)-SZÖVEG.KERES("(";A1)-2);",";"."));ÉRTÉK(HELYETTE(KÖZÉP(A1;SZÖVEG.KERES("(";A1)+1;SZÖVEG.KERES("%";A1)-SZÖVEG.KERES("(";A1)-2);".";",")))
Fire.
UI: Makrónál az lehet "gond", hogy ott meg minden usernél engedélyezni kell a makrók futtatását az Excel beállításokban illetve a munkafüzet megnyitásakor is rákérdez(het)...
-
válasz
m.zmrzlina
#8160
üzenetére
Hali!
Átírtam a már majdnem jó megoldásod, itt A1-ben van a 12:34 (12.34 %)
=HELYETTE(KÖZÉP(A1;SZÖVEG.KERES("(";A1)+1;SZÖVEG.KERES("%";A1)-SZÖVEG.KERES("(";A1)-2);".";",")*1
Az egyetlen fontos dolog, hogy a százalékos értéknek minden cellában egy szóköz és % jel kövesse, tehát ahogy a példádban is van:
12:34 (12.34szóközszázalék)Fire.
-
válasz
m.zmrzlina
#8158
üzenetére
Hali!
"Csak mert nagyon nem így van."
Nem is írtam, épp azt írtam, hogy ha az egy cella tartalma, akkor az szöveg.
A cella tartalmát fel lehet dolgozni, adott esetben makró nélkül is, persze ehhez tisztában kell lenni, hogy azok a cellák milyen tartalmakat vehetnek fel. Pl példádnál maradva12:34 (12.34 %)
34:56 (34.56 %)
123:456 (56.78 %)Ebben az esetben a százalék értékek makró nélkül is kiszedhetőek és számmá alakíthatóak (százalékká is)
Ha ennél változatosabbak a cellatartalmak, nem ennyire kötöttek, akkor makró(de akkor sem biztos, csak tudni kellene, hogy mégis milyen tartalmak vannak a cellában)Szerk
Akkor inkább azt kérném, hogy pár cellatartalmat adj meg, meg azt, hogy mit szeretnél csinálni(nem képlet érdekel, hanem feladatleírás). Így látnám mi a probléma...Fire.
UI: Mellesleg ha kijelölnéd az összes ilyen cellát és egy sima csere segítségével lecserélnéd a pontot vesszőre már az is megoldást jelenthetne...
-
válasz
m.zmrzlina
#8156
üzenetére
Hali!
Az hogy az Excel a területi beállításoknak megfelelő karakterrel válassza el a tizedesjegyeket, az a számolási műveleteket nem befolyásolja. Teljesen mindegy hogy 2,00-t avagy 2.00-át szorzol össze 2-vel, az attól még 4 lesz, teljesen lényegtelen, hogy ezt az eredményt 4,00 avagy 4.00-ként jeleníti meg az excel.
Szóval csak ez miatt nincs szükség semmilyen beavatkozásra.
Az a példa, amit írtál az nem szám formátumú 63:37 (21.3 %) (már ha jól értem és ez egy cella tartalma) ergó nincs mit kezdeni a területi beállításokkal.
Fire.
-
-
-
válasz
scott_free
#8117
üzenetére
Hali!
Ja, akkor ilyen egyszerűen, D1-be írd be ezt
=HA(C1="A";A1;B1)Persze ha szükséges, még megvizsgálható, hogy ha nem A van C1-ben akkor B van-e és ha nem A vagy B, akkor lehet kiírni valami, pl
=HA(C1="A";A1;HA(C1="B";B1;"Nem A és nem B szerepel C1-ben"))F oszlopazonosítón jobb egér/Kivágás majd jobb egér azon az oszlopazonosítón ami elé szeretnéd beszúrni és Kivágott cellák beszúrása.
Fire.
-
válasz
scott_free
#8115
üzenetére
Hali!
Makróban Range("C1"), hagyományosan meg pl a D1 cellába =C1 & " oszlop" (bár ennek amúgy nem nagy értelme vagyon)
Cellába beírt függvények kötelezően egyenlőségjellel kell hogy kezdődjenek.Fire.
-
válasz
bnorci71
#8110
üzenetére
Hali!
Kijelölöd a (képed alapján) A2 : AI14 cellákat, aztán Adatok/Sorbarendezés. Itt lesz olyan hogy Rendezze és Majd, ennek segítségével megadhatsz több oszlopot rendezési szempontnak. Esetedben elsődlegesnek a pontszám oszlopát, másodlagosnak meg a gólkülönbséget.
Végül is lehet elválasztani az eredményt, de itt talán nem célszerű, hisz 2 cellából könnyebb kiszámoltatni a gólkülönbséget például...
Arra gondolok, hogy (megint csak a képed alapján) az AH2 cellába beírod ezt a képletet és lemásolod ameddig kell.=HA(B2>C2;B2-C2;C2-B2)
Fire.
-
válasz
Delila_1
#8107
üzenetére
Hali!
Mármint a Címjegyzékre vagy a Fiókokra érted?

Csak azért kérdem, mert a héten 2 emberkének is ilyen gondja volt, mindkét esetben egy szépséges kártevőt sikerült beszerezni...![;]](//cdn.rios.hu/dl/s/v1.gif)
(Mindkét gépet újratelepítettem, formázás után, remélem nálad nem ez lesz a szitu....
)Fire.
-
válasz
zsotesz81
#8100
üzenetére
Hali!
Ez egy kicsit hosszabb kód, de azért írtam így, hogy más "technikát" is láss benne, amit a későbbiekben tudsz hasznosítani esetleg...
Private Sub CommandButton1_Click()
Dim SrcSheet As Object
Dim DestSheet As Object
Dim My_Range As Range
Set SrcSheet = ThisWorkbook.Sheets("Munka1")
Set DestSheet = ThisWorkbook.Sheets("Munka2")
Set My_Range = SrcSheet.Range("A1:" & Range("A1").End(xlDown).Address)
SrcSheet.Select
My_Range.Select
DestSheet.Select
DestSheet.Range("A1").Select
For Each CurrCell In My_Range
If IsNumeric(CurrCell.Value) Then
ActiveCell = CurrCell.Value
ActiveCell.Offset(0, 1).Select
End If
Next CurrCell
SrcSheet.Select
Set My_Range = Nothing
Set SrcSheet = Nothing
Set DestSheet = Nothing
End SubFire.
-
válasz
zsotesz81
#8097
üzenetére
Hali!
Ja hogy így szám meg szöveg(amúgy jó randa minőségű lett az a kép)...

A feladat, hogy végigszaladsz a B oszlop celláin(az utolsó használtig, ez már gondolom menni fog) és egyenként megvizsgálod, hogy szám avagy nem szám, a cella tartalma. Ha az átmásolod, ha nem, akkor a következő cellát vizsgálod. Így lehet egyszerűen eldönteni hogy szám avagy nem pl:
If IsNumeric(Range("A1")) = True Then
MsgBox ("Szám")
Else: MsgBox ("Nem szám")
End IfSzerk
Közben látom javult a képminőség...![;]](//cdn.rios.hu/dl/s/v1.gif)
Fire.
-
válasz
zsotesz81
#8091
üzenetére
Hali!
Ha egy példával illusztrálnád, hogy pontosan mi is van egy cellában(ami szöveget, számot stb tartalmaz), akkor könnyebb lenne segíteni és adott esetben makró sem kellene hozzá...
![;]](//cdn.rios.hu/dl/s/v1.gif)
pl
123-abc-jenő
321-cba-őnejstb stb vagy ha változó tartalmúak, akkor meg arról pár példát dobj be...
Fire.
-
-
-
-
Új hozzászólás Aktív témák
- Androidos tablet topic
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Milyen okostelefont vegyek?
- Home server / házi szerver építése
- sziku69: Szólánc.
- Vicces képek
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Filmvilág
- Ilyen olcsó sem volt még egy Apple notebook
- További aktív témák...
- Fallout 4 Pip-Boy Edition eladó
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Windows 10/11 Home/Pro , Office 2024 kulcsok
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- HIBÁTLAN iPhone 15 Plus 256GB-1 ÉV GARANCIA - Kártyafüggetlen, MS4529
- iKing.hu Apple iPhone 12 Pro Max 128GB Gold használt, megkímélt 100% akku 6 hónap garancia
- HIBÁTLAN iPhone 14 Plus 256GB Red -1 ÉV GARANCIA - Kártyafüggetlen, MS4561, 100% Akksi
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- iking.hu Apple iPhone 15 128GB Blue használt, karcmentes 86% akku 6 hónap garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


![;]](http://cdn.rios.hu/dl/s/v1.gif)
Egyetlen megjegyzés hozzá, hogy valószínűleg kimaradt egy sor a kód elejéről, ez 




Fferi50