- Xiaomi 13 - felnőni nehéz
- Honor 200 Pro - mobilportré
- Szívós, szép és kitartó az új OnePlus óra
- Xiaomi 15 - kicsi telefon nagy energiával
- Fotók, videók mobillal
- Android alkalmazások - szoftver kibeszélő topik
- Apple iPhone 16 Pro - rutinvizsga
- Keretmentesít a Galaxy S25 FE
- iPhone topik
- Magyarországon is kapható a Moto G85 5G
-
Mobilarena
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
-
Fferi50
Topikgazda
válasz
csferke #54317 üzenetére
Szia!
Akkor próbáld ki légy szíves ezt:
Nézet - Új ablak majd az egyik ablakban Nézet - Ablak - Mozaik - a megjelenő párbeszéd ablakban bejelölöd Egymás mellett.
Így a két ablakod egymástól függetlenül fog mozogni, viszont a változtatás mindkét ablakban megjelenik. Amikor elhagyod az excelt, majd ismét visszatérsz, akkor a Nézet menüben a Ablakváltással tudod mindkét ablakot ismét megjeleníteni.
Üdv. -
Fferi50
Topikgazda
válasz
csferke #48439 üzenetére
Szia!
Az If után használd az Application.InputBox metódust, ami ellenőrzi is, hogy szám van-e beírva.
[Itt találsz helpet a használatához.]
Üdv. -
Delila_1
veterán
válasz
csferke #47944 üzenetére
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lapnev As String
If Target.Address = "$B$3" Then
Application.EnableEvents = False
lapnev = "Állandó " & Range("L1")
Sheets(lapnev).Name = "Állandó " & Range("B3")
Range("L1") = Range("B3")
Application.EnableEvents = True
End If
End Sub
Első futtatás előtt írd be az L1-be az állandó szöveg utáni részt.
-
Fferi50
Topikgazda
válasz
csferke #46951 üzenetére
Szia!
Csak nagyon csendben jegyzem meg, ha korábban pontosan mutattad volna a P4 cella képletét, akkor biztos hamarabb kaptál volna megoldást. Mert így csak találgattunk a Vlookup eredményét - illetve a cella eredményét - tekintve.
Arról pedig nem volt szó egyáltalán, hogy találat hiány nem fordulhat elő, az utolsó képleted ugyanis erre utal, hiszen nincs benne a hibalehetőség kezelése. (Mint már többen megjegyeztük, a függvény találat hiány esetén hibát ad vissza eredményként.)
Ezért én módosítanám a függvényedet:IF(ISERROR(VLOOKUP(I5;Vevok!A:Q;17;0));"";VLOOKUP(I5;Vevok!A:Q;17;0))
Ez hiba esetén üres cellát eredményez, amire működik a feltételes formázás.
Üdv. -
Fferi50
Topikgazda
válasz
csferke #46946 üzenetére
Szia!
A képlet nem azt vizsgálja, hogy üres-e a cella, hanem azt, hogy hiba-e az eredmény.
A lépések - sajnos csak magyar Excelem van, de talán értelmezhető angolban is:
Kijelölöd a P4 cellát
1. Kezdőlap - feltételes formázás
2.Új szabály
3.A formázandó cellák kijelölése képlettel:
A képlet:=NOT(ISERROR($P$4))
(Ezt tudom angolul).
Beállítod a formát és OK.
Bocs a szájbarágós magyarázatért.
Talán az lehet a probléma, hogy nem abszolút (dolláros) címet adtál meg a képletben.
Üdv. -
lappy
őstag
-
Fferi50
Topikgazda
válasz
csferke #46192 üzenetére
Szia!
Azért ez nem ennyire egyszerű.
A formoknak külön kódlapjuk van, ahova eseménykezelőket és normál eljárásokat is be lehet illeszteni. Ahhoz, hogy a megfelelő helyre kerüljön az adat, nem a formot kell pozicionálni.
A form sem a kiválasztott (selected) cellánál fog megjelenni.
A form pozicionálásra két lehetőség is van:
a.) az Activate eseménykezelőben direktben megadhatod a Top és Left paraméterekkel, hogy hol jelenjen meg a képernyőn. Ugyanitt a Height és a Width paraméterekkel megadhatod a méreteit is.
b.) a form Move tulajdonságát használva szintén meghatározhatod a helyzetét és a méretét a program futása közben is.
FONTOS: a méretek képpontban vannak meghatározva és a képernyő bal felső széle a 0,0 koordináta. Ezt kell figyelembe venned, amikor meghatározod a megjelenés helyét.
Pl. az alábbi eseménykezelők a form kódlapján:Private Sub UserForm_Activate()
With Me
.Top = Range("N1").Top + 10
.Left = Range("N1").Left
End With
End Sub
Ez az N1 cella pozíciójának megfelelően, de a képernyő felső széléhez nagyon közel jeleníti meg a formot - mivel az első sor top pozíció értéke 0.Private Sub UserForm_Click()
With Me
.Move 100, 120, 400, 300
End With
End Sub
Ez a formra kattintáskor áthelyezi a formot a 100,120 kezdőpontra és átméretezi.
Kis gyakorlással el fogod tudni helyezni a formokat a számodra megfelelő helyen.
A formon bevitt értékek elhelyezésére külön eljárásokat kell írni - ami lehet eseménykezelő vagy normál eljárás.
Pl.Private Sub TextBox1_Change()
Range("A1").Value = Me.TextBox1.Text
End Sub
A Textbox1 változásakor az értéket beírja az A1 cellába.
Üdv. -
-
Lasersailing
senior tag
-
Mutt
senior tag
válasz
csferke #44210 üzenetére
Szia,
A Beviteli formon csak AC listából választasz, vagy van ott még több dolog is?
1. Ha nem, akkor jobb megoldás az Adatérvényesítés opciót használni.
2. Ha igen, akkor kell egy szövegdoboz a formra, ahova tudja a felhasználó a szöveget gépelni és ezek után lehet visszamenteni az összefúzött szöveget a lapra.üdv
-
Fferi50
Topikgazda
válasz
csferke #44210 üzenetére
Szia!
"Az AC1:AC12 listából egy Form-al kérném az adatot BeviteliForm.Show de így mindjárt beírja a kiválasztott fix részt és nem tudok hozzáírni."
Ezt megcsinálod a mutatott makrórészlet előtt, majd jöhet amit mutattál. Ezzel a cella értéke a kiválasztott lesz - mivel pedig ezt használod Defaultként, az Inputboxban hozzá tudod írni a szükséges részt.
Üdv. -
Mutt
senior tag
válasz
csferke #44196 üzenetére
Szia,
Plusz információt az InputBox, vagy jobb az Application.InbutBox metódussal tudsz bekérni. Az utóbbinál megadhatod, hogy milyen információt fogadjon el, pl. csak számokat, csak tartományt stb. A Type:=2 azt jelenti, hogy szöveget vár.
Ezek után tudod használni a munkalap Change eseménykezelőjét:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngValidation As Range
Dim szoveg
'ezen a területen van az adatérvényesítés
Set rngValidation = Range("A2:A5")
'a kód csak akkor fusson le, ha az adatérvényesítés területén módosítunk
If Not Intersect(Target, rngValidation) Is Nothing Then
'kikapcsoljuk az eseménykezelõt, így amikor módosítunk a területen
'nem fogja elindítani magát a kód újból
Application.EnableEvents = False
'kérjünk be vmilyen szöveget
szoveg = Application.InputBox("Szöveg", Title:="Infomáció", Type:=2)
'ha NEM nyomtak Mégsem-et, akkor füzzük a cella tartalmához a szöveget
If szoveg <> vbFalse Then
Target = Target & " " & szoveg
End If
'eseményeket mostantól újra nézzük
Application.EnableEvents = True
End If
End Subüdv
-
Nixon18
senior tag
válasz
csferke #43812 üzenetére
Köszönöm szépen! Így valóban működik.
Még lenne egy kérdésem. Ha van két táblázatom, amihez van két legördülő listát tartalmazó cella. Az egyikben mértékegységek a másikban Ft/mértékegységek vannak.
Hogyan lehet azt megoldani, hogyha az első legördülő listából kiválasztok egy mértékegységet, két cellával arréb beírja automatikusan a hozzá tartozó Ft/mértékegységet? -
Fferi50
Topikgazda
válasz
csferke #42129 üzenetére
Szia!
Azt gondolom én is, hogy akkor két pivot kell, az egyik legyen a diagram forrása, a másik pedig az összeg szemléltetése.
Esetleg még lehetne olyan az összeg szerintiben, hogy egy határ alatt összevonni a cégeket egyéb címszó alatt és az egyéb kategóriát külön kibontani - van ilyen kördiagram fajta.
Üdv. -
Fferi50
Topikgazda
válasz
csferke #41888 üzenetére
Szia!
Feltételes formázás - cellák formázása képlettel : =hossz($d2)<8 - formátum kitöltés piros.
Másik javaslat: ha lehet segédoszlopot csinálni, akkor a segédoszlop képlete:=Jobb("00000000" & $D2;8)
Utána segédoszlop kijelölés - másolás - irányított beillesztés értéket a segédoszlopra, majd ugyanez az eredeti oszlopra - segédoszlop törlése.
Feltételeztem, hogy a D oszlopban vannak az értékeid.
(a számhibás nyilacska feltételezhetően ottmarad)
Üdv. -
Fferi50
Topikgazda
válasz
csferke #41865 üzenetére
Szia!
Ha szeretnéd látni a 0-ákat a számjegyek előtt, akkor szerintem a megoldás:
Azt az oszlopot, ahová bekerülnek a számaid, szövegformátumúvá alakítod.
A Paste - nál szokott lenni ilyen opció, hogy célformátumnak megfelelően, válaszd ezt és akkor maradnak a számok a 0-val együtt.
Ha nem akarod a 0-t látni, akkor kijelölöd az oszlopot, Adatok - Szövegből oszlopok - a 3. lépésben az Általánost hagyod meg és helyben Befejezés.
Üdv.
Ps. Mert az nem világos, hogy látni szeretnéd vagy elhagyni a vezető 0-t. -
-
Delila_1
veterán
válasz
csferke #41861 üzenetére
Ahogy Fferi írta, csak makróval indíthatod a hangfájlt. A feltételes formázás is Fferi ajánlata szerint legyen.
Az N2 képlete legyen
=HA(FKERES(I5;Kupci!A1:N14;14;0)="";"";FKERES(I5;Kupci!A1:N14;14;0))
mert másképp üres cella találatánál nulla értéket ad.A laphoz (amelyiken a képlet van) rendeld a makrót.
Private Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000
Private Sub Worksheet_Change(ByVal Target As Range)
Dim utvonal As String, WAVfile As String
If Target.Address = "$I$5" Then
If Len(Range("N23")) = 0 Then
utvonal = "F:\Wav" '*** saját útvonalad
WAVfile = utvonal & "\" & "Bimm_bamm.wav" '*** saját hangfájlod
Call PlaySound(WAVfile, 0&, SND_SYNC Or SND_FILENAME)
End If
End If
End Sub
-
Fferi50
Topikgazda
válasz
csferke #41861 üzenetére
Szia!
1. Amennyiben nincs a keresésnek eredménye, akkor #N/A hibaüzenet kerül az N23 cellába, tehát nem lesz "üres". Ezért ezt kell figyelembe venni a színezésnél.
Hangjelzést nem tudsz makró nélkül adni szerintem, de a színezés feltételes formázással megoldható: cellák kijelölése képlettel, a képlet pedig: =ISERROR(N23) -- érvényessége az N23 cella - kitöltőszín piros vagy amilyet szeretnél. Azután, hogy az adat bekerül a megfelelő helyre, a feltételes formázás miatt a színezés "magától eltűnik".
2. Ebben az esetben a cellaformátumot szövegre kell állítanod és úgy bevinni a számokat.
Ha csak egy-két 0-val kezdődő számod van, akkor az adott cellába állva a szám elé aposztrófot ( ' ) téve szövegként fogja értelmezni az Excel.Üdv.
-
Fferi50
Topikgazda
-
ny.janos
tag
válasz
csferke #40137 üzenetére
Szia!
Időpont esetén az excel a 24 órát értelmezi 1-ként, minden ennél kisebb időérték egy egynél kisebb törtszám. Mivel 1 napban 1440 perc van (24*60), ezért a 45 percet 45/1440 törttel tudod megadni (a tizedesérték használata kerülendő, mert az nem pontos).
Vagyis a 45:00 helyére mindenütt
45/1440
-et írj. -
Mutt
senior tag
válasz
csferke #39936 üzenetére
Szia,
1. ...Enter után ... szeretném ha balra lépne vagy ha ezt nem lehet akkor sehova se lépjen.
Nincs ilyen beállítás, jobbra TAB-ot nyomva tudsz lépni, balra SHIFT+TAB.
Talán Script-el ez lehet a megoldás (NEM TESZTELTEM!):function onEdit(e) {
var range = e.range;
if (e.range.getColumn() > 1){
range.getActiveCell().offset(0,-1).activate();
}
}2. Ne jelenítse meg a 0-át (nulla) ha a számítás eredménye nulla.
Egyéni számformátumot használj. Formázás -> Szám -> További formátumok -> Egyéni számformátum -ba írd be ezt:#0.00;-#0.00;;@
Ugyanazt a logikát használja mint az Excel, vagyis formátum 4 részből (3-ból ha feltéleket is megadsz) állhat: pozítv számok, negatív számok, nulla, szöveg.
üdv
-
ny.janos
tag
válasz
csferke #39297 üzenetére
Pedig a függvény jó, amit Delila_1 írt. Az angolra fordításod viszont nem jó. Helyesen:
=YEAR(J1)<=YEAR(TODAY())-10
A J oszlopot kijelölöd addig, amíg adataid vannak, majd alkalmazod a feltételes formázásra a képletet. Arra figyelj, hogy ha van címsorod az első sorban, akkor a képletben a J1 helyére az első dátumot tartalmazó cella hivatkozását írd. -
Fferi50
Topikgazda
válasz
csferke #39121 üzenetére
Szia!
Úgy látszik, nagyon korán volt még az előbb....
Természetesen a B oszlop helyett az E oszlopot kell nézni:
=IF(SUM((MONTH('Pk2'!A$5:A500)=D74*1)*('Pk2'!D$5:D500)*('Pk2'!E$5:E500="b"))=0;"";SUM((MONTH('Pk2'!A$5:A500)=D74*1)*('Pk2'!D$5:D500)*('Pk2'!E$5:E500="b")))
Üdv.
-
Mutt
senior tag
válasz
csferke #39121 üzenetére
Szia,
..PK2 munkalap E oszlopában a "b" betű..
1. Ha a cella csak "b"-t tartalmaz (kis és nagybetű számít), akkor
=IF(SUM((MONTH('Pk2'!A$5:A500)=D74*1)*('Pk2'!D$5:D500)*(Pk2'!E$5:E500="b"))=0;"";SUM((MONTH('Pk2'!A$5:A500)=D74*1)*('Pk2'!D$5:D500)*(Pk2'!E$5:E500="b")))
Ezt Ctrl-Shift-Enter-el kell majd bevinni.
SUMPRODUCT esetén nem kell CSE:
=SUMPRODUCT((MONTH('Pk2'!A$5:A500)=D74*1)*('Pk2'!D$5:D500)*('Pk2'!E$5:E500="b"))
2. Ha a cella tartalmazza a "b" betűt (pl. abrakadabra), akkor
=IF(SUM((MONTH('Pk2'!A$5:A500)=D74*1)*('Pk2'!D$5:D500)*ISNUMBER(FIND("b";'Pk2'!E$5:E500)))=0;"";SUM((MONTH('Pk2'!A$5:A500)=D74*1)*('Pk2'!D$5:D500)*ISNUMBER(FIND("b";'Pk2'!E$5:E500))))
SUMPRODUCT-al:
=SUMPRODUCT((MONTH('Pk2'!A$5:A500)=D74*1)*('Pk2'!D$5:D500)*ISNUMBER(FIND("b";'Pk2'!E$5:E500)))
3. Ha a cella tartalmazza a "b" vagy "B" betűt, akkor a FIND-ot SEARCH-re kell cserélni.
Végül pedig a cella számformátumával el tudod rejteni a nulla értékét, így nem kell kétszer lefuttatni a tömbképletet. pl. a
# ##0,00;-# ##0,00;;@
számformátum, 2 tizedes értékkel megjeleníti a számokat, de a nullát üres cellának fogja mutatni.üdv
-
-
Fferi50
Topikgazda
válasz
csferke #38812 üzenetére
Szia!
Mert a makróban nem hivatkozhatsz így egy cellára.
Továbbá a TEXT függvény munkalap függvény ezért meg kell ezt is mondani neki. Ráadásul a makróban vessző a paraméter elválasztó és nem pontosvessző.fName=YEAR(Range("A3").Value) & "-" & Application.Worksheetfunction.TEXT(MONTH(Range("A3").Value),"0#")
Ennyike.
Üdv.
-
Mutt
senior tag
válasz
csferke #38209 üzenetére
Szia,
Megelőztek...
Egy DO-LOOP ciklusban addig pörgünk amíg jó a bevitt érték vagy mégsem-et nem nyomnak.
A nagybetűsítésnél pedig engedékenyek vagyunk; ha vmiért jó karaktert kisbetűvel írták akkor is elfogadjuk de már nagybetűvel mentjük el.Sub bevitel()
Dim xpos, ypos, Prompt, Title, Default, MyValue
Dim correct As Boolean
Prompt = ""
Title = "ADATBEVITEL"
xpos = 5000
ypos = 5800
ActiveCell.Offset(0, 1).Select
Default = ""
Prompt = "Pesticid felhasználhatósága" + (Chr(13)) + (Chr(13)) + "H - RR - F - I - A - R - L - N - O"
Do
MyValue = Application.InputBox(Prompt, Title, Default, xpos, ypos, Type:=2)
Select Case UCase(MyValue)
Case "H", "RR", "F", "I", "A", "R", "L", "N", "O"
correct = True
ActiveCell = UCase(MyValue)
Case Else
correct = False
End Select
Loop Until correct Or MyValue = False
End SubFferivel egyetértve a legegyszerűbb megoldás a data validation (érvényesítés), mert ahhoz nem kell makrót írni.
üdv
-
Fferi50
Topikgazda
válasz
csferke #38209 üzenetére
Szia!
Egyrészt miért kellene ehhez külön form,
Másrészt természetesen makróban is megoldható a bevitel vizsgálata:
Beírás előtt megnézed, hogy az érték megfelelő-e. Ha nem, akkor ismét bevitel szükséges.
Viszont ehhez ciklusba kell tenni a bevitelt:Do While True
Prompt = "Pesticid felhasználhatósága" + (Chr(13)) + (Chr(13)) + "H - RR - F - I - A - R - L - N - O"
MyValue = InputBox(Prompt, Title, Default, xpos, ypos)
Select Case myValue
Case "H", "RR", "F", "I", "A", "R", "L", "N", "O"
ActiveCell.Value = myValue
Exit Do
Case Else
MsgBox "nem ok"
End Select
LoopÜdv.
-
Mutt
senior tag
válasz
csferke #38135 üzenetére
Szia,
Ha a cellában Data Validation-t (Érvényesítés) akarsz használni, akkor kell egy segédoszlop ahol összefűzöd az A-B-C oszlopokat (pl.
=A2&" - "&B2&" - "&C2
) és ezt a tartományt adod meg az érvényesítésnél.Az ActiveX vezérlők közül a Combo box képes több oszlopos listát is kezelni, de ennek a használata már macerásabb lesz. Leírás róla itten.
üdv
-
Pakliman
tag
válasz
csferke #36925 üzenetére
Hali!
Réges-régen nekem is voltak gondjaim ezzel a CHDIR-es dologgal, úgyhogy hanyagolom azóta.
Ez egyébként is egy "DOS-os" dolog, akkor használd, ha nosztalgiázni van kedved
Bármit is szeretnél azokkal a mappákkal/fájlokkal, másképp sokkal egyszerűbben meg tudod oldani.
Pl.: munkafüzet megnyitása aWorkbooks.Open
-el, mentése aWorkbooks.Save/Workbooks.SaveAs
-el, "szöveges" fájlok olvasása/írása azOpen myFile For Input/Output/Append As #1
módszerrel, vagy a kicsit "bonyolultabb"Scripting.FileSystemObject
-el, stb.De ha mégis inkább CHDIR, akkor:
(Hibakereséshez egy kicsit átalakítva a Tied)Sub utvonal()
Dim PathName As String
Dim PathFull As String
PathName = Left((ActiveWorkbook.Name), (Len((ActiveWorkbook.Name)) - 5))
PathFull = "g:\Google Drive\TRANSPORT\" & PathName
Debug.Print PathFull
Debug.Print ActiveWorkbook.Path
Debug.Print "Egyezés: " & PathFull = ActiveWorkbook.Path
MsgBox PathName
ChDrive "G"
ChDir PathFull
MsgBox ActiveWorkbook.Path
End Sub -
Fferi50
Topikgazda
válasz
csferke #36923 üzenetére
Szia!
Akkor félreértettem...
A formula, amit írtál rendben van.
Biztosan van olyan mappa, amibe ki akarod íratni a tételeket? Ha nincs, mkdir paranccsal létrehozhatod.
De a kiíráshoz is elég az elérési úttal megadott fájlnév - persze az elérési út legyen az, ahova ki szeretnéd íratni.Üdv.
-
Fferi50
Topikgazda
válasz
csferke #36921 üzenetére
Szia!
1.A modul elején - az eljárásokon kívül - kell deklarálni a Public változót:
Public PathName As String
űA makrókban pedig Modulnév.PathName formátumban kell hivatkozni rá - más modulokban levő eljárások is látják ebben a formában hivatkozva.
2.Ha az elérési utat szeretnéd megkapni, akkor a Workbook.Path tulajdonságát kell lekérdezned - vagy a FullName tulajdonságot - ebből viszont le kell csípni a Nevét.Az hogy angol az Excel, a VBA-t nem befolyásolja, nemzetközi módon egyformán kell kódolni minden verzióban.
Üdv.
-
Fferi50
Topikgazda
válasz
csferke #35870 üzenetére
Szia!
A Name, illetve a FullName tulajdonságot kell használni.
Az aktív munkafüzet neve: nev=ActiveWorkbook.Name
elérési úttal: teljesnev=ActiveWorkbook.FullName
Ha nem tudod, hogy melyik munkafüzetről van szó és keresed azt, ami neked kell, akkor a WorkBooks gyűjtemény tud segíteni:
For Each wb in WorkBooks
neve = wb.Name
if neve="neked kell" Then Exit For
Next
Vagy
For i=1 to WorkBooks.Count
neve=WorkBooks(i).Name
if neve="neked kell" Then Exit For
Next
Üdv. -
Fferi50
Topikgazda
-
Delila_1
veterán
válasz
csferke #35345 üzenetére
Sajnos csak vízszintesen oldható meg ilyen módon.
Függőlegesen a képen látható területnek fehér hátteret adtam, hogy ne legyenek láthatóak a cellarácsok, majd körbe kereteztem.
Látható, hogy a keretezett rész különálló cellákból tevődik össze, 1-re külön rá tudtam állni.
-
Fferi50
Topikgazda
válasz
csferke #35236 üzenetére
Szia!
Csak két apróság:
"Dim Prompt, Title, Default, MyValue"
Ez a sor mindhárom változódat Variantnak definiálja (ami persze kényelmes, de nem gazdaságos memória használat és nem ad típus ellenőrzési lehetőséget.
Prompt = "1.sor szöveg" + (Chr(13)) + "2.sor szöveg"A szövegek összefűzésénél a + helyett ajánlatos a & műveleti jel használata, Chr függvényt nem kell zárójelbe tenni.
xpos, ypos elképzelhető az is, hogy túlcsordul.
A segítséghez fontos lenne a hibaüzenetet is imerni.
Üdv.
-
sztanozs
veterán
válasz
csferke #35236 üzenetére
Nekem 2013-am van és hiba nélkül végrehajtja ezt az utasítást (Prompt = ...).
Ahogy nézem a library nincs meg a gépen, vagy nincs behivatkozva:
"Visual Basic for Applications"xpos, ypos - nem lehet, hogy option explicit van a kód elején és nincs inicializálva (vagy esetleg nem nem jó a tipus?)
Ezt találtam még:
Office 2013 változásokElképzelhető, hogy 64-bites Office van fenn, és emiatt vannak problémák.
-
Delila_1
veterán
-
Fferi50
Topikgazda
válasz
csferke #35014 üzenetére
Szia!
A problémát az okozza, hogy a modul neve és a makró neve is ugyanaz. Most kipróbáltam. Ha a modult nevezem át előbb és utána írok bele ugyanolyan nevű makrót, akkor a makróablakban teljes névvel jelenik meg. Amikor előbb írom meg a makrót és utána nevezem át ugyanazon névre a modult, akkor a makró ablakban a rövid név látható. DE csak addig, amíg újabb modult nem adok hozzá. Ha bezárom a fájlt és újranyitom, akkor is a hosszú nevét látom.
A VBA-ban nem tiltott a rendszer által "foglalt" nevek használata, de ebben az esetben pontosan meg kell mondani (akár hosszú névvel is), hogy rendszer dologra, vagy saját - azonos nevű - dologra hivatkozunk.Tehát esetedben a teendő: átnevezni vagy a makrót, vagy a modult.
Üdv..
-
Fferi50
Topikgazda
válasz
csferke #35012 üzenetére
Szia!
Szerintem azért van így, mert 2 munkafüzet és 2 projekt van nyitva. A rövidebb elnevezés az éppen aktuális projektben (aktív munkafüzetben) levő makrókat "illeti", a hosszabb - a munkafüzet ill. project nevével "kibővített", teljes név pedig a másikban levőt.
Hivatkozni és elindítani a nem aktív munkafüzetben levő makrót csak teljes névvel lehet. Ez rendszerszintű szabály.
Sőt, osztálymodulban levő makrót csak az osztálymodul nevével kibővítve tudsz elindítani az aktív munkafüzetben is.
Ez a szabály érvényes a változókra is.
Több információért nézd át lsz. a változók deklarálása és élettartama fejezetet, illetve a makrók meghívása, futtatása részt a HELP-ben.Üdv.
-
Delila_1
veterán
válasz
csferke #34872 üzenetére
Szóval a B oszlopban választasz ki egy cellát. Ez a kezdősor. A végző sor a kezdő + 16. Összegezni a Ckezdő:Dvégző tartományt kell, és ennek az összegnek a 17-ed része az eredmény.
A makró bekéri a kezdősort úgy, hogy rákattintasz a cellára, majd a G1-be beírja az eredményt.
Ha a Bvégvő cella üres, hibát jelez.Sub mm()
Dim sorK, sorV As Integer, osszeg As Double
Set sorK = Application.InputBox(prompt:="Kérem a kezdő sort", Type:=8)
sorK = sorK.Row
sorV = sorK + 16
If Cells(sorV, "B") <> "" Then
osszeg = Application.WorksheetFunction.Sum(Range("C" & sorK & ":D" & sorV)) / 17
Range("G1") = osszeg
Else: MsgBox "Hiba"
End If
End Sub -
Delila_1
veterán
válasz
csferke #34864 üzenetére
A becsúszott smiley miatt nem tudom, melyik oszlop adatait kell összegezned, és hova akarod az eredményt írni.
A makró a B oszlop adatait összegzi, és osztja 17-tel, az eredményt a C1-be írja.Sub ido()
Dim sorK As Integer, sorV As Integer
Dim osszeg As Double
sorK = Selection.Row
sorV = sorK + 16
If Cells(sorV, "B") = "" Then Exit Sub
osszeg = Application.WorksheetFunction.Sum(Range("B" & sorK & ":B" & sorV)) / 17
Range("C1") = osszeg
End SubEgyszerűbben az osszeg meghatározása:
osszeg = Application.WorksheetFunction.Average(Range("B" & sorK & ":B" & sorV))
Új hozzászólás Aktív témák
Hirdetés
- Gyermek PC játékok
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- ROBUX ÁRON ALUL - VÁSÁROLJ ROBLOX ROBUXOT MÉG MA, ELKÉPESZTŐ KEDVEZMÉNNYEL (Bármilyen platformra)
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Csere-Beszámítás! Asus Tuf RTX 5070Ti 16GB GDDR7 Videokártya! Bemutató darab!
- HP Laptop 15-fc0026nh (AY7E1EA)
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- VÉGKIÁRUSÍTÁS - REFURBISHED - Lenovo ThinkPad 40A9 docking station
- Nike Airmax 720 43-as sneaker eladó
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest