-
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
Delila_1
#10345
üzenetére
Kösz, igen, visszatértem (most hogy már nem áll romokban a ház) lesz több időm PH!-ra. Bár most meg vérszemet kaptunk, úgy hogy egy nyílt terasz építésével folytatjuk...

(De abban már annyira szervesen nem veszek részt/nem tudok részt venni, mert direkt április végéig nem vállaltam melót, most meg van rendesen, nem tudok már annyit besegíteni a terasz munkálataiba, ergó akár napi 12-16 órát ülök gép előtt. Ilyenkor meg jól esik egy kicsit kikapcsolódni, szünetet tartani és bejönni PH!-ra.) -
-
-
válasz
copperhead
#10320
üzenetére
Excelben is megadható, a tizedesjegy elválasztó karakter(az OS területi beállításaitól függetlenül). Magyar OS/Excel esetén ez alapban vesszőn van. [link]
Ellenőrizd ezt a beállítást, hátha ebben különbözik az a másik 2 PC. -
válasz
Geryson
#10226
üzenetére
Nem tudom milyen módon hoztad létre a szabályt, de inkább így csináld: O2 cellán állva
-
-
-
Annyit had javasoljak, hogy a Goto utasítást csak akkor használd, ha nincs más. A strukturált nyelvek esetén a Goto 99%-ban nem szükséges.
If Len(Dir(Cells(7, 26))) = 0 Then GoTo dirmakego
GoTo csvmakegoEgy ilyen szerkezet, minden vizsgán (bármely strukturált nyelvről is legyen szó) elégtelen...
(a többiről a kódodban nem is beszélve)
(És hidd el, nem elfogultságból mondom, mivel kb 6 évet Assembly-ben dolgoztam, ott meg csak ugró utasítások vannak)Javaslom nézz utána az If...Else...EndIf struktúrának, mert szörnyen használod jelenleg...

-
-
válasz
Konflikt
#10169
üzenetére
1. El kellene dönteni, hogy magyar vagy angol formázást használsz, mert amit megadtál az mindkettő ("hh:pp:ss.eee")

Vagy angol hh:mm:ss, vagy magyar óó:pp:ss2. Magyar formátum szerint így jelenítheted meg az ezredmásodperceket óó:pp:ss,000
(Ha nem magyar office-t használsz, akkor a formátumban a vessző helyére, azt a karaktert használd, ami az ezres elválasztó az excelben, pl pontot.3. "2. egy decimalis ertek 1-250 kozott."
Ööö, ezt sajnos nem értem, nem tudom ezzel mi a gond...
4. Az a grafikon meg kivitelezhető idővel...
-
válasz
Geryson
#10156
üzenetére
Ilyesmi kivitelezhető, csak rögtön szöveg formátumra kell formázni például az adott oszlopot . Onnantól már működik a megszokott módszer, azaz pl A1-be 2011-01, A2-be 2011-02, A1 és A2 kijelöl, majd lemásol ameddig kell.
-
válasz
somasz
#10153
üzenetére
Lenyíló lista/érvényesítés néven ismert/lehet előállítani.
Amúgy ez egy szép feladat, de ha ezt kulturáltan szeretnéd megoldani, abba jó sok munkát kell befektetni. (Ilyen feladatot Én Access-ben oldanám meg)
Az első és legfontosabb feladat, egy normális adatbázis struktúra kiépítése, mert ez a mostani a halálom.
(Nézd el nekem, elég sok mindennel foglalkozom számteken belül, így adatbázis tervezéssel/építéssel)Külön kategóriák kellene (CPU/Alaplap stb stb) és az azokra jellemző tulajdonságok. (Hisz egy deszkának merőben más jellemzői vannak, mint egy CPU-nak)
Tovább nem is megyek, megvárom, mit írsz erre...
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
-
-
-
válasz
Vizes Tomi
#10136
üzenetére
Így látatlanba nehéz lesz, de fussunk neki
1. A SZUM cella nem "[ó]:pp" formátumú
2. A percdíjak nem szám formátumú
3. rosszul írtad be a képletet (szerencsésebb lenne kimásolni és beilleszteni)Ha meg még mindig gond van, akkor küld el a táblát (ha publikus), mert Nálam nincs gond vele
-
válasz
Vizes Tomi
#10133
üzenetére
Így formázd a cellákat, akkor a SZUM is simán összeadja. Ha pl B1-ben van a SZUM(a telefonszámláitok összesített értéke), C1-ben meg a percdíjak, akkor a képlet
=((BAL(SZÖVEG(B1;"[ó]:pp");SZÖVEG.KERES(":";SZÖVEG(B1;"[ó]:pp");1)-1)*60)+(PERCEK(B1)))*C1
-
válasz
basaharc502
#10131
üzenetére
Vizes Tomi
Tehát két időből kiszámolod a különbséget (hány perc) és azt szoroznád a percdíjakkal?
-
-
-
válasz
DopeBob
#10121
üzenetére
Igen, megoldható, a szabályban az ÉRVÉNYESSÉG-ben megadod a színezendő tartományt
(Itt a B oszlopban 5-nél nagyobb számok esetén színezi, az A oszlop megfelelő celláit) -
-
-
válasz
zsotesz81
#10042
üzenetére
Mondjuk sejtettem, csak már az eszemet sem tudom, mikor használtam utoljára Lotus Notes-t...
No mindegy, akkor a sheet1 D5 cellájába ezt a kódot írd be=HA(SZÖVEG.KERES(A7;Munka2!E4;1);"X";"")
(Arra ügyelj, hogy ez nem tesz különbséget a GEZA meg GEZACSKA között, azaz mindkét esetben megtalálja GEZA-t... Ha ez így nem felel meg, akkor más módszer kell...
-
-
válasz
zsotesz81
#10038
üzenetére
1 .Megoldható, csak azt kellene tudni, hogy minden hivatkozás hivatkozásként van-e megjelenítve. Arra gondolok, hogy megjelenítve egy hivatkozást az lehet pl UBUL, de ha rákattintasz, akkor megy fel a pl google.hu-ra...
Ha a cellában url-ként jelenik meg a hivatkozás, akkor makró nélkül megoldható, ha nem, akkor csak makróval2. feltételezem úgy értetted, hogy a hivatkozásban szerepel a GEZA és csak az, azaz nem GEZACSKA...
-
válasz
Mauzes
#10008
üzenetére
Delila_1 képlete azt feltételezi, hogy az A oszlopban A1-től vannak szépen sorban a dátumaid. Az általa adott képletet írd be pl B1-be (vagy bármely oszlop első sorába), majd másold le. (ráállsz a cellára, egérrel megfogod a jobb alsó sarkát a cellakurzornak és az egér bal gombját nyomva tartva lehúzod, ameddig az A oszlopban vannak adatok)
-
-
válasz
BoharJoe
#9999
üzenetére
Első kérdésedre: Ki kell nyerni az adott időből az órák és percek számát, ezeket már össze lehet adni. (feltételezem valami olyasmihez kellene, hogy pl ki és mennyit dolgozott egy hónapban, vagy hasonló)
Pl A oszlopban van az időpontok(most legyen A1:A3), akkor B oszlopba kerülnek az órák (B1:B3), C-be meg a percek (C1:C3)
B1-be: =ÓRA(IDŐÉRTÉK(SZÖVEG(A1;"óó:pp:mm"))) és lemásolod
C1-be: =PERCEK(IDŐÉRTÉK(SZÖVEG(A1;"óó:pp:mm"))) és lemásolodÍgy az órákat ill. a perceket is SZUM-al összeadhatod, azonban van még egy fontos dolog, nevezetesen, hogy a percek több órát is kitehetnek, ezért ezt még az órák összegéhez hozzá kell adni, így a végleges képlet valami ilyesmi lesz:
=SZUM(B1:B3)+INT(SZUM(C1:C3)/60)Itt még nincs vége, mivel kerekíteni is kell, mert a percek számát elosztom 60-al és marad 59 perc, az nyilván nem lenne fair, hogy egy perc miatt valakinek egy órával kevesebbet számolnál el...
![;]](//cdn.rios.hu/dl/s/v1.gif)
Lehet, hogy rosszul értettem a feladatot, akkor sorry...
-
válasz
m.zmrzlina
#9986
üzenetére
=HA(HIBÁS(INT(A1));"Ez nem szám";A1)
-
válasz
Fire/SOUL/CD
#9984
üzenetére
Oops.. A 2 pont így félreérthető, szóval helyesen így:
2. Az angol UTF8 mezei szöveges fájl, annyiban különbözik egy sima angol textfájltól, hogy az első 3 byte-ja rendre a következő (hexadecimálisan): 0xEF, 0xBB, 0xBF
Mivel egy sima angol(meg bármilyen nyelvű) text fájlban nem szokás speciális karaktereket használni, illetve (és ez a fontosabb), az angolban nincs ékezet... Egy magyar nyelven írt text fájlhoz biztosan valós konverzió kell, nem csak az első 3 byte variálása...
-
"Ezt be lehet építeni a makróba, hogy ne kelljen külön még átkódolni a .csv-t?"
1. Attól függ, milyen módszerrel hozza létre a makró a CSV fájlt
2. Az UTF8 mezei szöveges fájl, annyiban különbözik egy sima textfájltól, hogy az első 3 byte-ja rendre a következő (hexadecimálisan): 0xEF, 0xBB, 0xBF
3. Az ASCII->UTF8 valós konverziónak, akkor van csak értelme (a 2. pont túl), ha tényleg speciális karakterek kerülnek a CSV-be, pl: äöüß, amit a weben is meg akarnak jeleníteni. Valószínű, hogy ezzel a fájllal is ez van... Ha ez a szitu, akkor egy példaprogi
Private Sub CommandButton1_Click()
Dim My_Real_UTF8_Conversion As Object
Set My_Real_UTF8_Conversion = CreateObject("ADODB.Stream")
My_Real_UTF8_Conversion.Type = 2
My_Real_UTF8_Conversion.Charset = "utf-8"
My_Real_UTF8_Conversion.Open
My_Real_UTF8_Conversion.WriteText "ASCII nem fog változni, de ezek igen: äöüß"
My_Real_UTF8_Conversion.SaveToFile "d:\FSCD_UTF8.UTF8", 2
Set My_Real_UTF8_Conversion = Nothing
End Sub -
válasz
m.zmrzlina
#9974
üzenetére
És itt honnan kellene látnunk, hogy mi van az A2-ben?

Lehet, hogy tényleg nincs... -
Hmmm.. Tényleg nem tudom mi lehet a problem Nálatok.

Mellesleg a korábbiakban írt makrók egyike sem alakítja Szám formátumúvá a cellákat, hanem Általános formátumra, igaz, azzal már lehet dolgozni/számolni. Általános (vagy bármi egyéb) formátumra hozni egy tartományt, ahhoz nem kell ciklus, elég egy sor is. plPrivate Sub CommandButton1_Click()
Range("A1:A" & Range("A1").End(xlDown).Row).NumberFormat = "General"
End Sub -
válasz
bozsozso
#9961
üzenetére
Nem tudom, ha tudnám megírnám. (Visszaolvasva, ha minden úgy van ahogy írtad, akkor működnie kellene)
PetX
Word körlevélben használsz adatfájlként excel táblázatot, ok.1. A wordben használt sablonról van szó? (ha igen, akkor sem mész vele semmire)
2. A word körlevélben is meg kell formázni az adott mezőt, pl így
{MERGEFIELD Mező neve \# "0,00"} -
-
-
-
válasz
scott_free
#9931
üzenetére
Van, a SZUMHA függvényben ugyanazt a kritériumot adod meg, mint ami miatt a feltételes formázásnál "elzöldülnek" a cellák.
-
Hát ha mindenáron külön cellákban vannak az órák/percek, akkor ilyen gyönyörűséges lesz az E1 képlete.

=HA(IDŐ(C1;D1;0)>IDŐ(A1;B1;0);IDŐ(C1;D1;0)-IDŐ(A1;B1;0);24-IDŐ(A1;B1;0)+IDŐ(C1;D1;0))
Pá
A műszak lehet 22:00-tól 6:00-ig (másnap), ezért az az egyszerű képlet úgy nem lesz jó...![;]](//cdn.rios.hu/dl/s/v1.gif)
Így kellene módosítani: =HA(B1>A1;B1-A1;24-A1+B1) -
-
Ne legyen szűrés egy oszlopban sem
=RÉSZÖSSZEG(9;A2:A7)Ugye A1-ben a fejléc található, ezért A2-től kezdődnek az adatok, ez esetben A7-ig.
Ha fix méretű a táblázatod (tehát nem változik a sorok száma), akkor ez megfelelő megoldás lehet ill. megadsz tartományt. Ha dinamikus a táblázat (változik a sorok száma, és itt elsősorban az értendő, hogy új sorok adódnak hozzá), akkor inkább makrókód kell, mert egyébként, folyamatosan át kell irogatnod a képletben a tartományt pl A2:A100 vagy egyébre...
-
-
MsgBox (Worksheets("Munka1").AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1)
A Munka1 annak a munkalapnak a neve, amelyikben az AutoFilter/Szűrő használva van
UI: Feltételezem, az csak szimpla elírás részedről, hogy a "szűrt oszlopokat" számolja, hisz szűrt sorok vannak, az oszlopok száma szűrve és szűrés nélkül is fix...
-
válasz
bozsozso
#9716
üzenetére
Bocs a megkésett anyagért, de hétköznapokon el vagyok rendesen foglalva.
Ez a kód az összes CSV fájlt feldolgozza illetve AutoFilter-rel látja el. Ebből a táblázatból pedig kényelmesen legyárthatsz kimutatást, abban meg azt és úgy összesíthetsz, ahogy csak szeretnéd.
(Azért tettem be ide PH!-ra, mert hátha mások is találnak benne hasznos dolgokat)Private Sub CommandButton1_Click()
'elválasztó-karakter a CSV fájlokon belül
Const MYDELIMITER = ";"
'hol találhatóak a CSV fájlok
Const MYPATH = "D:\fire\csvs_path\"
'melyik munkalapra legyenek bemásolva az adatok
'(A munkalapnak LÉTEZNIE KELL!)
Dim DestWS As Worksheet
Set DestWS = Worksheets("Munka2")
'a megadott munkalap melyik cellájától kerüljenek be az adatok
Dim DestRange As Range
Set DestRange = DestWS.Range("A1")
Dim MyStr As String
Dim MyStrs() As String
Dim MyFileIndex As Integer
Dim MyRowCount As Integer
Dim MyCount As Integer
Application.ScreenUpdating = False
DestWS.Select
DestWS.UsedRange.Clear
DestRange.Select
MyRowCount = 0
MyFileIndex = 0
MyFname = Dir(MYPATH & "*.csv")
Do While Len(MyFname) > 0
MyFnum = FreeFile
Open MYPATH & MyFname For Input As MyFnum
Line Input #MyFnum, MyStr
Line Input #MyFnum, MyStr
Line Input #MyFnum, MyStr
If MyFileIndex = 0 Then
ActiveCell.Offset(MyRowCount, 0).Value = "TelephelyKód"
MyFileIndex = 1
MyStrs = Split(MyStr, MYDELIMITER)
If Right(MyStr, 1) = MYDELIMITER Then
MyCount = UBound(MyStrs())
Else: MyCount = UBound(MyStrs()) + 1
End If
For i = 0 To MyCount - 1
ActiveCell.Offset(MyRowCount, i + 1).Value = MyStrs(i)
Next i
MyRowCount = MyRowCount + 1
End If
Line Input #MyFnum, MyStr
Line Input #MyFnum, MyStr
While Not EOF(MyFnum)
Line Input #MyFnum, MyStr
xstr = Mid(MyFname, InStr(1, MyFname, ".", vbTextCompare) - 3, 3)
ActiveCell.Offset(MyRowCount, 0).Value = xstr
MyStrs = Split(MyStr, MYDELIMITER)
For i = 0 To MyCount - 1
ActiveCell.Offset(MyRowCount, i + 1).Value = Trim(MyStrs(i))
Next i
MyRowCount = MyRowCount + 1
Wend
Close MyFnum
MyFname = Dir()
Loop
With ActiveSheet
.Range(DestRange.Address & ":" & Chr(DestRange.Column + MyCount + 64) & DestRange.Row).AutoFilter
.Columns.AutoFit
End With
Application.ScreenUpdating = True
If MyRowCount = 0 Then MsgBox "A megadott termék nem található az átvizsgált CSV fájlokban.", vbInformation
Set DestWS = Nothing
Set DestRange = Nothing
End Sub -
-
válasz
bozsozso
#9710
üzenetére
Akkor ezek lennének a feladatok?
1. Minden CSV első 4 sorának kihagyása
2. Terméknevek alapján létrehozni külön-külön munkalapokat, és abba pakolni a szükséges adatokatEhhez szükségem lenne egy CSV fájlra(ha publikus el is küldheted, ha nem, akkor meg készíts egy CSV kamu adatokkal, illetve erről
"Tehát új munkalap létrehozás majd pl.:a C1 cellába a terméknév utánna pedig pl. az A2-től a cellákban a telephelyek(ami fájlnév utolsó 3 karaktere) és mondjuk a B2 cellától lefelé a mennyiségek."
egy képet tegyél be...Delila_1
Köszönöm, éltetett. Igaz kicsit rövidre sikeredett, de legalább olyan ismerősökkel tudtam pár szót váltani, akikkel évek óta nem találkoztunk... -
-
-
válasz
bozsozso
#9698
üzenetére
2 lehetőség van ekkor
1. Nincs 5. elem (MyStrs(4))
2. Nem egyforma formátumúak a CSV-kPuhatold ki melyik, és módosítom, kivitelezhető így és úgy is...
(Ma nem vagyok 100%-os, mivel (és ez lehet infó rólam pár emberkének), de Józsi vagyok és a barátokkal egy kicsit(tényleg kicsit) felöntünk a garatra...
Holnap jelentkezem...

UI: Delila_1 tényleg egy "kis" zseni, bele sem merek gondolni, ha összehozott volna minket a sors az életben, milyen hiperkocka gyerkőceink lettek volna...

(Bocsi delila_1, remélem poénnak fogod fel, mert annak szántam)
-
válasz
bozsozso
#9681
üzenetére
No mindegy, majd kipróbálod, aztán ha valamit módosítani kell, akkor módosítva lesz...

Private Sub CommandButton1_Click()
'elválasztó-karakter a CSV fájlokon belül
Const MYDELIMITER = ";"
'hol találhatóak a CSV fájlok
Const MYPATH = "D:\fire\csvs_path\"
'melyik munkalapra legyenek bemásolva az adatok
Dim DestWB As Worksheet
Set DestWB = Worksheets("Munka2")
'a megadott munkalap melyik cellájától kerüljenek be az adatok
Dim DestRange As Range
Set DestRange = DestWB.Range("A1")
Dim MyStr As String
Dim MyStrs() As String
'meg kell adni, milyen terméket keressünk a CSV fájlok-ban és OK gomb
'Cancel gombbal megszakítható a művelet
UserChange = InputBox("Mit keressünk? (kis- és nagybetű nem számít...)", "Keresés...")
If Len(UserChange) > 0 Then
Application.ScreenUpdating = False
'kiválasszuk a megadott munkalapot
DestWB.Select
'töröljük annak teljes tartalmát
DestWB.UsedRange.Clear
DestRange.Select
MyRowCount = 0
MyFname = Dir(MYPATH & "*.csv")
Do While Len(MyFname) > 0
MyFnum = FreeFile
Open MYPATH & MyFname For Input As MyFnum
While Not EOF(MyFnum)
Line Input #MyFnum, MyStr
MyStrs = Split(MyStr, MYDELIMITER)
'vizsgáljuk, hogy a CSV fájl adott sorában, utolsó eleme után van-e még elválasztókarakter avagy sem
If Right(MyStr, 1) = MYDELIMITER Then
MyCount = UBound(MyStrs())
Else: MyCount = UBound(MyStrs()) + 1
End If
'a MyStrs(0) indexével adjuk meg, hogy a CSV fájlon belül, hányadik elem a termék neve
'első->0, második->1, harmadik->2 stb stb
If UCase(MyStrs(0)) = UCase(UserChange) Then
For i = 0 To MyCount - 1
ActiveCell.Offset(MyRowCount, i).Value = MyStrs(i)
Next i
MyRowCount = MyRowCount + 1
End If
Wend
Close MyFnum
MyFname = Dir()
Loop
Application.ScreenUpdating = True
'ha nem találtunk egyetlen megadott nevű terméket sem, arról értesítést adunk
If MyRowCount = 0 Then MsgBox "A megadott termék nem található az átvizsgált CSV fájlokban.", vbInformation
End If
Set DestWB = Nothing
Set DestRange = Nothing
End Sub -
-
-
Ilyen lehetőség van benne, de ez nem ugyanaz, mint a klasszikus "fit to page". Marad a "klasszikus" megoldás, azaz az Oldalbeállítások. Itt lenullázod az élőfejet/élőlábat, és a margókat.
Természetesen a nyomtatótól is függ, hogy tud-e és engedi-e a nullás margót. -
-
válasz
bozsozso
#9591
üzenetére
Megnyitod a munkafüzeted, amiben ezt a "furcsa" kerekítést használni szeretnéd, ALT+F11/Insert menü/Module és a megjelenő ablakba bemásolod az általam adott kódot. Mentés másként és makróbarát dokumentumként kell menteni immár.
Az a kód egy függvény, ugyanazok a szabályok érvényesek rá, mint pl a SZUM függvényre, azaz, egy adott cellán állva azt kell beírni, hogy pl =FSCD_Round5_9(A1)
-
válasz
bozsozso
#9584
üzenetére
Az alábbi kód szabályos KEREKÍTÉS-t végez először (5 tizedtől felfelé illetve az alatt lefelé), továbbá most úgy írtam, hogy a kerekítést követően a 2-re végződő számokat 5-re , míg 7-re végződőket 9-re módosítja. Próbáld ki, remélem így megfelel.
Function FSCD_Round5_9(xCell As Range) As Single
Dim xNumber As Single
Dim xStr As String, xChar As String
Dim MyFxs As WorksheetFunction
Set MyFxs = Application.WorksheetFunction
xNumber = xCell
xStr = MyFxs.Round(xNumber, 0)
xNumber = xStr
xChar = Right(xStr, 1)
Select Case xChar
Case "0"
xNumber = xNumber - 1
Case "1"
xNumber = xNumber - 2
Case "2"
xNumber = xNumber + 3
Case "3"
xNumber = xNumber + 2
Case "4"
xNumber = xNumber + 1
Case "5"
Case "6"
xNumber = xNumber - 1
Case "7"
xNumber = xNumber + 2
Case "8"
xNumber = xNumber + 1
Case "9"
End Select
Set MyFxs = Nothing
FSCD_Round5_9 = xNumber
End Function -
-
válasz
Delila_1
#9530
üzenetére
"Akkor minek átmásolni a Sima lapra?"
Feltételezem azért, mert a másik lapon "pofásan" ki van alakítva, hogy hogy is nézzen ki a nyomtatvány.
(Mondjuk ilyen feladatokhoz semmiképp sem használnék(és sosem használtam) excel makrót, hanem word körlevélben létrehoznék egy szép törzsdokumentumot, az excel táblát(fejléccel) adatforrásként adnám meg és kész, lehet is nyomtatni, ha kell szűrve, ha bármi módosult az excel táblában azt frissíti, vagy kézzel katt a frissítés gombon stb stb.
Persze ezt elsősorban nem neked írom, hisz ezzel Te tisztában vagy...
) -
válasz
m.zmrzlina
#9520
üzenetére
Pedig jobb lenne megfogadni perfag javaslatát, mert az eddig befektetett sok munkádon túl, sok munkád lesz pluszban, amit a rossz koncepciónak, programfelépítésnek, megvalósításnak köszönhetsz majd..

(pl space-el kezdeni egy szót, és azt még fel is használni) -
-
-
-
válasz
bugizozi
#9498
üzenetére
VBA Editor/View/Toolbar/Edit bepipál, ekkor megjelenik egy eszköztár, amin (többek közt) található lesz egy Comment Block és Uncomment Block gyors gomb.
Írd be a kommentelni kívánt több sort, jelöld ki mindet, majd katt a Comment Block-on.
VBA-ban csak egysoros kommentelés létezik, ami vagy a már általad is említett ' karakter, avagy a REM.
-
válasz
m.zmrzlina
#9495
üzenetére
Még korán van számomra(hétvégén ha 10-12 órát aludtam, az már túlzás, meg ma reggel is 5-kor feküdtem
), félreérthetően fogalmazok. Szóval az előbbit úgy értettem, hogy nem Te adhatod meg, hogy milyen gombok legyenek az InputBox-on, amik meg vannak, azoknak nincs olyan visszatérési értékük, mint MsgBox esetén.Persze le lehet kezelni több módon is az InputBox Cancel-t: [link] [link]
-
válasz
m.zmrzlina
#9493
üzenetére
Inputbox-ra sehogy, mivel nincsenek rajta gombok. Ezért írtam a MsgBox-ot, mert ott lehetnek gombok.
-
válasz
m.zmrzlina
#9491
üzenetére
MySelect = MsgBox("Valami", vbInformation + vbOKCancel, "Valami2")
If MySelect = vbCancel Then MsgBox ("Cancel") -
válasz
bozsozso
#9485
üzenetére
=SZUMHA(A1:A4;"#";B1:B4)
Csillagot nem használhatsz, mert az ún. asterix karakter (helyettesítő karakter, mint akár a kérdőjel)
karczt
Az a baj, hogy pl a scroll lock esetén amit leírsz, annak úgy is kell működni.
Alfanumerikus ill. numerikus padon beírva a számot, akkor ugyanaz a helyzet? -
-
-
Arra ügyelj, hogy ez egy célirányos kód, mivel láttam mekkora számokról van szó, így azokat kezeli csak le, de a 10 vagy annál kisebb értékekkel hibásan dolgozik!!!
UI: Azért nem lehet ezt úgy formázni, ahogy szeretnéd, mert a normál alaknak megvannak a matematikai definíciói, azaz (ez most nagyon puritán megfogalmazás lesz) 1 és a számrendszer alapja(10) közé eső szám, szorozva a számrendszer alapjának valahányadik hatványával. Ezt veszi alapul az Excel is és ugye a 10 kitevője mindig változik, így fixen nem lehet 2 tizedesjegyet formázni... Aztán lehet lesz valaki, aki megcáfol és egy laza cellaformázással ezt kivitelezi, arra viszont én is kíváncsi lennék, mert ilyenről nem tudok...
-
Ez most nem makró, csak úgy "hirtelen képlettel megoldás", tehát kell egy segédoszlop. A oszlopban a számaid, B1-be az alábbi képlet és lemásol, ameddig kell
=HA(MARADÉK(MARADÉK(A1;100);10);CSONK(A1/100)&","&MARADÉK(A1;100)&"E+2";CSONK(A1/100)&","&MARADÉK(A1;100)/10&"E+3")
(Ezzel utána számolhatsz is)
-
-
-
Semmi gond, csak ez egy szép feladat, jó kis fejtörő lehet(főleg makró nélkül) megoldani, ezen kép nélkül esélytelen lett volna, hogy megfelelő megoldással tudnánk szolgálni. Annyit azonban tisztázni kell, hogy milyen "időszámítás" legyen használva, erre gondolok: [link]
(A számok a táblázatban azt jelölik, hogy az adott nap, az adott év hányadik hetére esik)Melyik módszer legyen? (nyilván a gépi USA kizárva alapban)
UI: A képeden lévő 2010.11.30 dátum semelyik számítás szerint sem eshet az év 50. hetére, rossz a táblázat ebből a szempontból
-
Hálás köszönet! Hát csapjon agyon egy meteorit, ha a kérdésfelvetésed kapcsán nekem ilyen táblázat jelent volna meg a lelki szemeim előtt.

Kíváncsi lennék, Delila_1-nek is milyen "látomása" volt a feladattal kapcsolatban...

De komolyra fordítva, ebből már egyértelműbb a feladat...
-
-
válasz
bugizozi
#9383
üzenetére
Ööö, tehát akkor végül is hálózaton van a másik munkafüzet?
Ha igen, akkor a vissza-perjeleket "\" le kell cserélni sim perjelre "/"Figyu szúrj be egy sima SZUM függvényt (ne kézzel, hanem a függvény beszúrása segítségével) és ott add meg a másik excel fájl adott celláit, egyből látni fogod a különbséget.
Ha úgysem jó, akkor passz...
-
válasz
bugizozi
#9381
üzenetére
Kézzel írtad be, vagy az excel-el szúrtad be a függvénynél?
Ha ez eredethez képest máshová kerültek a munkafüzetek, akkor a képleteket is módosítani kell, ezt magától nem tudja az excel frissíteni.
(Nem tudhatja, hogy az a munkafüzet ami eddig pl a c:\ubul-ban volt megtalálható, az átkerült a pl c:\gerzson mappába, pusztán ez esetben jelzi, hogy a c:\ubul-ban nem találja, ezért a #HIV! hibajelzés) -
-
-
-
-
válasz
Fire/SOUL/CD
#9365
üzenetére
2 szám összeadásánál, az üres cella vizsgálata elhagyható, csak a példa kedvéért hagytam benne, elég lenne ez a képlet is(hisz mindegy, hogy üres a cella avagy nem számot tartalmaz, azt nem lehet összeadni vagy egyéb matematikai műveleteket végezni velük)
=HA(ÉS(SZÁM(A1);SZÁM(A2));A1+A2;"Celláknak számot kell tartalmazniuk")
-
A feladat szempontjából lényegtelen, hogy egy cella azért üres, mert üres, vagy mert egy képlet van benne és az "teszi" üressé. pl ha A1 és A2 cellát szeretnéd összeadni, akkor meg kell vizsgálni, hogy egyik sem legyen üres és tényleg számot tartalmazzon (függetlenül attól, hogy abban képlet van, avagy sem)
=HA(ÉS(A1<>"";A2<>"";SZÁM(A1);SZÁM(A2));A1+A2;"Cellák nem lehetnek üresek és számot kell tartalmazniuk")
-
válasz
Fire/SOUL/CD
#9360
üzenetére
Ja, mondjuk azt a "2. sorban" dolgot nem vágom.
Mihez képest 2. sorban? C2-hőz képest, azaz 3. sorban?
Ha igen, akkor módosítod a kódot... -
válasz
m.zmrzlina
#9359
üzenetére
Akkor talán így
Sub find()
eleje:
On Error Resume Next
Cells(2, 3).Activate
amitkeres = InputBox("Add meg a keresni kívánt nevet!", "Keresés", amitkeres, 13000, 100)
Cells.find(What:=amitkeres, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
If Err.Number <> 0 Or ActiveCell.Row <> 2 Then
MsgBox ("A keresett név nincs a listában.")
GoTo eleje
End If
End Sub -
válasz
m.zmrzlina
#9355
üzenetére
Hát szerintem ez a kód nem működik jól, vázolom mit látok. A kód a C oszlopban lefelé keres (C2 cellától lefelé). Feltöltöttem pár adattal
C2->a
C3->b
C4->c1. Ha "a"-t keresek, akkor semmit nem ír ki(megtalálja az "a"-t) és kilép a szubrutinból.
2. Ha "b"-t (vagy "c"-t) keresek, arra azt írja ki, hogy nem található (holott igen) és újra bekéri mit keressen
3. Ha "x"-et keresek(ami valóban nincs a C oszlopban), akkor kiírja hogy nem találta és bekéri újra, hogy mit keressenSzóval mit is szeretnél kivitelezni, hogy kellene, hogy elméletben működjön ez a kód?
-
válasz
m.zmrzlina
#9355
üzenetére
Megsasolom, mert így hirtelen ránézésre ezt "szebben" is meg lehetne írni. (de nem biztos persze) csak itt nálam nagy a forgalom most éppen, jelenleg egy "kiírt valamit a nyomtatóm, és azóta nem tudok nyomtatni vele" user-t veri a víz.
Mondtam neki: Öngyilkos akar lenni a nyomtatód
Miért?
Mert kiírta, hogy vegyél neki cián patront.
(Egy rendszergazada találkozón hallottam ezt az aranyköpést, de most tényleg ez a "baja" a printernek.
) -
válasz
m.zmrzlina
#9353
üzenetére
Igen (többek közt).
1. rossz helyen is van a hibakezelés a kódban
2. használd a Resume Next "verziót" és ezt követően az Err.Number-t vizsgáld meg -
válasz
m.zmrzlina
#9350
üzenetére
Formailag van gond a hibakezeléssel, itt egy kis olvasnivaló a témakörben, mely után biztosan rájössz a megoldásra: [link]

-
-
-
válasz
mr.nagy
#9297
üzenetére
Itt egy egyszerű kód, ami az A1 "cellába" beilleszt bármilyen képet, 40x40 pixel méretben
Sub Insert_Pic()
Application.ScreenUpdating = False
SelectedPic = Application.GetOpenFilename _
("Képformátumok (*.gif; *.jpg; *.bmp; *.tif),*.gif; *.jpg; *.bmp; *.tif", , "Jelöljön ki egy képet")
If SelectedPic <> False Then
Range("A1").Select
With ActiveSheet
.Pictures.Insert (MyPicture)
.Shapes(.Shapes.Count).Select
End With
With Selection
.ShapeRange.LockAspectRatio = msoFalse
.ShapeRange.Top = ActiveCell.Top
.ShapeRange.Left = ActiveCell.Left
.ShapeRange.Height = 40
.ShapeRange.Width = 40
End With
End If
Application.ScreenUpdating = True
End SubNem láttam a teljes kódod, de feltételezem ez a sor hiányzik belőle (ami a fenti kódban is megtalálható)
.ShapeRange.LockAspectRatio = msoFalseHa ennek az értéke msoTrue, akkor mindegy milyen értéket adsz meg a Width/Height esetén, az eredeti méretben fog bekerülni a kép.
-
Új hozzászólás Aktív témák
- exHWSW - Értünk mindenhez IS
- Motorola G86 - majdnem Edge
- Formula-1
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Teljes verziós játékok letöltése ingyen
- Milyen monitort vegyek?
- Xiaomi 15 - kicsi telefon nagy energiával
- Gyúrósok ide!
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- VR topik
- További aktív témák...
- PC Game Pass előfizetés
- Játékkulcsok ! : PC Steam, EA App, Ubisoft, Windows és egyéb játékok
- Xbox / Microsoft Store feltöltőkártya kód (digitális, HU) több címlet, több db, azonnal, olcsón
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- GYÖNYÖRŰ iPhone 14 Pro Max 128GB Deep Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS3791
- Dell Optiplex 3050 SFF,i3-6100,8GB DDR4,256GB SSD, WIN11
- iPhone 17 Pro Max Mélykék - Bontatlan !! www.stylebolt.hu - Apple eszközök és tartozékok !!
- Samsung Galaxy S23 Ultra 8/256GB - Kártyafüggetlen, Fekete - 1 Év Garanciával
- IKEA Format lámpák eladóak (Egyben kedvezménnyel vihető!)
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

(a többiről a kódodban nem is beszélve)
Szóval óó:pp:mm,000 
24:00 vagy annál nagyobb idővel már hibásan működik...





Fferi50