Hirdetés
- droidic: Videó letöltés yt-dlp-vel (profi módszer)!
- sziku69: Fűzzük össze a szavakat :)
- vrob: Próbálkozás 386 alaplap újraélesztésre
- Brogyi: CTEK akkumulátor töltő és másolatai
- gban: Ingyen kellene, de tegnapra
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
-
LOGOUT
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
-
Van egy ilyen nem túl elegáns képletem:
=HA(HIBÁS(FKERES(D20;adattabla!$L$2:$M$10;2))=1;0;FKERES(D20;adattabla!$L$2:$M$10;2))
itt a D20 cellában egy legördülő listában kell kiválasztani az értéket. Alapból nem szerepel semmi a cellában.
kamulibre office-ban simán 0 volt a kapott érték, azonban ms office #hiányzik-ot dob, mert "hiba, nincs elérhető érték". hogyan lehet ezt megoldani? -
lenkei83
tag
Sziasztok!
Van esetleg valakinek valami infója arról, hogy az XLSB file formátumnak van e valami hátránya XLSX vagy XLSM-hez képest?
Köszi
P. -
sebi91
újonc
2007-et használok
Olyan problémám lenne hogy az excelbe importált adatoknál az egyik oszlopban a költségeket amik nagyobbak mint 999 azokat ilyen formátumban rakja be a cella bal oldalához igazítva 1 000,00 ( gondolom szövegként kezeli). A problémám az hogy a CSERE függvénnyel mindig csak egy intervallumon belül tudok cserélni. A 10 000,00 nél vagy a nagyobb értékeknél már nem tudok az általam létrehozott képlettel cserélni. =HA(Y2>-1;Y2;CSERE(J2;2;1;""))Ebben a képletben a Y2 oszlop adatait HAHIBA fügvénnyel adtam meg úgy hogy ha hibát talál a kerekítés adataiban ami az X oszlopban vannak akkor -5 öt írjon be helyette. Így a szóközös értékeknél -5-ötír ki. Így az egyik intervallumon ki tudom cseréltetni a CSERE függvénnyel. A kérdésem hogy minden intervallumon ami a milliónál vagy a százezreknél jelentkezik azt hogyan tudnám megoldani vagy van-e egyszerűbb megoldás is erre?
(próbáltam *1,számformátummá alakítani,)Előre is köszönöm a segítséget.
-
bara17
tag
Sziasztok!
Kimutatásban, hogyan tudom beállítani azt, hogy a hónapok nevei ne ábc sorrendben jelenjenek meg?
Köszönöm előre is.
-
sedyke
tag
Sziasztok!
Van egy alabbi makrom, amihez meg anno itt kaptam segitseget.
Lenyegeben a kulonbozo munkalapokon levo koltsegszamitasaimbol kereski ki a termekkodokat es sorakoztatja fel egy oszlopban a munkaful nevevel, hogy kesobb egy osszesito tablaban csak a termekkodok kelljen beirnom es fuggvenyekkel kikeresi az adatokat.
Amikor ezt a makrot valaki megirta nekem, akkor mukodott is. Ma ujrafuttattam, hogy az uj termekek is bekeruljenek a listaba, amiket az elmult honapokban csinaltam, viszont nem adja oket hozza a listahoz.
Vajon mi lehet az oka? Elore is koszi a segitseget.Sub termeklistas()
Dim sh As Worksheet, ws As Worksheet, xx As Integer, yy As Integer
Set ws = Sheets("Sheet1")
yy = 1
For Each sh In Worksheets
xx = 1
If sh.Name <> ws.Name Then
Do While True
If sh.Cells(xx, "B").Value = "" Then Exit Do
ws.Cells(yy, "N").Value = sh.Cells(xx, "B").Value
ws.Cells(yy, "O").Value = sh.Name & "!"
ws.Cells(yy, "P").Value = xx - 1
xx = xx + 51
yy = yy + 1
Loop
End If
Next
End Sub -
Belnir
csendes tag
-
twingos
tag
válasz
Delila_1
#29487
üzenetére
Szia,
Köszönöm a választ.
Szerintem sikerült ismét nem jól fogalmaznom.
Tehát az A oszlop a fix. Ha ott megtalálja az ABC kezdetű szót akkor B oszlopba írja ,hogy ALMA.
Tehát a B oszlop üres, és oda kellene beírnia , hogy ALMA.Bízok benne ,hogy így érthetőbb.
Ismét nagyon köszönöm a fáradozásodat!üdv
-
m.zmrzlina
senior tag
válasz
Fferi50
#29484
üzenetére
vagy a tartományt e nélkül definiálod
Ez ezt a hibát generálná amit /számomra/ bonyolultabb lenne eliminálni mint megkerülni a problémát.Helyette....
Mi lenne, ha a keresésnél kihagynád az első oszlop celláit Illetve minden oszlop első celláját.
Ez lett a megoldás.
Köszi. -
szatocs1981
aktív tag
válasz
szatocs1981
#29482
üzenetére
Fejléccel:
Sub Makro1()
Worksheets(1).Select
Sheets.Add
Worksheets(1).Name = "Végeredmény"
WS_Count = ActiveWorkbook.Worksheets.Count
Call TiliToli("A", "E", 2, 0)
Call TiliToli("C", "F", WS_Count, 40)
End Sub
Sub TiliToli(Spalte1, Spalte2, ettol, eddig)
For i = 2 To ettol
utolso = Worksheets(1).Cells(Rows.Count, "A").End(xlUp).Row
For szorzo = 0 To eddig Step 8
For sor = 1 To 8
ujsor = sor + szorzo
Worksheets(1).Cells(utolso + 1, sor) = Worksheets(i).Cells(ujsor, Spalte1).Value
If sor <> 1 Then
Worksheets(1).Cells(utolso + 1, sor + 7) = Worksheets(i).Cells(ujsor, Spalte2).Value
End If
Next sor
utolso = utolso + 1
Next szorzo
Next i
End Sub -
twingos
tag
Sziasztok,
Segítséget szeretnék ismét.
Mellékelek egy képet is mellé.
A oszlóban lévő adatok első 3 karakterét figyelve, írja B oszlopba az általam definiált értéket értéket. (Ahol találat van abc-re A oszlopban ott írja B oszlopba,hogy alma)
Próbáltam érthetően fogalmazni.
Megoldható ez függvénnyel?
Köszönöm a segítséget
üdv
-
Fferi50
Topikgazda
válasz
m.zmrzlina
#29470
üzenetére
Szia!
Mi lenne, ha a keresésnél kihagynád az első oszlop celláit. (Ez megoldható vba-ban offset metódus használatával, vagy a tartományt e nélkül definiálod - a tartomány előtt levő cellára is lehet hivatkozni (!) így pl. tartomány(xsor,0) a tartomány x-edik sorában a tartomány előtt levő cellát adja meg.)
Üdv.
-
poffsoft
veterán
válasz
Belnir
#29469
üzenetére
Option Explicit
Public aktualis
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastrow As Long
Dim akt_lap As String: akt_lap = ActiveSheet.Name
Dim fso As Object
Dim logfile As Object
' If Target.Count <> 1 Then Exit Sub
' If aktualis = Target.Value Then Exit Sub
Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")
Set logfile = fso.OpenTextFile("\eleresi_ut\log.txt", 8, True)
logfile.WriteLine ("VÁLTOZTAT" & " - " & Format(Now, "YYYY.MM.DD hh:mm:ss") & " - " & Environ$("username") & " - " & Application.UserName & " - " & Environ$("computername") & " - " & Target.Parent.Name & " - " & Target.Address & " - " & aktualis & " - " & Target(1, 1).Value & " -+")
logfile.Close
Set logfile = Nothing
Set fso = Nothing
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
aktualis = ActiveCell.Value
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
aktualis = ActiveCell.Value
End Sub -
szatocs1981
aktív tag
válasz
Roxy27
#29481
üzenetére
Fejléc és hibakezelés még nincs benne, próbáld ki:
Töröld a "Végeredmény" nevü fület, mielött futtatod a makrót!A makró létrehoz az elsö helyen egy "Végeredmény" nevü lapot, majd oda bemásolja az összes többi létezö lapról az adatokat, a megadot szabály szerint!
Sub Makro1()
Worksheets(1).Select
Sheets.Add
Worksheets(1).Name = "Végeredmény"
WS_Count = ActiveWorkbook.Worksheets.Count
For i = 2 To WS_Count
utolso = Worksheets(1).Cells(Rows.Count, "A").End(xlUp).Row
For szorzo = 0 To 40 Step 8
For sor = 1 To 8
ujsor = sor + szorzo
Worksheets(1).Cells(utolso + 1, sor) = Worksheets(i).Cells(ujsor, "C").Value
If sor <> 1 Then
Worksheets(1).Cells(utolso + 1, sor + 7) = Worksheets(i).Cells(ujsor, "F").Value
End If
Next sor
utolso = utolso + 1
Next szorzo
Next i
End Sub -
Roxy27
tag
válasz
szatocs1981
#29480
üzenetére

-
Roxy27
tag
válasz
szatocs1981
#29477
üzenetére
Na arra közben rájöttem, hogy mit kell megváltoztatni, hogy végignézze a teljes lapot:
For szorzo = 0 To 40 Step 8
Már csak a fejléc hiányzik, meg hogy gombnyomásra az összes sheet kigyüjtődjön automatikusan.
-
Roxy27
tag
válasz
szatocs1981
#29477
üzenetére
Ja már értem miért...
ugye írtam, hogy összesen 48 sor van egy lapon (de én úgy csináltam printscreen-t, hogy 24 látszódik, hogy még olvasható legyen... nem fér egy oldalra és nem akartam kicsinyíteni)
Így igazad van, a 45db-ot kigyűjti... csak 90 kellene
Pont mégegyszer ennyi azaz összesen 6 component és az adatai vannak 1 lapon.
Nem sürgős azért... ha este vagy holnap van időd/kedved, úgy is bőven jó. Csak tényleg úgy lenne értelme, hogy egy makró az összeset egybe összegyűjti automatikusan.
Köszi
-
Roxy27
tag
válasz
szatocs1981
#29474
üzenetére
Na most már dolgozik, de még nem okés...
minden sheet-ről csak az első 3 componest gyűjti...
nagy kérés lenne, ha egyszerre összeszedné az összes lapról automatikusan?
(ja és az első lapról mondjuk betenné a felső sorba a megnevezéseket...)Ez a későbbiekben napi feladat lenne, és jó lenne, ha gombnyomásra működne... remélem nem vagyok pofátlan

Előre is nagyon köszi a segítséged!!!! -
szatocs1981
aktív tag
válasz
Roxy27
#29473
üzenetére
Közben átírtam, mert nem volt jó:
Sub Makro1()
utolso = Sheets("Végeredmény").Cells(Rows.Count, "A").End(xlUp).Row
For szorzo = 0 To 16 Step 8
For sor = 1 To 8
ujsor = sor + szorzo
Sheets("Végeredmény").Cells(utolso + 1, sor) = ActiveSheet.Cells(ujsor, "C").Value
ActiveSheet.Cells(ujsor, "C").Select
If sor <> 1 Then
Sheets("Végeredmény").Cells(utolso + 1, sor + 7) = ActiveSheet.Cells(ujsor, "F").Value
ActiveSheet.Cells(ujsor, "F").Select
End If
Next sor
utolso = utolso + 1
Next szorzo
End SubPage1- lapra "rámész" és futtatod a makrót!
-
Roxy27
tag
válasz
szatocs1981
#29472
üzenetére
Köszi,
beállítottam a Makrót... elindítom, látszik, hogy dolgozik, de nem kerül semmi a "Végeredmény" sheet-re.
Ja, és mit is jelent, hogy egyesével aktiváljam?
Sajnos nem igazán értek hozzá...
Köszi -
szatocs1981
aktív tag
válasz
Roxy27
#29471
üzenetére
Ezt lefuttatod 36x ( a lapokat egyesével aktiváld):
Idömböl most ennyi futotta erre.Sub Makro1()
utolso = Sheets("Végeredmény").Cells(Rows.Count, "A").End(xlUp).Row
For szorzo = 1 To 3
For sor = 1 To 8
Sheets("Végeredmény").Cells(utolso + 1, sor) = ActiveSheet.Cells(sor, "C").Value
If sor <> 1 Then
Sheets("Végeredmény").Cells(utolso + 1, sor + 7) = ActiveSheet.Cells(sor, "F").Value
End If
Next sor
utolso = utolso + 1
Next szorzo
End Sub -
Roxy27
tag
Sziasztok,
kellene egy kis segítség a következő témában:
van egy termelőgépi program, ahonnan mindenféle statisztikai adatokat szeretnénk feldolgozni. A baj az, hogy ebből a részéből nem lehet exportálni. Viszont pdf creatorba tudjuk nyomtatni, onnan pedig egy excel-be konvertálni. Így viszont cseppet szétkapja a formátumot. Vissza kellene rendezni, de "gyorsan"
Az excel úgy néz ki, hogy laponként rendez:
Minden fülön 6 componet és a látható módon a hozzá tartozó adatok. Ez összesen laponként 48 sor.
Nekünk viszont egy lapra kellene szedetni, ebben a formában:
Tudna erre valaki gyors megoldást?(összesen jelenleg 36db fül van... (esetleg ezt a későbbiekben állítani kellene, vagy tudnia kellene, hogy hány lap van összesen mert ez változó...)
Előre is köszi!!!!

-
m.zmrzlina
senior tag
válasz
Fferi50
#29440
üzenetére
Azt sikerült megállapítani, hogy a kb 50 tartományból aminek a
Set rng_Akioszt = ws_Kabelo.range(str_Akioszt & "1:" & str_Akioszt & int_usor)
sor a program futása során egy ciklus értéket ad két olyan esetben akad ki, ahol az rng_Akioszt(1,1) értéke egy 256 karakternél hosszabb karaktersorozat. Valamint bármikor reprodukálni tudom a hibát, ha bármely tartomány (1,1)-es cellájában előállítom a fenti feltételt. Gondolom itt a fv valamilyen korlátjába ütközik a feldolgozás.
Az lenne a feladat, hogy ezekben a tartományokban határozzuk meg a legkisebb és a legnagyobb értékeket amik aztán egy számlálós ciklus -tól -ig határai lesznek. Nem feltétlen ragaszkodom munkalapfüggvényes megoldáshoz, megelégszem a legegyszerűbbel is.

-
Belnir
csendes tag
válasz
poffsoft
#29468
üzenetére
Az if aktualis vizsgálat nem kell, csak fogalmam sincs, hogy mire vonatkozik...

Gyakorlatilag próbálkozom, az általatok adott kódokat fabrikáltam össze, ez működött, de nem 100%-osan. Szóval fogalmam sincs, mi a fölös sor és mi hiányzik.
plusz ha valaki több cellát módosít, töröl egyszerre, arról sincs logod sajnos igen, ez így van.
if target.count
helyett az értéket csak az 1. cellában nézd:
target(1,1).value
?
a writeline végére még beszúrnék egy lezáró "-" -t, hogy látsszon az üres érték is (ami a törlés).
Megtennéd, hogy kipucolod a szemetet és pótlod ami szükséges?
Csak még nagyobb katyvaszt csinálnék 
Köszi!

-
poffsoft
veterán
válasz
Belnir
#29454
üzenetére
az if aktualis=
vizsgàlat miért kell?
ha a ws_change eventben vagy, tuti, hogy szerkesztettek, logold.
plusz ha valaki több cellát módosít, töröl egyszerre, arról sincs logod.
esetleg az
if target.count
helyett az értéket csak az 1. cellában nézd:
target(1,1).value
?
a writeline végére még beszúrnék egy lezáró "-" -t, hogy látsszon az üres érték is (ami a törlés). -
Sziasztok!
Meg van adva 188 darab évszám, X-től Y-ig. A feladat az, hogy a megadott intervallumokon belül megszámoljuk, hány darab évszám felel meg a feltételeknek (minél egyszerűbb módszerrel). A lényeg az, hogy a Darabteli függvénnyel kell megoldani. Mutatnék egy képet róla, mire is gondolok:

Valaki tudna segíteni?
-
PETEE78
senior tag
A dir megoldotta a kérdést

Köszi mindenkinek!
mystring = Format(Now(), "yyyymmdd")
sdateform = Mid(mystring, 3)filename = Dir("X:\Kimeno\221_ALMA_20" & sdateform & "*.*")
oldPath = "X:\Kimeno\"
newPath = "C:\probakonyvtar\" & sdateform
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile oldPath & "\" & filename, newPath & "\" & filename
Set fs = Nothing -
PETEE78
senior tag
köszi mindenkinek akkor próbálgatom...

-
Fferi50
Topikgazda
válasz
PETEE78
#29457
üzenetére
Szia!
A csillag karakterrel keresésben operálhatsz.
Próbáld meg a dir() függvénnyel megnézni, hogy milyen fájlok vannak a keresett helyen:
filename= dir("221_ALMA_20" & sdateform & "*.csv")
Ide beírhatod hozzá az elérési utat is, ha szükséges.
Ha filename="" akkor nem talált olyan fájlt, ami megfelelt a keresési feltételeknek - vagy nem abban a könyvtárban kerestél, amiben a fájl van, vagy egyáltalán nincs ilyen fájl.Utána a filename értékét - ha szükséges, kiegészítve az elérési úttal - már használhatod a megnyitáshoz, mert ott már nem lesznek benne csillag karakterek, hanem konkrét fájlnevet fog tartalmazni.
Üdv.
-
PETEE78
senior tag
Sziasztok!
Hogy lehet megadni egy fájl nevét, ha csak az elejét ismerem?
Mondjuk addig, hogy: 221_ALMA_20151111........ .csv
A pontozott részen lévő karaktereket nem tudom, csak a kiterjesztést
A 151111 része napi dátum révén változik.mystring = Format(Now(), "yyyymmdd")
sdateform = Mid(mystring, 3)filename = "221_ALMA_20" & sdateform &".csv"
oldPath = "X:\BLABLA\221_A"
newPath = "C:\probakonyvtar\151111"
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile oldPath & "\" & filename, newPath & "\" & filename
Set fs = Nothing -
Belnir
csendes tag
Felmerült egy probléma. Azt vettem észre, hogy a változást csak akkor logolja, ha semmiről-valamire vagy valamiről-valamire változott az érték. Ha galád módon valaki valamiről-semmire változtat egy cellaértéket, arról nem jön létre a log-sor (magyarán szemétségből valaki töröl egy cellatartalmat, és bemószerolja a másikat).
A kód ilyen:Public aktualis
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastrow As Long
Dim akt_lap As String: akt_lap = ActiveSheet.Name
If Target.Count <> 1 Then Exit Sub
If aktualis = Target.Value Then Exit Sub
Application.ScreenUpdating = False
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Logfile = FSO.OpenTextFile("\eleresi_utvonal\log.txt", 8, True)
Logfile.WriteLine ("VÁLTOZTAT" & " - " & Format(Now, "YYYY.MM.DD hh:mm:ss") & " - " & Environ$("username") & " - " & Application.UserName & " - " & Environ$("computername") & " - " & Target.Parent.Name & " - " & Target.Address & " - " & aktualis & " - " & Target.Value)
Logfile.Close
Set Logfile = Nothing
Set FSO = Nothing
xit:
Worksheets(akt_lap).Activate
Selection.Activate
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
aktualis = ActiveCell.Value
End SubMit írjunk még bele, hogy azt is logolja?
-
csferke
senior tag
válasz
m.zmrzlina
#29451
üzenetére
Szia!
Kicsit "mélyebben" átnéztem a linket amit küldtél [link] és a következőt találtamPrivate Sub Worksheet_Change(ByVal Target As Range)
''''''''''''''''''''''''''''''''''''''''''''
' Forces text to UPPER case for the range
''''''''''''''''''''''''''''''''''''''''''''
If Target.Cells.Count > 1 Or Target.HasFormula Then Exit Sub
If Not Intersect(Target, Range("C14:J14")) Is Nothing Then
Application.EnableEvents = False
Target = UCase(Target)
Application.EnableEvents = True
End If
End SubEzzel nem kell vizsgálni a bevitt adatokat. A munkafüzetet pedig különben is xlsm-ként kell mentenem.
-
m.zmrzlina
senior tag
válasz
csferke
#29449
üzenetére
Automatikus megoldás:/munkalaphoz rendelve a makrót/
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target = UCase(Target)
Application.EnableEvents = True
End SubElőnye, hogy a begépelt szöveget <Enter>-re a kívánt formátumra állítja hátránya, hogy .xlsm-ként kell menteni a munkafüzetet.
Feltételes formázásos megoldás:


Itt a usert erőlteted hogy az általad kívánt formátumban vigye be az adatot.
Nem magamtól vagyok ilyen okos innen loptam.

-
csferke
senior tag
Sziasztok!
Egy Custom formázás kellene Excel 2007-ben. Azt szeretném, hogy a cellába írt betű, kicsi/nagy mindig nagybetűként jelenjen meg (I/N, Y/N, D/N ...).köszi
-
teve27
csendes tag
Sziasztok!
Szakértői segítségeteket szeretném kérni az alábbi ügyben:
B oszlopban az szerepel, hogy milyen rendszámú teherautó vett fel árut a C oszlopban szereplő vevő megbízásából. Amit én szeretnék, az megtudni, hogy adott vevőhöz hány darab autó rakodott. Jelen példában a Zsigulihoz két teherautó (AAA-111 és BBB-222) rakodott.
Addig már próbálkozásaim során eljutottam, hogy meg tudom az excellel számoltatni, hogy hány rendszám van az adott oszlopban, de nem sikerült sehogy sem megoldanom, hogy csak az adott vevőhöz tartozó teherautókat számolja meg.
Nagyon köszönöm a segítséget!
-
Polllen
félisten
Sziasztok!
Kellene egy kis segítség.
Van egy ~16.000 soros táblázat, amiből ki kellene törölnöm azokat a sorokat, ahol a 4. oszlopban "#N/A" szerepel. A cellák tartalma különböző.
Kipróbáltam ezt, de borzasztóan lassú:
Range("A1").Select
Selection.End(xlDown).Select
lRow = ActiveCell.Row
Do While lRow >= 1
If Cells(lRow, 4).Text = "#N/A" Then Rows(lRow).EntireRow.Delete
lRow = lRow - 1
LoopNem tudtok valami gyorsabb módszert?
B tervnek az jutott eszembe, miközben ezt leírtam, hogy úgy rendezem a táblázatot, hogy az összes "#N/A" sor kerüljön előre, ezután kap egy filter-t és úgy kitörlöm az eredményt.
Mit gondoltok?
-
Fferi50
Topikgazda
válasz
m.zmrzlina
#29441
üzenetére
Szia!
"Csak akkor miért működik n+1-szer úgy is, hogy nincs kizárva a szöveges cella?" Ezt a kérdést szerintem itt nem fogjuk tudni megválaszolni. Én max arra tudok gondolni, hogy maga a keresési tartomány esetleg valamilyen ok miatt egy cellából áll és abban nem szám van."Először a int_Mincsom, int_Maxcsom változó tipusát állítottam Variantra de nem jutottam közelebb. A leálláskor is szám (1 és 9 ami reális) volt az értéke nem pedig hiba."
Csak az a kérdés, hogy a leállás melyik sorban volt, esetleg az előző értékeket láttad még az adott változókban. Nyilván ezt mostmár nehezen fogod tudni ismételten produkálni....Üdv.
-
m.zmrzlina
senior tag
válasz
Fferi50
#29440
üzenetére
Köszi a választ. Az az érzésem, hogy hosszas hibakeresésnek nézek elébe.
Először a int_Mincsom, int_Maxcsom változó tipusát állítottam Variantra de nem jutottam közelebb. A leálláskor is szám (1 és 9 ami reális) volt az értéke nem pedig hiba.
Aztán egyszer csak elkezdett működni úgy hogy semmit nem módosítottam a kódon és most is lefut akárhányszor indítom.

Az rng_Akioszt -szerintem- létrejön. Locals ablakban látom, sőt a FormulaR1C1 tulajdonságnál látom az elemek értékeit is. Ha erre gondolsz.
Még egy adalék:
Az rng_Akioszt(1,1) értéke szöveg az összes többi szám. Ha ezt a cellát kizárom a tartományból akkor úgy tűnik lefut a makró hiba nélkül ami logikus is. Csak akkor miért működik n+1-szer úgy is, hogy nincs kizárva a szöveges cella? -
Fferi50
Topikgazda
válasz
m.zmrzlina
#29439
üzenetére
Szia!
Az "Application.WorksheetFunction.Large((rng_Akioszt), 1)" eredménye hiba akkor, ha nem tudja az adott tartományon végrehajtani a műveletet. Mivel az int_Maxcsom tipusa integer, a hiba értékét nem kapja meg, ezért fut hibára.
Oka: lehetséges, hogy az rng_Akioszt tartomány nem kapott értéket, azaz Nothing az értéke,vagy nincsenek benne adatok. Tehát azt meg kellene nézni, mielőtt a műveleteket elindítod. Vagy
Másik megoldás, hogy a Maxcsom, Mincsom változódat Variant -nak deklarálod és a művelet után megnézed, hogy hiba-e az értéke.Üdv.
-
m.zmrzlina
senior tag
Set rng_Akioszt = ws_Kabelo.range(str_Akioszt & "1:" & str_Akioszt & int_usor)
int_Maxcsom = Application.WorksheetFunction.Large((rng_Akioszt), 1)
int_Mincsom = Application.WorksheetFunction.Small((rng_Akioszt), 1)A fenti értékadást esetenként valami kiakasztja és az int_Maxcsom = stb...stb... sornál Runtime error '13': Type mismatch hibával megáll. A str_Akioszt egy sztring változó és a hiba jelentkezésekor az értéke: "k"
Most vettem csak észre, hogy a ws_Kabelo.range- ben kisbetűs a Range, mintha az excel nem értné, hogy mit akarok.

-
Chrisluke
csendes tag
Sziasztok, Excelbe szeretnék fotót beszúrni és azt szeretném ha a szöveg ami a képhez tartozik az a fotó előtt helyezkedne el. Word-ben ez megoldható Excelben azonban nem találom sehol vagy csak nem látom. Előre is köszi.
-
Vladek83
tag
Sziasztok!
Nyomtatási címek-nél "csak" a felső ismétlődő sorokat lehet megadni, alsót nem? Előre is elnézést a buta kérdésért...

üdv,
-
Delila_1
veterán
válasz
m.zmrzlina
#29429
üzenetére
Nincs mit.

-
m.zmrzlina
senior tag
válasz
Delila_1
#29427
üzenetére
Közben rájöttem (és megint tanultam valamit) hogy a rng_Dkioszt és rng_Akioszt objektumváltozó deklarálásával volt gond. Én azt gondoltam (helytelenül) ha én pl deklarálom - hogy a példáddal éljek -
Set rng_Dkioszt = Range("E2:E15")
tartományt akkor ott pl az E2 cellának a .Row tulajdonsága 1 lesz hiszen abban a tartományban az az 1. sor. Na hát ez nagyon nem így van.
Köszi a választ!
-
Fferi50
Topikgazda
válasz
m.zmrzlina
#29426
üzenetére
Szia!
A probléma igazából nem probléma (vs: az excelnek mindig igaza van
), szerintem abból adódik, hogy az rng_Tempcell.Row a cellának a munkalapon elfoglalt helyét adja vissza és nem az rng_Dkioszt tartományban elfoglalt helyét -> a két szám csak akkor ugyanaz, ha az rng_Dkioszt tartomány az első sortól kezdődik. Egyébként le kell vonni belőle a tartomány induló sorának számát.Ezen kívül van egy ilyen sorod:
If rng_Tempcell.Value = int_Csomag Then
Ami után jön a következő:
If rng_Tempcell.Value <> "" And rng_Akioszt.Cells(rng_Tempcell.Row, 1).Value = "" ThenSzerintem itt az első feltétel felesleges, hiszen az előző vizsgálatban már megállapítottad, hogy nem üres az rng_Tempcell.
Üdv.
-
Delila_1
veterán
válasz
m.zmrzlina
#29426
üzenetére
Nálad elég sok változó van, amiknek az eredete nem látható az ábrán.
A lenti makró üzenetet küld, ha a Dkioszt aktuális cellája nem üres, és nem azonos a tőle 2 oszloppal balra lévő tartomány azonos sorával.
Sub mm()
Dim rng_Dkioszt As Range, CV As Range
Set rng_Dkioszt = Range("E2:E15")
For Each CV In rng_Dkioszt
If CV.Value > "" And CV.Value <> Range(CV.Address).Offset(, -2) Then
MsgBox "Eltérés a(z) " & CV.Row & ".sorban"
End If
Next
End Sub -
m.zmrzlina
senior tag
For Each rng_Tempcell In rng_Dkioszt
If rng_Tempcell.Value = int_Csomag Then
If rng_Tempcell.Value <> "" And rng_Akioszt.Cells(rng_Tempcell.Row, 1).Value = "" Then
If Application.WorksheetFunction.CountIf(rng_Csatkimarad, ws_Kabelo.Cells(rng_Tempcell.Row, 1).Value) = 0 Then '
str_kodsor_csatlist = str_kodsor_csatlist & Trim(ws_Kabelo.Cells(rng_Tempcell.Row, 1).Value) & " + "
End If
End If
End If
Next
A fenti programrészlettől a következőket várnám:
-menjen végig az rng_Dkioszt nevű tartomány összes celláján
-ha az rng_Akioszt tartományban a vizsgált cellával azonos sorban különbözőséget talál akkor történjen valamiA probléma, hogy a
If rng_Tempcell.Value <> "" And rng_Akioszt.Cells(rng_Tempcell.Row, 1).Value = "" Then
feltételnél amikor a rng_Tempcell.Value még csak az x-dik sor értékét tartalmazza akkor a rng_Tempcell.Row már az X+1-dik sor számát tartalmazza. Másképpen ha a rng_Tempcell.Value=1 a rng_Tempcell.Row=4. Vagyis nem annak az elemnek az értékét adja vissza amit vizsgál hanem az egyel korábbit.
Mitől lehet ez?
-
bsh
addikt
válasz
Belnir
#29421
üzenetére
azért az jelentősen más, nem csak amolyan "átírjuk oszt' jóvan"

itt egy ilyen faék megoldás. az egyszerűség kedvéért a log fájlt először külön hozd létre (egy üres excel fájl) és a megfelelő elérési utat írd bele.
Private Sub Workbook_Open()
Call WriteToLog(Application.UserName, "Megnyitás")
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Call WriteToLog(Application.UserName, "Bezárás")
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Call WriteToLog(Application.UserName, Sh.Name & " változtatás")
End Sub
Private Sub WriteToLog(ByVal Who As String, ByVal What As String)
Dim NewXL As New Excel.Application
NewXL.Visible = False
Dim Log As New Excel.Workbook
Set Log = NewXL.Workbooks.Open("Z:\logfájl\elérési\útja\log.xlsx") 'A fájlt először kézzel hozd létre!
Dim LastRow As Long
LastRow = Log.ActiveSheet.Cells(Log.ActiveSheet.Rows.Count, 1).End(xlUp).Row
Log.ActiveSheet.Cells(LastRow + 1, 1) = Format(Now, "YYYY.MM.DD hh:mm:ss")
Log.ActiveSheet.Cells(LastRow + 1, 2) = Who
Log.ActiveSheet.Cells(LastRow + 1, 3) = What
Log.Save
Log.Close
Set Log = Nothing
Set NewXL = Nothing
End Sub -
sedyke
tag
Sziasztok!
Tudnátok segíteni, a tegnapi képletem egy másik verziójában?
A422:050: HORSEHAIR LARGE BLACK BRUSH (A422) Style: COL: VARIOUS / SZACC: 05.0 /
F245GW11:065: TASSEL LOAFER (F245GW11) Style: COL: BLACK CALF / SZMUK: 06.5 /Ilyen cellatartalmakból szeretném kinyerni a colourt, ami az első esetében various, a másodiknál black calf. Tehát a COL: utáni rész egészen a / jelig.
Köszönöm!!!
-
m.zmrzlina
senior tag
válasz
m.zmrzlina
#29419
üzenetére

A kérdés tárgytalan. Probléma megoldva. Főleg, hogy a kérdésben benne van a válasz is.
-
m.zmrzlina
senior tag
Tartományt szeretnék definiálni objektumváltozóként.
Ez működik:
Set ws_Csatorna = wb_SPSS_scb.Worksheets("csatorna")
Set rng_Csatkimarad = ws_Csatorna.Range("A1:A101")Ez nem:
rng_Akioszt = ws_Kabelo.Range(str_Akioszt & "2:" & str_Akioszt & int_usor)
rng_Dkioszt = ws_Kabelo.Range(str_Dkioszt & "2:" & str_Dkioszt & int_usor)Ez szintén működik:
rng_Akioszt = ws_Kabelo.Range(str_Akioszt & "2:" & str_Akioszt & int_usor).Select
rng_Dkioszt = ws_Kabelo.Range(str_Dkioszt & "2:" & str_Dkioszt & int_usor).SelectMi lehet a baj?
-
Delila_1
veterán
válasz
Márkó20
#29414
üzenetére
A Summary lap C2 képletét írom le, a többi ugyanarra a kaptafára készült.
Az INDEX függvénnyel keressük ki a megfelelő értéket. Ennek a szintaktikája
=INDEX(tartomány;sor;oszlop)A tartomány, amiben keresünk, az Outbound lap I:K oszlopa, ahol az I tartalmazza a keresett hetet, a J és K a két hozzá tartozó értéket. Másik lapon lévő tartományra úgy hivatkozunk, hogy megadjuk a lap nevét, majd felkiáltójel után a tartományt.
A sort a HOL.VAN függvénnyel keressük meg.
=HOL.VAN(keresési_érték;hol_keressük;egyezés_típusa)
Az Outbound lapon TOTAL OUTBOUND wk1 módon szerepel a hét, a Summary lapon csak 1-es számmal. Ezért a keresési_érték "TOTAL OUTBOUND wk"&$A2, vagyis a szöveghez hozzáfűzzük a hét számát tartalmazó A2 cella értékét. A hol_keressük az Outbound lap I oszlopa. Az egyezés_típus értéke itt nulla, ennek a jelentését megtalálod a súgóban.Most már tudjuk, hogy az első hét adatait az Outbound lap 17. sorában találjuk. Már csak az oszlopot kell megadni az értékek kikereséséhez.
A Summary lap C oszlopába a tartományunk (I:K) 2. oszlopának az adata kell, a D-be pedig a 3. oszlopé.Az egészet egy HAHIBA függvénybe ágyaztam be, másképp azokban a sorokban, ahol nem talál az INDEX megfelelő értéket – nincs még megadva a heti érték az Outbound lapon –, #HIÁNYZIK hibaérték jelenne meg, és ez csúnya.
=HAHIBA(érték;hiba_esetén). Itt az érték az INDEX függvény eredménye, hiba esetén nulla értéket ír be, mert azt adtuk meg. -
-
bsh
addikt
válasz
Delila_1
#29406
üzenetére
miért van annyi képlet? ezt kérdezd attól, aki a táblázatot csinálta
gondolom fogott egy képletet és autofillel lerántotta a végtelenbe és tovább, hogy "biztosamibiztos" 
de a ctrl+end az működik ezeken a táblázatokon rendesen, az utolsó értéket tartalmazó sorra (és oszlopra) ugrik, képlettől függetlenül. ezt kéne valahogy kihasználnom vba-ból.a "táblázattá alakítás" az egy teljesen másik projekt, semmi köze nincs a lastrow-os dologhoz, sőt az excelhez sincs egyáltalán semmi köze. és kimaradt egy lényeges sor a kódból, mert figyelmetlenül másoltam be:
For Y = 1 To RefDocs.Count
Call CreateRow(Y)
FrmTáblázat.Frame1.ScrollHeight = FrmTáblázat.Frame1.ScrollHeight + RowHeight
Next Y
és a rowheight az egy konstans.
de a lényeg, hogy szerintem meg van adva a userform mérete is, na.
az event kezelés csak arra kellene (de végülis nem életbevágó), hogy csak azokat az értékeket kelljen visszaírni a megfelelő ojjektumokba, amiket megváltoztat a user (vagy a makró, lehet teszek bele ilyen autocorrect funkciót). nekem annyi elég lenne, hogy ha egy (közös, many-to-one) combobox_change event lenne, ami tudná a változott "cella" nevét (amiből én tudom, hogy azt hová kell majd visszaírni) és mondjuk az adott *box .tag-jét beállítom "changed"-re, onnan már sima ügy. -
bsh
addikt
válasz
Delila_1
#29404
üzenetére
nem, azzal azzal megtalálja az utolsó értéket tartalmazó cellát a megadott oszlopban. csak ugye nem tudok egy konkrét oszlopot megadni, mert nem biztos, hogy ténylegesen mindig az az oszlop lesz a "leghosszabb".
de mondjuk az is lehet, hogy pont abban a két oszlopban amivel próbáltam, abban nem volt húszmillió képlet
-
bsh
addikt
válasz
Delila_1
#29402
üzenetére
ez nem jó, mert ha pl. képletek vannak a cellákban (de értékek nélkül), akkor azt így is beleveszi az usedrange-be.
így van a form generálva:
Load FrmTáblázat
FrmTáblázat.Frame1.Caption = "blahblahblah"
FrmTáblázat.Frame1.Left = 3
FrmTáblázat.Frame1.Top = 2
FrmTáblázat.Frame1.Width = 1100
FrmTáblázat.Frame1.Height = 20 + 20 * RowHeight
FrmTáblázat.Frame1.ScrollHeight = 7
FrmTáblázat.Height = FrmTáblázat.Frame1.Height + 70
FrmTáblázat.Width = FrmTáblázat.Frame1.Width + 10
For Y = 1 To RefDocs.Count
Call CreateRow(Y)
'itt az adatok kitöltése
Next Y
If Y < 20 Then
FrmTáblázat.Frame1.ScrollBars = fmScrollBarsNone
Else
FrmTáblázat.Frame1.ScrollBars = fmScrollBarsVertical
End If
FrmTáblázat.Show
End Subés minden sor minden egyes textboxa pedig így: (combobox tökugyanez, csak ott még a választható értékek feltöltése is benne van, +3 sor)
Private Sub CreateTextBox(ByVal Y As Integer, ByVal Name As String, ByVal L As Long, ByVal W As Long)
Set newTB = FrmTáblázat.Frame1.Controls.Add("Forms.TextBox.1", CStr(Y) & Name, False)
newTB.Width = W
newTB.Height = RowHeight
newTB.Top = (Y - 1) * RowHeight + 6
newTB.Left = L
newTB.SelectionMargin = False
newTB.AutoSize = False
newTB.Font.Name = FntName
newTB.Font.Size = FntSize
newTB.SpecialEffect = fmButtonEffectFlat
newTB.BorderStyle = fmBorderStyleSingle
newTB.Visible = True
Set newTB = Nothing
End Sub -
sedyke
tag
válasz
lenkei83
#29396
üzenetére
Lenne még valami...
Igazából az én táblázatom sokkal hosszabb mindegyik munkafüzeten, csak az egyszerűség és átláthatóság kedvéért nem küldtem el az egészet.
Van még jó pár hasonló csoportom az összesítő részen, és a 2015-ös, 2016-os lapok is sokkal hosszabbak.
Látom makroval oldottad meg a dolgot, így nem igazán tudom, hogy mit kellene tennem, ha beillesztem mindegyik alá a maradékot.
Új hozzászólás Aktív témák
- TCL LCD és LED TV-k
- Arch Linux
- Samsung Galaxy A54 - türelemjáték
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- 3D nyomtatás
- Eddigi legjobb DxOMark helyezésével zárta 2025-öt a Vivo
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Amlogic S905, S912 processzoros készülékek
- Milyen videókártyát?
- Arc Raiders
- További aktív témák...
- 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!
- Game Pass Ultimate előfizetések 1 - 36 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN! AKCIÓ!
- Vírusirtó, Antivirus, VPN kulcsok GARANCIÁVAL!
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Google Pixel 10 Pro 5G Porcelain AI-fotó varázs, Super Actua 120 Hz 128 GB
- Macbook Pro M3 Max 16" - 64 GB/4TB/ AJÁNDÉK MAGIC KEYBOARD 3/ 27% ÁFÁS!
- BESZÁMÍTÁS! ASUS TUF B550 R7 5700X 32GB DDR4 1TB SSD RX 6900XT 16GB Zalman Z10 Plus EVGA 850W
- 2026.11.13-ig Garanciális! Xbox Series S 1 TB + kontroller
- Akció! Gamer PC-Számítógép! Beszámítás! X870 /R7 7800X3D / RX 9070XT / 32GB DDR5 / 2TB SSD
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest





Pont mégegyszer ennyi azaz összesen 6 component és az adatai vannak 1 lapon.











