Hirdetés
-
LOGOUT.hu
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 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
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
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.[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
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é.
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
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 SubProgramozó: 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
veterán
válasz Jofi81 #25110 üzenetére
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.
-
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!
-
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.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
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
...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
veterán
válasz KaliJoe #25120 üzenetére
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
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
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
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
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.
[ Szerkesztve ]
"Odamentem egy párhoz...négyen voltak!"
-
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 :-)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
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[ Szerkesztve ]
"Odamentem egy párhoz...négyen voltak!"
-
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.
-
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.
[ Szerkesztve ]
-
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.
[ Szerkesztve ]
-
nagyúr
Ü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.. -
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.
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
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 #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 SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
-
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
-
KO MA
újonc
Köszönöm
Próbálom
Új hozzászólás Aktív témák
Hirdetés
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Vírusirtó, Antivirus, VPN kulcsok
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Microsoft Office Home & Business 2024 PC/Mac EP2-06638
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
Állásajánlatok
Cég: HC Pointer Kft.
Város: Pécs
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest