- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- Atomenergiával dübörögnek tovább az Amazon adatközpontok, SMR-ek is jöhetnek
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Az NVIDIA ipari AI-felhőt épít a németeknek, együtt az OpenAI és a Google
- Két új Ryzen közül választhatnak a kézikonzolok
-
PROHARDVER!
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
-
Wyll
őstag
válasz
sedyke #25197 üzenetére
Szerintem itt ez a cikk elég jól körüljárja a
"Hogyan számoljuk meg excel-ben az egyedi értékek számát"
témát. Több módszert is mutat. Üres cellák figyelembevétele vagy nem vétele is benne van. Példamunkafüzet, videó is van. Hasonló slashing megoldásához is. -
gdodi
csendes tag
Sziasztok!
Hogy lehet sorokat áthelyezni makróval egy munkalapról a másikra, ha a sorok száma egy változótól függ? Pl.:
Sub Makró1()
' Makró1 Makró
Rows("1:4").Select
Selection.Copy
Sheets("Munka2").Select
ActiveSheet.Paste
Sheets("Munka1").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Range("A1").Select
End Sub
Itt a 4 sor helyett egy változót (esetleg 2-t is, sortól sorig) szeretnék használni, de nem tudom megoldani. Az áthelyezést is csak úgy tudnám megoldani, hogy másolok, majd törlöm az eredetit. Nyilván van sokkal egyszerűbb megoldás.
Előre is köszönöm a segítséget! -
sedyke
tag
Sziasztok! Van egy táblázatom rendelésekről. A rendelés száma oszlopban vannak ismétlődések, melyekre továbbra is szükségem lenne más célból. Kérdésem az lenne, hogyan milyen függvénnyel tudnám megszámolni a rendelések darabszámát úgy, hogy az ismétlődő értékeket csak egyszer számolja.
Segítségeteket előre is köszönöm! -
Fferi50
Topikgazda
válasz
katka84 #25194 üzenetére
Szia!
Nem feltétlenül kell makró hozzá, de a Visual Basic nézetben (Alt+F11) tudod megcsinálni. Keresd meg az immediate ablakot (ha nem látod akkor Ctrl+G). Ebbe az ablakba írd be:
Sheets("Munkalapneve").visible =xlSheetVeryHiddenEnnek az a hatása, hogy mások elől abszolute rejtve marad a munkalap, nem jön elő a jobb egérgombos rákattintásnál levő listában sem.
Viszont Te sem látod, Ahhoz, hogy dolgozni tudj vele, ezt a sort kell ugyanide beírni:
Sheets("Munkalapneve").visible=xlSheetVisibleTermészetesen a két fenti sor elhelyezhető makróban is (pl. a munkafüzet megnyitásakor vagy bezárásakor lefutó makróban), vagy csak külön is, amit akkor indítasz el, amikor szükséged van rá.
(A Sheets("Munkalapneve") helyett írhatod az activesheet kifejezést is az elrejtős sorba - ekkor mindig az éppen aktív munkalapot rejti el.
Visszafelé ez ugye nem működik, hiszen a rejtett munkalap nem lesz aktív láthatóan.)Üdv.
-
Wyll
őstag
válasz
katka84 #25193 üzenetére
Nem feltétlen kell hozzá makró.
Elrejtheted a lapot, majd utána levéded a munkafüzet szerkezetét, amihez lehet jelszót is rendelni:Ekkor viszont nagyon meg kell jegyezned a jelszót.
Ha makrót írsz, akkor a makróban benne lehet maga a jelszó, így nem feltétlen kell megjegyezni, az persze más kérdés, hogy ez mennyire biztonságos... -
katka84
csendes tag
Közben már megoldottam a problémámat.
De azért szívesen fogadnék ötleteket, hogy miként tudnám ezt a dolgot megtanulni. Pl. vmi jó anyagot a makrókról. -
katka84
csendes tag
Sziasztok!
Abban kérném a segítségeteket, hogy szeretnék egy teljes lapot úgy elrejteni a kíváncsiskodók elől, hogy csak jelszóval lehessen megjeleníteni.
Gondolom, hogy vmi makrót kellene kreálnom hozzá, de ebben sajna nincs nagy gyakorlatom és igen sürget az idő.
De azt megígérhetem, h utólag megtanulom a dolgot.Előre is köszönöm szépen a segítséget.
-
Delila_1
veterán
válasz
marcyman #25187 üzenetére
Készíts kimutatást a kép szerint. Az összegző mezőkben látszólag napi összeget ír, de az valójában napi átlag, mint a jobb oldali mezőlista tábla jobb alsó sorában látszik.
Érdemes előtte táblázattá alakítani az adataidat, akkor a kimutatás mindig a friss adatokkal számol.
A dátum legördülőben kiválaszthatod az aktuális dátumot. -
-
marcyman
aktív tag
Sziasztok,
Van egy összetett feladat, amit szeretnék valahogy egyszerűbbé tenni bármilyen módon (akár automatizálni):
Adott egy oszlop, amiben dátumok vannak, adott egy amelyikben betűk/számok vegyesen nevezzük őt beszállítóknak, adott egy amelyben számok (eredmények) és adott egy üres.
Azt csinálom, hogy szűrővel rászűrök csak a mai napra a dátumos oszlopban, majd szintén szűrővel az első beszállítóra. Tegyük fel, hogy ennek a beszállítónak a mai napon volt 10 szállítmánya, ez jelent 10 különböző eredményt az eredmények oszlopban. A feladatom az, hogy veszem a 10 eredmény átlagát és beírom az üres oszlopba az összes üres cellába, a kiválasztott beszállító mai napi eredményei mellé. Tehát minden eredmény mellett ott lesz az összes eredmény mai napi átlaga.
Ezután lépek egy beszállítót a szűrőben, és megcsinálom újra ugyanezt amíg végig nem érek a mai nappal.
Pl. négy darab sor végül így néz ki:
Dátum (2015.01.27) - beszállító1 - eredmény1 - kizárólag a mai napi beszállító1 eredményeinek az átlaga
Dátum (2015.01.27) - beszállító1 - eredmény2 - kizárólag a mai napi beszállító1 eredményeinek az átlaga
Dátum (2015.01.27) - beszállító2 - eredmény3 - kizárólag a mai napi beszállító2 eredményeinek az átlaga
Dátum (2015.01.27) - beszállító2 - eredmény4 - kizárólag a mai napi beszállító2 eredményeinek az átlagaés így tovább, persze néha egy beszállítóhoz több eredmény van, a másikhoz kevesebb, változó.
Ha nem érthető szóljatok, küldök róla képet.
Erre tudna valaki bármilyen gyorsabb, esetleg automatikus megoldást?
-
gyga
senior tag
törölve
-
gyga
senior tag
Üdv.
Van e arra lehetőség hogy Excelbe tegyem a Word állományt?
A következő a problem.
Adott egy számolós excel tábla. Ebből a táblából veszi át az adatokat egy word file. tehát így párban jó csak.
Arra gondoltam hogy a word filet integrálnám az execlbe.
Persze lehet szöveg dobozt betenni de az nem olyan mint a word, mert kell fejléc /lábléc tabulátorok. stb.
Szóval tudom e a word-öt beágyazni? -
bteebi
veterán
válasz
Fferi50 #25182 üzenetére
Szia!
Köszi az észrevételeket!
Az átzárójelezés elég buta hiba volt (igazából azt a részt érthetetlen módon nem ellenőriztem le, mondván, hogy az úgyis jó - mert ha nem lenne jó, akkor szólna az Excel
), ezt az eseménykezeléses dolgot viszont nem tudtam. Egyelőre nem működik tökéletesen, de majd futok vele még egy kört, hátha sikerül megreparálnom.
-
togyerl
csendes tag
Sziasztok a segítségeteket kérném, még kezdő vagyok excel téren, de azt szeretném megoldani hogy ha hyperlinket csinálok egy fájlhoz a munkafüzetben és utánna a fájl helye változik(elérési út) akkor nem találja a fájlt az excell, van e mód arra hogy a linkelt file -okat integrálja az excell fájlba, vagy ezt hogy lehet kiküszöbölni?
-
Fferi50
Topikgazda
válasz
bteebi #25180 üzenetére
Szia!
Egyrészt, ha eseménykezelést végzel, akkor ki kell kapcsolni az eseményeket:
Application.EnableEvents=False
majd a végén visszakapcsolod:
Application.EnableEvents=True
Ha nem így teszel, akkor jó esetben csak meghosszabodik a program futása, rossz esetben más cellákat is átír, nem csak azokat, amelyeket szeretnéd.Továbbá van két képlet benne, ami formailag ugyan helyes (nem kiabál érte a fordító), de teljesen blőd eredményt ad, rossz helyre került a záró zárójel:
If Sheets("proba").Cells(sor - 72, 5) < Sheets("proba").Range("S130") Or WorksheetFunction.IsNumber(Sheets("proba").Cells(sor - 72, 5)) = True
A Te kódodban a True után volt a zárójel, az előréb kell hozni az egyenlőség jel elé, ahogyan itt is látod.
Ugyanez van az oszlopos vizsgálatánál is, ott is az egyenlőség jel után kell a zárójel és nem a False után.
Üdv.
-
bteebi
veterán
Sziasztok!
Van egy viszonylag nagy táblázatom, és alatta ugyanaz, értékek nélkül. A felső táblázatban alapvetően számok vannak, de van néhány szöveges mező is. Fontos, hogy ezek a szöveges értékek ki legyenek szűrve. Az alsó táblázatba a felső táblázat adatait szeretném bizonyos szűrő feltételek mellett bemásolni. A szűrő feltétel az S130-as cellában lévő érték; ha attól nagyobb a cella értéke, akkor szűrésre kerül, a szűrt érték pedig "" (üres cella) lesz. A két táblázat formailag megegyezik, annyi, hogy 72 sornyi különbség van köztük.
Ehhez még nem kellett volna makró, de a szűrő bonyolódása után már nem tudtam megoldani egyszerű képlettel. Ha az első (5.) oszlopban lévő szám nagyobb lenne a szűrőnél, de a mellette lévő (6.) oszlopban a szűrés után is van érték, akkor annak kell az 5. oszlopba kerülnie. A többi oszlopnál (6-11.) pedig, ha az alapérték szűrésre kerül, de a mellette lévő szomszédos oszlopok értékei nem, akkor annak a két szomszédos oszlopnak az átlagát kellene beilleszteni.
Valószínűleg túl sok volt az argumentum, egyébként valami ilyesmi volt:
=HA(VAGY(F5>=$S$130;SZÁM(F5)=HAMIS);HA(ÉS(SZÁM(E5)=IGAZ;SZÁM(G5)=IGAZ);ÁTLAG(E5;G5);HA(SZÁM(F5)=IGAZ;HA(F5<$S$130;F5;"");"")))
Kicsit talán nehezen érthető a probléma, ezért feltettem egy képet:
Tegyük fel, hogy a szűrő értéke 100, tehát az ennél nagyobb értékeket szeretném kiszűrni. Ebben az esetben a B2-es cella értéke ki lenne szűrve - a mellette, a C2-es cellában lévő szám azonban nem, ezért a C2 értékét kellene lemásolni 72 cellával lentebbre. A D3-as cella viszont üres, de a mellette lévők (C3 és E3), ezért a szűrés során a C3 és E3 átlagát kellene továbbvinni.
Írtam rá egy makrót, de valamiért nem csinál semmit, pedig lefut. A makró a "proba" nevű laphoz van rendelve.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor As Integer, oszlop As Integer
If Target.Address = "$S$130" Then
For sor = 77 To 139
If Sheets("proba").Cells(sor - 72, 5) < Sheets("proba").Range("S130") Or WorksheetFunction.IsNumber(Sheets("proba").Cells(sor - 72, 5) = True) Then
Sheets("proba").Cells(sor, 5) = Sheets("proba").Cells(sor - 72, 5)
ElseIf WorksheetFunction.IsNumber(Sheets("proba").Cells(sor - 72, 5) = False) Then
If WorksheetFunction.IsNumber(Sheets("proba").Cells(sor - 72, 6) = True) Then
Sheets("proba").Cells(sor, 5) = Sheets("proba").Cells(sor - 72, 6)
Else: Sheets("proba").Cells(sor, 5) = ""
End If
End If
For oszlop = 6 To 11
If Sheets("proba").Cells(sor - 72, oszlop) >= Sheets("proba").Range("S130") Or WorksheetFunction.IsNumber(Sheets("proba").Cells(sor - 72, oszlop) = False) Then
If WorksheetFunction.IsNumber(Sheets("proba").Cells(sor - 72, oszlop - 1) = True) And WorksheetFunction.IsNumber(Sheets("proba").Cells(sor - 72, oszlop + 1) = True) Then
Sheets("proba").Cells(sor, oszlop) = WorksheetFunction.Average(Sheets("proba").Cells(sor - 72, oszlop - 1), Sheets("proba").Cells(sor - 72, oszlop + 1))
ElseIf Sheets("proba").Cells(sor - 72, oszlop) < Sheets("proba").Range("S130") And WorksheetFunction.IsNumber(Sheets("proba").Cells(sor - 72, oszlop) = True) Then
Sheets("proba").Cells(sor, oszlop) = Sheets("proba").Cells(sor - 72, oszlop)
Else: Cells(sor, oszlop) = ""
End If
End If
Next oszlop
Next sor
End If
End SubHol rontottam el? Előre is köszönöm a segítségeteket!
-
cellpeti
nagyúr
sziasztok
számokat szeretnék feltenni felső indexbe, de sehogy sem engedi az Excel? Mi ennek a módja? Próbáltam szám formátumként, és általánosba is. Tudtok segíteni?
-
gaborlajos
csendes tag
válasz
gaborlajos #25173 üzenetére
Köszönöm szépen, ez így működik.
Üdv:
-
Delila_1
veterán
válasz
gaborlajos #25173 üzenetére
Alkalmazás:
Beírod a 20 cég nevét, amit most nálam az I1:M1 tartomány képvisel. Elé, ahol most nálam a Kategóriák szöveg szerepel, beírod pl. hogy Cégek. Kijelölöd a H1:M1 tartományt, és ha 2003-asnál magasabb verziód van, akkor Képletek | Definiált nevek | Kijelölésből új, Bal oszlopból.
2003-nál és alatta a kijelölés után Beszúrás | Név | Létrehozás.Most beírod az első cég alá a hozzá tartozó emberek nevét. Ez lesz mondjuk az I1:I12 tartomány. Kijelölöd, nevet adsz neki, mint az előbb, csak most a Bal oszlopból helyett a Felső sorból opciót választod. Ezt megismétled a többi cégnél is.
Az első cella (a példa szerint A1) érvényesítése Lista, forrása a =Cégek. Itt rögtön válassz is ki egyet. A második (B1) szintén Lista, a forrása pedig =INDIREKT(A1).
A listáknak nem kell azonos lapon lenniük az érvényesítésekkel. Nálam most mindegyik kategóriában 7 adat van, de természetesen különböző hosszúságúak lehetnek.
-
torogyuri
aktív tag
Ha kijelölök több lapot és úgy kezdek el írni egy cellába ugye akkor az összes lapon abba a cellába ugyanaz a szöveg kerül. De úgy is meg lehet csinálni hogy csak azt másolja a többi cellába amit újonnan beleírok ne változtassa meg az egész cella tartalmát csak "hozzáfűzze"?
-
lappy
őstag
válasz
gaborlajos #25168 üzenetére
http://prohardver.hu/tema/excel/hsz_10160-10160.html
Itt is van egy leírás -
gaborlajos
csendes tag
Sziasztok!
Segítséget szeretnék kérni!
Van két legördülő listám, az egyikben cégnevek vannak, a másikban a cégek dolgozóinak neve. Az adatokat egy-egy oszlopból veszi. Hogyan lehet azt megoldani, hogy a cég kiválasztása után a dolgozók legördülő listában csak az adott cég dolgozói jelenjenek meg. Most úgy van, hogy a Cégek és a Cég dolgozói is ugyanazt a sorszámot kapták, így kiválogatni ki tudom, de a legördülő listában ott jelennek meg ahol az eredeti oszlopban voltak, tehát akár a legvégén is. Az szeretném elérni, hogy a legördülő lista elejére kerüljenek.Üdv:G.L.
-
zoli1962
csendes tag
Mindenkit Üdvözlök !
Amit leírok már láttam működni, de én nem tudtam megcsinálni.Segítségeteket kérem
A munka 1 munkalapja első sorába szűrőt alkalmazok. A szűrés után csak egy sor fog megfelelni a "feltételeknek" Aminek a SOR száma lehet akármennyi is.
Ezt a szúrés utáni sort egy új munkalapon mondjuk a munkalap2-n adott celláikban meg akarom jeleníteni. Tulajdonképpen egy jelentést csinálni /amit utánna például ki tudok nyomtatni/ -
allein
addikt
Üdvözlök mindenkit. Adott egy excel, ezenbelül 3 oszlopban, a, b és c oszlopokban adatok szerepelnek. El szeretném menteni másként, .csv-re. Miután elmenetettem és megnyitom a csv-t, lehet látni, hogy mégsem vesszővel vannak elválasztva. HIába töltöm fel a rendszerünkbe a csv-t, nem fogja beolvasni. Tracking számokat szeretném feltölteni partnereink részére. Mi az amit rosszul csinálok? OS X alatt próbálkozom egyébként.
Így kellene kinéznie:
-
KERO_SAN
aktív tag
válasz
Delila_1 #25107 üzenetére
Szia!
Elakadtam egy kicsit.
ALT+F11-el megnyitottam a VBA editort, a laphoz hozzárendeltem a kódot, beillesztettem egy üres modult, oda is bemásoltam az általad írt kódot, mentettem.
Viszont ha ALT+F8-al futtatni akarom a makrót, akkor egy sincs a listámban
És, ha kitöltök egy új sort a végéig, akkor sem történik semmi.
Mit ronthattam el ?
-
-
-
Fferi50
Topikgazda
Szia!
Hát persze hogy nem: =Kerekítés(Szum(E4:D4);-1)
(ha nem akarod, hogy ilyen szuper jelek jelenjenek meg, használd a programkód gombot)
A kerekítés második paramétere határozza meg, hogy hány számjegyre kerekítsen. A -1 azt jelenti, hogy tizesre kerekít a magyar szabályok szerint.
Üdv.
-
KO MA
újonc
Köszönöm
Próbálom -
KO MA
újonc
Sziasztok!
Regisztráltam mert kérdésem van. Használom az Excel-t költség táblázatokat készítek.
A problémám, hogy a beirt képletek eredményét szeretném kerekíteni, Pld. 252. forintot 250. forintra, vagy a szabály szerint a 256 forintra végződőt felfelé 260, forintra.Köszönöm a segítségeteket
-
Delila_1
veterán
válasz
Backrau #25139 üzenetére
Ebben az esetben a laphoz rendelendő makró
Private Sub Worksheet_Change(ByVal Target As Range)
If IsEmpty(Target) Then Exit Sub
If Target.Column = 2 Then
Application.EnableEvents = False
Cells(Target.Row + 1, 1).EntireRow.Insert
Cells(Target.Row + 1, 1) = Cells(Target.Row, 1)
Application.EnableEvents = True
End If
End Sub -
Backrau
aktív tag
válasz
Delila_1 #25138 üzenetére
Nem teljesen. Az A' oszlopban a dátumok vannak 2015.01.01-től 12.31-ig. A B' oszlopban pedig egy alkatrész típus számai. Az egész táblázat előre kialakított az egész évre. A lényeg, ha 2015.03.01-én történt egy hiba az adott alkatrésszel én beírom a B' oszlopba az alkatrész számát és töltöm ki tovább a sort. De ha mondjuk van az adott naptári napon még egy hiba, azt jelenleg nem tudom hova beírni, csak ha én kézileg hozzáadok egy sort. Magyarán azt szeretném, ha én beírok tegyük fel 2015.03.01-re egy hibát, akkor automatikusan hozzon létre egy új sort ugyanazzal a dátummal. (Esetleg, ha nem kerül semmi beírásra tűnjön el.) Ez azért lenne fontos, mert ez egy védett doksi lesz, és csak az engedélyezett cellákba lehet majd írni.
-
Delila_1
veterán
válasz
Backrau #25136 üzenetére
Úgy érted, hogy ha a B oszlopba beírsz valamit, akkor annak a sornak az A cellájában jelenjen meg az aktuális dátum?
Ha igen, rendeld a lapodhoz a nyúlfarknyi makrót.
Private Sub Worksheet_Change(ByVal Target As Range)
If IsEmpty(Target) Then Exit Sub
If Target.Column = 2 Then Cells(Target.Row, 1) = Date
End SubEzután makróbarátként kell mentened a füzetedet.
-
Backrau
aktív tag
Sziasztok,
lenne egy fontos kérdésem.
Jelenleg a cégnél Office 2010 van.
Szeretnék egy olyat csinálni, hogy...
Az "A" oszlopban dátumok vannak. A "B" oszlopban pedig egy típus jelölő cella.
Hogyan tudok olyat csinálni, hogy ha mondjuk a "B13"-as cellába beírok valamit, akkor megjelenik alatta egy új sor és az "A" oszlopban marad az aktuális dátum és a megjelenő új sor tudja az előtte lévő beállításokat.
Remélem meg lehet csinálni. Előre is köszönöm a segítséget.. -
Üdv. Kollégák Excel 2010-ben van panelrögzítésre valami billentyűkombináció? Google és MS nem segít ebben.
-
Fferi50
Topikgazda
válasz
Polllen #25132 üzenetére
Szia!
Akkor lenne igazad, ha csak egy munkalapot tartalmazhatna, de ez nem így van. (Az activesheet az egy darab munkalap, az activeworkbook szintén egy darab munkafüzet -- kiválasztott (selected) viszont több is lehet.)
A selectedsheets egy gyűjtemény, magában foglalja az összes kiválasztott munkalapot.
Idézet a help-ből:
"Window.SelectedSheets Property
Returns a Sheets collection that represents all the selected sheets in the specified window. Read-only."
Ha a művelet eredményét nem szeretnénk viszontlátni, akkor nem kell a konkrét munkalapot megnevezni, szép sorban megmutatja az összes kijelöltet.
De ha szükség van a nyomtatás megtörténtének információjára, akkor már konkrét munkalapra kell hivatkozni - hiszen lehet, hogy egyik munkalapot kinyomtatod, másokat pedig nem, akkor most mi legyen a logikai változó eredménye??Üdv.
-
Fferi50
Topikgazda
válasz
KaliJoe #25120 üzenetére
Szia!
Próbáld a következőt:
If activewindow.SelectedSheets("wsh_Ürlap").printpreview=true then
műveletek
endif
Ugyanis így adod meg a konkrét munkalapot.Ha több munkalap is ki van választva, akkor pedig
For each wsh in activewindow.selectedsheets
if wsh.printpreview=true then
műveletek
endif
next
Ezzel végigmész az összes munkalapon és megnézheted, hogy ki lett-e nyomtatva.Üdv.
-
Fferi50
Topikgazda
válasz
KaliJoe #25126 üzenetére
Szia!
A konstansnak (állandónak) pont az a lényege, hogy egyszer definiálod "direkt" módon az értékét és az soha de soha nem változhat meg a programban. Ezért nem lehet semmilyen változó tartalomhoz kötni a meghatározását, mert akkor már a konstans jelleg nem áll fenn. A makróba be kell "égetni" az értéket, csak úgy tudod változtatni, ha átírod a makróban ezt az értéket.
Ha tehát cella értékből akarod kivenni a "konstans" értékét, akkor azt csak változóba teheted bele, de ez a változó természetesen lehet az egész programra érvényes Global, vagy Public is és elég a program indulásakor értéket adni neki, többet nem kell vele foglalkoznod.
Nézz rá helpben a változók deklarálására.
Üdv.
-
Polllen
nagyúr
válasz
KaliJoe #25128 üzenetére
Szia,
az ActiveWindow.SelectedSheets.PrintPreview(wsh_Űrlap) így nem működik változó hibával, ahogy eredetileg is írtad. Mondjuk a SelectedSheets-nek elégnek kellene lennie a változó nélkül.
Viszont amit belinkeltem, az úgy működik, ahogy van, használtam többször is...A worksheets(xy) elég egyértelműen definiálja mire vonatkozik az utána következő PrintPreview...
If Worksheets(wsh_Urlap).PrintPreview = True Then vagy If Worksheets("Sheet1").PrintPreview = True Then -
KaliJoe
tag
válasz
Polllen #25127 üzenetére
Szia Pollen,
Ez biztos nem megoldás. Mivel a .PrintPreview súgójában benne van az a Variant változó aminek egy munkalapra kell mutatnia, és akkor kérhető ki az Igaz / Hamis érték... a súgó szerint. Egyébként a jelzett "hiányzó változó" hibaüzenettel reagál. De nyilván nem csinálok valamit jól, ha végül nem ez történik.
Ehhez kellene a segítség, h az történjen, mit gondolok :-) -
Polllen
nagyúr
válasz
KaliJoe #25126 üzenetére
Mindig ugyanazt a sheet-t akarod kinyomtatni?
Ez alapján, igen:
...
Dim wsh_Űrlap As Variant
wsh_Űrlap = Worksheets("Űrlap Nyomtatáshoz")
...
If ActiveWindow.SelectedSheets.PrintPreview(wsh_Űrlap) = True Then
Worksheets("Alapértékek").Select
ActiveSheet.Unprotect
Worksheets("Alapértékek").Cells(4, "J").Value = Worksheets("Űrlap Nyomtatáshoz").Cells(2, "M").Value + 1
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
...Próbáld meg ezt:
Dim wsh_Urlap As String
wsh_Urlap = "Űrlap Nyomtatáshoz"
...
If Worksheets(wsh_Urlap).PrintPreview = True Then
Worksheets("Alapértékek").Select
ActiveSheet.Unprotect
Worksheets("Alapértékek").Cells(4, "J").Value = Worksheets("Űrlap Nyomtatáshoz").Cells(2, "M").Value + 1
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End IfBár ha fix, változó sem kell.
-
KaliJoe
tag
válasz
Delila_1 #25121 üzenetére
Szia Delila_1,
Próbáltam... :-)
Üres makrót eredményez... a nyomtatás ablak előhívása nem vált ki programsor rögzítést, viszont ha elküldöm a nyomtatást, akkor egy egészen másik parancsot hoz. Nevezetesen ez:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
-
KaliJoe
tag
Sziasztok,
A tény: AZ egyik űrlapomon képeket használok, amelyeket a felhasználó viselkedésétől függően jelenítek meg. Ez jól működik is.
A kérdés: Az alábbiakban látható módon egy konstanst használok, hogy bárhol a modulban elérhető legyen a mappa bejárási útvonala. Viszont a konstanst nem engedi csak explicit módon megadni, nem lehet úgy, h egy Alapértékeket tartalmazó munkalap egy cellájában legyen.
Ti hogyan oldanátok meg?Const const_KépKönyvtár As String = "D:\CentrumNet WorldWide Kft\Programozás\Jelenléti ív\"
'Const const_KépKönyvtár As String = Worksheets("Alapértékek").Cells(7, 1) -
KaliJoe
tag
válasz
Polllen #25117 üzenetére
Szia Pollen és Delila_1,
Azt hiszem az irány jó, de makacsul dobja a hibaüzeneteket, arra hivatkozva, h definiáljak változót. Készítettem Variant típusút, értékét az aktuális munkalapra irányítottam... de az nem érdekli, csak követel...
...
Dim wsh_Űrlap As Variant
wsh_Űrlap = Worksheets("Űrlap Nyomtatáshoz")
...
If ActiveWindow.SelectedSheets.PrintPreview(wsh_Űrlap) = True Then
Worksheets("Alapértékek").Select
ActiveSheet.Unprotect
Worksheets("Alapértékek").Cells(4, "J").Value = Worksheets("Űrlap Nyomtatáshoz").Cells(2, "M").Value + 1
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
... -
KaliJoe
tag
Sziasztok,
Ki tudja, h milyen VBA sorral lehetne meghívni a "nyomtatási nézetet"... és aztán hagyni a felhasználót, h elmolyoljon (kvázi beállítsa a számára megfelelő nyomtatási paramétereket), és ha sikeres a nyomtatás akkor valahol a táblában lökjön egyet egy számlálón.
Ez az utolsó rész, miszerint hogy lökjön egyet a számlálón sima liba, de nekem most mindenképp lök rajta... ha a saját magam által készített (nem eredeti Excel) "Nyomtatás" feliratú gombját megnyomja. Emögött lévő makró utolsó sora elvégzi a számláló növelést, de függetlenül attól, h készült-e nyomat. -
koda013
újonc
válasz
pingvin baby #12867 üzenetére
Erre kaptál választ vagy megoldódott valahogy a probléma? Ugyanez a gondom és nem tudom, mi lenne a megoldás.. Köszi!
-
Jofi81
őstag
Egy kis segítségre lenne szükségem. Hogyan tudnám megszámolni, hogy egy tartományban hány sor, illetve hány oszlop tartalmaz egyest?
-
Delila_1
veterán
válasz
KERO_SAN #25105 üzenetére
Két makró kell hozzá. Az első figyeli a 18. oszlop kitöltését, majd indítja a másikat, ami a másolást végzi el. A laphoz rendeléshez, és a modulba tevéshez sok leírás van itt a fórumon.
Nem kell előre elkészíteni a 10 lapot, a makrók létrehozzák "1"-től "10"-ig névvel.Az alap táblázatot tartalmazó laphoz rendeld:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LapNev As String
If IsEmpty(Target) Then Exit Sub
If Target.Column = 18 Then
LapNev = Cells(Target.Row, 1)
Masolas Target.Row, LapNev
End If
End SubModulba helyezd:
Sub Masolas(sor, LapNev)
Dim a As Object, usor As Long
Dim ElsoLap As Worksheet
Set ElsoLap = Worksheets(ActiveSheet.Name)
On Error Resume Next
Set a = Sheets(LapNev)
If Err.Number <> 0 Then
Worksheets.Add.Name = LapNev
ElsoLap.Rows(1).Copy Sheets(LapNev).Range("A1")
End If
On Error GoTo 0
usor = Sheets(LapNev).Range("A" & Rows.Count).End(xlUp).Row + 1
ElsoLap.Rows(sor).Copy Sheets(LapNev).Range("A" & usor)
ElsoLap.Move Before:=Sheets(1)
End Sub -
Delila_1
veterán
válasz
KERO_SAN #25097 üzenetére
Még azt kellene tudni, hogy a 18. oszlop kötelezőn kitöltendő-e?
Ha igen, akkor ennek a kitöltéséhez lehet rendelni egy eseménykezelő makrót, ami a bevitel után azonnal automatikusan átmásolja a teljes sort a megfelelő lap első üres sorába.
Ha nem, akkor pl. egy gombot lehet kitenni az első lapra, amit minden sor teljes kitöltése után megnyomsz, vagy ez a gomb egyszerre szortírozza a teljes első táblázatot 10 felé.
-
Wyll
őstag
válasz
Fferi50 #25100 üzenetére
Értem, és valóban működik is! (Nem probléma angolul beírni.) Köszönöm!
Persze számformátummal fogom megcsinálni!Elegánsabb.
Már csak egy (költői) kérdésem maradt:
"Ezt a sort így :=HA(valami = 0;"nincs kitöltve";valami) a VBA és az excel szövegként értelmezi."
Miért?
De ha belegondolok, akkor pont azért, mert a VBA számára a Formula property ha nem angol fv neveket tartalmaz, akkor text. -
Polllen
nagyúr
Ettől még text-ként értelmezi sajnos.
Ha visszaolvasol én pl. ilyeneket használok:
"=VLOOKUP(RC[-9],'" & utvonal & "[" & valtozo & "]Shortage'!C1:C10,10,0)"Tökéletesen működik, ha general a cellaformátum. Lehet érdemes akkor még kipróbálni a HA helyett IF-t, ahogy előttem javasolták.
-
Wyll
őstag
válasz
Polllen #25099 üzenetére
Pedig ha megnézem a típust (rákattintok egérrel a szóban forgó cellára, és megnézem fent a ribbonon, hogy mit ír a számformátumának), akkor Általános-t ír.
Most vagy az van, hogy ez így van jól, és még kéne még egy utolsó művelet a VBA-ba (pl. hasamraütök: Run), vagy ez valami kis bug, de akkor is VBA-ból kell megoldanom
Új hozzászólás Aktív témák
Hirdetés
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- Samsung Galaxy A52s 128GB, Kártyafüggetlen, 1 Év Garanciával
- Bomba ár! HP ProBook 450 G7 - i5-10GEN I 16GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Gar
- Samsung Galaxy A52s 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest