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.
Gyorskeresés
Legfrissebb anyagok
- Bemutató Route 66 Chicagotól Los Angelesig 2. rész
- Helyszíni riport Alfa Giulia Q-val a Balaton Park Circiut-en
- Bemutató A használt VGA piac kincsei - Július I
- Bemutató Bakancslista: Route 66 Chicagotól Los Angelesig
- Tudástár AMD Radeon undervolt/overclock
Általános témák
LOGOUT.hu témák
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [sh4d0w:] Rebel Moon - Ne nézd meg!
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] Gurulunk, WAZE?!
- [Re:] [attilasd:] A laposföld elmebaj: Vissza a jövőbe!
- [Re:] [ubyegon2:] Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- [Re:] Elektromos rásegítésű kerékpárok
- [Re:] PLEX: multimédia az egész lakásban
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Téma összefoglaló
- Utoljára frissítve: 2023-11-13 08:31:56
LOGOUT.hu
Hozzászólások
Wyll
őstag
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
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
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.
[ Szerkesztve ]
"Odamentem egy párhoz...négyen voltak!"
Wyll
őstag
É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.
[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
Delila_1
Topikgazda
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é.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
KERO_SAN
aktív tag
Szia!
Igen, kötelező a 18. oszlop kitöltése, ez a megoldás megfelelőnek tűnik
the troopa of tomorrow _ maydayzor FUTURE WALKS
Fferi50
őstag
Szia!
Meg is válaszoltad a kérdésedet, nem tudja a függvényt értelmezni, ezért szövegnek fogja fel.
Üdv.
Delila_1
Topikgazda
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 Sub
Modulba 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
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
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
Topikgazda
A DARABTELI függvénnyel.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Jofi81
őstag
Ezzel az a gond, hogy egy sor (oszlop) több egyest is tartalmazhat. Nekem nem az kellene, hogy összesen hány darab egyes van, hanem hogy hány olyan sor (oszlop) van, ami tartalmaz legalább egy egyest.
Delila_1
Topikgazda
A sorok végére beírod a DARABTELI függvényt, majd az új oszlopot tartományként véve a =DARABTELI(tartomány;">" & 0) függvény megadja a sorok számát.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Jofi81
őstag
Ez így tényleg működhet, kipróbálom. Köszönöm!
Delila_1
Topikgazda
Nézd meg újra, mert módosítottam az előbbin.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
koda013
újonc
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!
KaliJoe
csendes 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.
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
Delila_1
Topikgazda
ActiveWindow.SelectedSheets.PrintPreview
nyomtat =nyomtat + 1
ahol a nyomtat egy elnevezett cella.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Polllen
nagyúr
Szia,
próbáld ezzel:
If Worksheets("munkalapod").PrintPreview = True Then
számlálónövelés
End If
[ Szerkesztve ]
"Odamentem egy párhoz...négyen voltak!"
Jofi81
őstag
Működik, köszönöm a segítséget!
Delila_1
Topikgazda
Szívesen.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
KaliJoe
csendes tag
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
...
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
Delila_1
Topikgazda
Rögzíts egy makrót, ami csak annyit tartalmazzon, hogy behívod a nyomtatási képet. Onnan vedd a sort.
Dim wsh_Űrlap As Worksheet
Set wsh_Űrlap = Worksheets("Űrlap Nyomtatáshoz")
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
KaliJoe
csendes 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)
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
KaliJoe
csendes tag
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
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
Delila_1
Topikgazda
Próbáld a 25116-os hsz szerint.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Delila_1
Topikgazda
Dim utvonal = As String
utvonal= Worksheets("Alapértékek").Cells(7, 1)
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
KaliJoe
csendes tag
Szia Delila_1,
Igen, így menne egy normál változó esetében. Konstans esetében nem megy.
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
Polllen
nagyúr
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 If
Bár ha fix, változó sem kell.
[ Szerkesztve ]
"Odamentem egy párhoz...négyen voltak!"
KaliJoe
csendes tag
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 :-)
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
Polllen
nagyúr
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
[ Szerkesztve ]
"Odamentem egy párhoz...négyen voltak!"
Fferi50
őstag
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.
Fferi50
őstag
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.
[ Szerkesztve ]
Polllen
nagyúr
A selectedsheets-hez miért kell megadni a változót egyébként?
Nekem ez olyan, mintha az aktív file parancshoz meg kellene adnom, melyik az aktív, miközben az adott.
"Odamentem egy párhoz...négyen voltak!"
Fferi50
őstag
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.
[ Szerkesztve ]
Polllen
nagyúr
"Odamentem egy párhoz...négyen voltak!"
Üdv. Kollégák Excel 2010-ben van panelrögzítésre valami billentyűkombináció? Google és MS nem segít ebben.
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..
SzGeza
csendes tag
Hello,
Én is belefutottam ebbe a problémába, és némi keresés után ezt találtam:
http://support2.microsoft.com/kb/3025036
Nekem segített!
Üdv,
SzG
Delila_1
Topikgazda
Ú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 Sub
Ezután makróbarátként kell mentened a füzetedet.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Backrau
aktív tag
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
Topikgazda
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
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Backrau
aktív tag
Valamiért nem működik. Ha mondjuk a B12-es cellába írni akarok nem engedi. A beírt érték érvénytelen. Biztos valami a makró készítésnél van, mert még nem csináltam ilyet.
Delila_1
Topikgazda
Lapfülön jobb klikk, Kód megjelenítése. A jobb oldalon kapott fehér területre másold át a makrót.
Makróbarátként kell mentened a füzetet.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Backrau
aktív tag
Sajnos ugyanazt írj ki
Delila_1
Topikgazda
Ha gondolod, küldd el a fájlt. Privátban megadom a címet.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Backrau
aktív tag
Rendben
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
Topikgazda
Az A1 cella értékének a kerekítése 2010-es verzió alatt =MROUND(A1;5)
fölötte =TÖBBSZ.KEREKÍT(A1;5)
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Fferi50
őstag
Szia!
Használd a kerekítés függvényt az eredmény beírására: =kerekítés(eredmény; -1) .
Üdv.