- Azonnali informatikai kérdések órája
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Vezeték nélküli fejhallgatók
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- Hővezető paszták
- LG C4 tévé, a népszerű OLED-sorozat legfrissebb tagja
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Gaming notebook topik
- Milyen videókártyát?
- Projektor topic
Hirdetés
-
Konzolokra is megjelenik a The Glass Staircase
gp Alig néhány nap múlva PlayStationre, Xbox-ra és Nintendo Switch-re is elérhető lesz a program.
-
Négy játékkal is szemez az új Arc meghajtó
ph A 31.0.101.5522-es, WHQL aláírással rendelkező csomag egy hibát is javít
-
Elcsípte a Huawei kameratelefonja az első helyet
ma A Pura 70 Ultra a DxOMarknál tarolt.
-
PROHARDVER!
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
-
m.zmrzlina
senior tag
válasz pirit28 #29300 üzenetére
Nem derült ki a kérdésből, hogy melyik cella tartalmát kell módosítania a képletnek ezért én a D11-es cellára írtam meg a makrót.
Próbáld ki jól fejtettem-e vissza a képletet!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("C11").Value = "" Then
Range("D11").Value = ""
ElseIf Range("C11").Value = "*hatroff*" Or Range("C11").Value = "*Győr*" Or Range("C11").Value = "*(OE)*" Then
Range("D11").Value = "OE"
ElseIf Range("C11").Value = "*WH*" Or Range("C11").Value = "*W/H*" Then
Range("D11").Value = "W/H"
Else
Range("D11").Value = "DFC"
End If
End SubA második ág ahogy látod nem teljes, ha így azt csinálja amit szeretnél akkor ki lehet egészíteni.
[ Szerkesztve ]
-
Fferi50
őstag
válasz pirit28 #29300 üzenetére
Szia!
Mivel jelen esetben egyetlen cella tartalmát vizsgálod, továbbá a countif csak azt mondja meg, hogy a cellában van olyan érték (lehet, hogy több is, de ezt nem tudja megmondani!!!), ezért én a sok countif helyett a like operátort javasolnám:
if range("C11").value="" then range("D11").value=""
else
if hattorf,Győr,Ford,Pors" like "*" & range("C11").value & "*" then ' a felsorolást természetesen ki kell egészíteni - igaz, ha a c11 cella értéke valahol előfordul a megadott szövegben
range("D11").value="OE"
else
endif
endifAz else ágakat az előttem szóló alapján alakíthatod ki.
Üdv.
[ Szerkesztve ]
-
pirit28
csendes tag
válasz m.zmrzlina #29302 üzenetére
Sziasztok !
Mindkettőtöknek köszönöm a fáradozását,de most verem a fejem a falba,mert rosszul tettem fel a kérdést.
Tehát van a C oszlopom 11-es cellától lefelé,amely cellákban előfordulhatnak a fent említett helyiségek.
Ha pl a C15-ös cellában levő szövegben szerepel az OE szó akkor a D15-ös cellába írja be hogy OE,
és így tovább.A jelen probléma az az ,hogy mindig kitörli valaki a függvényt és mindig újra kell gyártani.Ezért gondoltam ,hogyha valami nem látszik azt nem tudják törölni.Köszönöm
-
m.zmrzlina
senior tag
válasz pirit28 #29304 üzenetére
Ahhoz munkalaphoz rendeld amin az adataid vannak!
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
If Target.Value = "" Then
Target.Offset(0, 1).Value = ""
ElseIf Target.Value = "*hatroff*" Or Target.Value = "*Győr*" Or Target.Value = "*(OE)*" _
Or Target.Value = "*Ford*" Or Target.Value = "*Pors*" Or Target.Value = "*BMW*" _
Or Target.Value = "*AUDI*" Or Target.Value = "*hmmc*" Or Target.Value = "*kms*" _
Or Target.Value = "*Sassenburg*" Or Target.Value = "*Figueruelas*" Or Target.Value = "*Grossmehring*" _
Or Target.Value = "*Sindelfingen*" Or Target.Value = "*Bremen*" Or Target.Value = "*Koeln*" _
Or Target.Value = "*Voelklingen*" Or Target.Value = "*Seat*" Or Target.Value = "*emden*" _
Or Target.Value = "*Genk*" Or Target.Value = "*Daventry*" Or Target.Value = "*VW*" _
Or Target.Value = "*Benz*" Or Target.Value = "*Swarzedz*" Or Target.Value = "*Hannover*" Then
Target.Offset(0, 1).Value = "OE"
ElseIf Target.Value = "*WH*" Or Target.Value = "*W/H*" Then
Target.Offset(0, 1).Value = "W/H"
Else
Target.Offset(0, 1).Value = "DFC"
End If
End If
End Sub -
Fferi50
őstag
válasz pirit28 #29304 üzenetére
Szia!
Ezt a makrót beteszed egy modul lapra (de akár az adott munkalap kódlapjára is teheted), majd elindítod. Persze tetszés szerint átnevezheted.
A makró végigmegy a C oszlopon az utolsó nem üres celláig és beírja a C oszlopban levő érték alapján a D oszlopba a kívánt értéket (ez utóbbit csak remélem, hogy eltaláltam).
Annyiszor futtatod, ahányszor akarod, mindig újraírja a D oszlop celláit az aktuális C oszlop szerint.Sub kitalalo()
Const oes = "hattorf,Győr,Ford,Pors,BMW,AUDI,hmmc,kms,Sassenburg,Figueruelas,Grossmehring,Sindelfingen,Bremen,Koeln,Voelklingen,Seat,emden,Genk,Daventry,VW,BENZ,Swarzedz,Hannover,(OE)"
Const whs = "WH,W/H"
Dim beir As String, cl As Range
For Each cl In Range("C11:C" & Cells(Rows.Count, "C").End(xlUp).Row).Cells
If cl.Value = "" Then
beir = ""
Else
If oes Like "*" & cl.Value & "*" Then
beir = "OE"
Else
If whs Like "*cl.value" & "*" Then
beir = "W/H"
Else
beir = "DFC"
End If
End If
End If
cl.Offset(0, 1).Value = beir
Next
End SubÜdv.
-
Delila_1
Topikgazda
válasz m.zmrzlina #29311 üzenetére
Ilyesmire gondolsz?
sor = 46
Do While Cells(sor, "C") <> ""
If Cells(sor, "D") = "i" Then
Cells(sor, "F") = "aq"
Else
Cells(sor, "F") = "ap"
End If
sor = sor + 1
LoopVagy
sor = 46
Do While Cells(sor, "C") <> ""
Select Case Cells(sor, "D")
Case "e"
Cells(sor, "F") = ""
Case "i"
Cells(sor, "f") = "ap"
Case Else
Cells(sor, "F") = "aq"
End Select
sor = sor + 1
Loop[ 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.
-
-
Delila_1
Topikgazda
válasz m.zmrzlina #29313 üzenetére
A for-next és a for each-next ciklusnál a program gondoskodik a változó értékének növeléséről (elsőnél esetleg csökkentéséről negatív lépésszámnál), a do-loop-nál neked kell gondoskodni erről.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Kapanyél
őstag
Sziasztok!
2013-as magyar Excelben be lehet valahogyan állítani, hogy az Autokitöltés alapértelmezetten csak képletet adjon, ne formázzon? Tehát ha lehúzom az első sort, ne rongálja meg a többi szegélyt, színt, stb...
Illetve hasonlóképpen érdekel, hogy kiválasztható-e alapértelmezett beillesztési mód? Legtöbbször csak értékként teszek át másik cellákból, jó volna megspórolni a jobbklikk-123 mozdulatot.
Előre is köszönöm a válaszokat!
Hús vagyook, hús, hús, hús, hús, húús!
-
Delila_1
Topikgazda
válasz Kapanyél #29317 üzenetére
Nekem is sűrűn van szükségem az érték beillesztésére. Ezért a personalomba tettem egy nyúlfarknyi makrót.
Sub Ertek_beillesztese()
'Billentyűparancs: Ctrl+e
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End SubA makróhoz a Ctrl+e billentyűkódot rendeltem, mint a megjegyzés sorban láthatod.
Működése: kijelölöm a másolandó területet, Ctrl+c-vel másolom, kijelölöm a területet, ahova be akarom illeszteni, Ctrl+e-vel már kész is van.A personalra keress rá itt a fórumon, sokszor volt már szó róla, pl. itt. Ez még a 2007 előtti verzióhoz készült personal.xls leírása, de csak annyi a különbség, hogy a Fejlesztőeszközök | Kód csoport | Makró rögzítése menüponttal kell indulnod, és a létrehozott personal kiterjesztése xlsb lesz.
Az Excel minden indításakor megnyitja a personalt a háttérben, a benne található makrók minden füzetedben alkalmazhatóak.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
bsh
őstag
üdv,
megint nem exceles kérdés, de hátha a vba profik tudnának segíteni:
van egy dinamikusan generált userform, amiben egy amolyan táblázatszerűséget generálok textbox és listbox elemekből. minden TB és LB generáláskor megadom minden elemnek a magasságát (=sormagasság), szélességét, autosize=false, font.name és font.size (ezeket is már csak kínomban), az elemek top pozíciója pedig sor_száma*sormagasság képlettel.
mégis ahogy a képen látszik, néhol kicsit szétcsúsznak a sorok, és a betűméret sem mindenhol egyforma, hiába van beállítva. ezek mitől lehetnek? már nincs ötletem. -
Kapanyél
őstag
válasz Delila_1 #29318 üzenetére
Köszönöm!
2013 alatt nincs Eszközök menü... létrehoztam egy personal.xlsm-et (makróbarát munkafüzet), module1-be bemásoltam a kódot, elmentettem, de sehogy nem lesz belőle xlsb. (közben megtaláltam: bináris excel fájlként mentve xlsb lesz)
Futtatáskor hibát ír. Sajnos tökkezdő vagyok makróban.[ Szerkesztve ]
Hús vagyook, hús, hús, hús, hús, húús!
-
DeFranco
nagyúr
sziasztok!
előrebocsátom, nem értek a makrókhoz semmilyen szinten
van egy makróm, amit egy makróbarát munkafüzetbe mentettem, legyen próba.xlsm
itt a gyorselérési eszköztárba kitettem egy gombot, amihez hozzárendeltem a makró futtatását
a munkafüzetet mentettem makrómentes munkafüzetként, legyen próba2.xlsx
a makró gombja itt is fenn maradt a gyorselérési eszköztáron
ha próba.xlsm-et bezárom, és a próba2.xlsx-en megnyomom a gombot, nyitja próba.xlsm-et és lefuttatja a makrót
a gombot persze el tudom távolítani, de akkor már a dolgok mögé néznék:
hol tudom szerkeszteni, hogy a gyorselérési gomb honnan, és milyen makrót hív meg?
tárolódik-e valahol akár általános tárban ez a makró, vagy annak elérése (tehát hogy melyik filet kell megnyitni hogy futtatható legyen) ha a makró a próba.xlsm-ben levő modulban található?[ Szerkesztve ]
-
DeFranco
nagyúr
válasz m.zmrzlina #29324 üzenetére
igen, ez megvan már. közben azért összeállt a kép, ha jól értem, akkor általános makrótár nincs, max. akkor érem el a makrót máshonnan ha beállítom, hogy indításkor mindig nyisson egy spec munkafüzetet, illetve abban a speciális esetben ha a makrót tartalmazó füzet IS nyitva van.
-
Delila_1
Topikgazda
válasz Kapanyél #29320 üzenetére
Közben beírtam a Téma összefoglalóba a personal létrehozásának a módját.
A Windowsod verziójától függ, melyik mappába másolódik az xlsb. Az Excel a bezárásakor kérdez rá a mentésére.Érdemes megkeresni a vincsin, és másolatot készíteni róla.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Belnir
csendes tag
Sziasztok!
Adott egy céges Win7-es környezet, és a 2010-es office. Magyar nyelvű az excel. Készítettem egy makróbarát excel kimutatást (a makró csak egy frissítés gomb, ami a másik lapon lévő adathalmazból firssíti a kimutatást). A főnököm azt szeretné tudni, hogy ki, mikor nézi meg (nyitja meg) az általam készített anyagot. Nehezíti a helyzetet talán, hogy minden nap frissítem a háttéradatbázist, így minden nap mentek egyet. A tulajdonságokban ott ugye az szerepel, hogy ki és mikor mentett, de a mentés nélküli megtekintés sehol sincs. Van-e erre speckós exceles megoldás, vagy egyéb figyelés?
Remélem érthető voltam.
A segítséget előre is köszi!Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Delila_1
Topikgazda
válasz DeFranco #29325 üzenetére
Megnyitod a makrót tartalmazó füzetet. Alt+F8-ra megjelennek a makróid. 1-et kiválasztva látod, hogy felül a Makrónév rovat tartalmazza a füzet nevét is.
Ha tehát nincs megnyitva, de az ikonnal indítod, be tudja hívni a makrós füzetet.
Nézz vissza néhány hsz-t, ahol szó van a personalról. Ezt érdemes használni, ha egy makrót több füzetben is alkalmazni akarsz. Javaslom még a Téma összefoglaló erre utaló részének az elolvasását.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
karlkani
aktív tag
válasz Delila_1 #29326 üzenetére
Szia!
Megcsináltam én is az összefoglaló szerint, majd ezt a kódot bemásoltam.
Sub Ertek_beillesztese()
'Billentyűparancs: Ctrl+e
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End SubElmentettem. Betöltöttem egy munkafüzetet, ahol kipróbálnám a beillesztést, de nem megy.
Runt-time error '1004':
Range osztály PasteSpecial metódusa hibás -
Delila_1
Topikgazda
válasz karlkani #29333 üzenetére
A Ctrl+e hozzárendelést külön kell megadnod, mert az általam írtban csak megjegyzésként szerepel.
A füzetben Alt+F8, kiválasztod a makrót, majd az Egyebek gomb segítségével megadod a bill. hozzárendelést. Csak akkor kell, ha Ctrl+... hatására is működésbe akarod hozni.
Érdemes olyan betűt megadni, ami nem alapbeállítása az Excelnek, mint pl. a Ctrl+a, Ctrl+b, stb.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
bsh
őstag
válasz Belnir #29332 üzenetére
kód a ThisWorkbook-ba:
Private Sub Workbook_Open()
On Error GoTo xit
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Logfile = FSO.OpenTextFile("Z:\ez\valami\szerveren\legyen\logfile.log", 8, True)
Logfile.WriteLine (Format(Now, "YYYY.MM.DD hh:mm:ss") & " - " & Application.UserName)
Logfile.Close
Set Logfile = Nothing
Set FSO = Nothing
xit:
End Sub -
senior tag
válasz Delila_1 #29318 üzenetére
Mi a különbség a te makród,
Sub Ertek_beillesztese()
'Billentyűparancs: Ctrl+e
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub..és aközött, aminek a kódját én szedtem össze innen-onnan?
Sub ertek_be()
'
' ertek_be Makró
' csak az érték beillesztése
'
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub -
Delila_1
Topikgazda
válasz Belnir #29332 üzenetére
A füzetben egy lapot átnevezel, legyen a neve Rejtett.
Az első sorba A1-től H1-ig beírod a címeket:
Akció | Változás helye | Időpont | Változás előtt | Vált. után | Felh. neve | PC neve | Felh. domainEzt a lapot elrejtheted.
A füzetedben Alt+F11-re bejön a VB szerkesztő.
Bal oldalon kiválasztod a füzeted nevét. Ha a név előtt + jel van, rákattintasz.
Megjelenik (többek közt) a ThosWorkbook lap. Erre kattintasz. Jobb oldalon kapsz egy nagy üres felületet.
Oda másold be a lenti makrót.Private Sub Workbook_Open()
Dim lastrow As Long
Application.ScreenUpdating = False
With Worksheets("Rejtett")
lastrow = .Range("A" & Rows.Count).End(xlUp).Row + 1
With .Range("A" & lastrow)
.Offset(0, 0).Value = "OPEN"
.Offset(0, 1).Value = ThisWorkbook.FullName
.Offset(0, 2).Value = Now()
.Offset(0, 3).Value = "'*"
.Offset(0, 4).Value = "'*"
.Offset(0, 5).Value = Environ$("username")
.Offset(0, 6).Value = Environ$("computername")
.Offset(0, 7).Value = Environ$("userdomain")
End With
End With
Application.ScreenUpdating = True
End SubHagyj ki alatta egy sort. Válassz az Open helyett BeforeClose-t, majd Workbook_AfterSave-et a kép szerinti legördülőben.
Kaptál két Private Sub - End Sub párost. Ezek közé másold be a fenti makró belsejét (a Private Sub és End Sub közötti részt).
Makróbarátként kell mentened a füzetet.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz hengelhof #29341 üzenetére
Csupán annyi, hogy a beillesztésnél az alapértékekként szereplő paramétereket
(Operation:=xlNone, SkipBlanks:=False, Transpose:=False) elhagytam, a végén pedig megszüntettem a kijelölést.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Belnir
csendes tag
válasz Delila_1 #29342 üzenetére
Nagyon köszönöm! A leírás szuper, de mégis valami nem stimmel. Mondatonként haladtam, de nem két részleg lett, hanem három.
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
End Sub
Private Sub Workbook_Open()
Dim lastrow As Long
Application.ScreenUpdating = False
With Worksheets("Rejtett")
lastrow = .Range("A" & Rows.Count).End(xlUp).Row + 1
With .Range("A" & lastrow)
.Offset(0, 0).Value = "OPEN"
.Offset(0, 1).Value = ThisWorkbook.FullName
.Offset(0, 2).Value = Now()
.Offset(0, 3).Value = "'*"
.Offset(0, 4).Value = "'*"
.Offset(0, 5).Value = Environ$("username")
.Offset(0, 6).Value = Environ$("computername")
.Offset(0, 7).Value = Environ$("userdomain")
End With
End With
Application.ScreenUpdating = True
End SubMit rontottam el?
Intel G4560, AsRock B150M-HDS, 8Gb RAM
-
Delila_1
Topikgazda
válasz Belnir #29349 üzenetére
Jól csináltad.
Úgy kellett volna írnom, hogy Kaptál két új Private Sub - End Sub párost.Az Open tartalmát másold át a másik kettőbe.
A makró lefut a füzet megnyitásakor, mentésekor, és a bezárás előtt. Így ezeknek az eseményeknek a leírása is bekerül a Rejtett lapra.
[ 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.
Új hozzászólás Aktív témák
- Milyen okostelefont vegyek?
- Elcsípte a Huawei kameratelefonja az első helyet
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- Azonnali informatikai kérdések órája
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Vezeték nélküli fejhallgatók
- Genshin Impact (PC, PS4, Android, iOS)
- Star Citizen
- Windows CE fórum
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs