Sziasztok, egy kis segítséget szeretnék, kérni. Elakadtam. Önerőből tanulom VBA-t.
Van egy fejléces excel táblázat. 5.oszlop dátumokat tartalmaz. Feladat, szűrés makróval 2022-es dátumokra és szűrt adat sorok másolása. Az oszlop tartalmaz 2022es dátumokat.
Makró kód: Application.Workbooks(2).Worksheets(5).Activate Range("A1").Select If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End If Dim startDate As Date Dim endDate As Date startDate = DateSerial(2022, 1, 1) endDate = DateSerial(2023, 1, 1) ActiveSheet.Range("A1").AutoFilter Field:=5, Criteria1:=">=" & startDate, Operator:=xlAnd, Criteria2:="<" & endDate
Ez egy másik próbálkozás, de ezzel is ua.: 'ActiveSheet.Range("A1").AutoFilter Field:=5, Criteria1:=">=2022.01.01", Operator:=xlAnd, Criteria2:="<2023.01.01"
Hiba:
Szűrés a fejlécen bekapcsol, szűrés ikon az oszlopon ott van, szűrés ikonon megnézve a szűrést, tartalmazza a szűrés feltételt, de nincsenek szűrt adatok. Szűrt oszlop ikon jó helyen van. Szűrésbe belépve, rányomok egy OK-ot a szűrésre, megjelennek a szűrt adatok.Ugyanez a kódrészlet, ugyanebben a makróban egy másik helyen szöveges szűréssel működik. Dátum oszlop egyedi formátumban van, de átállítva dátum formátumra is fenn áll a hiba. Csatoltam egy excelt amiben a kód lefutása utáni állapot van.
Makrókat ismerem, makrófelvevővel. VBA-val most ismerkedem.
Lenne egy feladat :)
Van egy excel munkafüzet, két munkalappal Az egyik munkalapon rendszerből lekért adatsor van, különböző adatokkal. Ez a táblázat minden egyes lekérésnél módosul, attól függően, hogy milyen intervallumra kérjük le az adatokat. Több oszlop van - minden oszlopban más jellegű adat. Az egyes sorok, egy-egy ID-hoz tartoznak. A másik munkalapon van egy összeszerkesztett nyomtatási forma, amivel kinyomtatjuk az egyes ID-k jellemzőit.
A nyomtatatást úgy csináljuk, hogy az Adat fül első oszlop első ID-t átmásoljuk (CTRL+C / Ctrl + V) a nyomtatási fül megfelelő cellájába és akkor a nyomtatási lapon kitölti a megfelelő bekeresett adatokkal (az Adat fülről) és kinyomtatjuk azt az 1 oldalt. aztán kimásoljuk az Adat fül első oszlop második ID-t és bemásoljuk ismét a nyomtatási fül adott cellájába (ez fixen mindig ugyan az) és akkor betölti az ehhez az ID-hoz tartozó adatsort és kinyomtatjuk. És így megyünk egyesével sorba az Adat fül első oszlopának celláin, addig amíg van benne adat és kinyomtatjuk egyesével.
Nekem kellene egy olyan VBA, amit aztán makro gombra tennék és onnan indulna, hogy autómatikusn betölti az első ID-t, kinyomtatja, aztán lép egyet tovább az ID oszlopban, betölti a másodikat, kinyomtatja, aztán ismét lép egyet a következő ID-ra és így tovább, mindig addig amíg van adat az ID oszlopban.
Szóval ne egyesével keljen adott esetben 50 különböző ID-t betölteni és kinyomtatni, hanem egy gombnyomással futtasa végig az excel egyesével és nyomtassa ki, addig amíg az Adat fül ID oszlopában van adat.
(ez az adatsor változik, van amikor 5 sor van, de van amikor 50)
Gondolom vmi ciklussal kell az utolsó adatig bekeresve.
Adott egy fájl. Az első lapon az A oszlopban cikkszámok, minden számhoz egy fül behivatkozva. Kattintás, feljön a megfelelő fűl. Kitöltjük a mérési lapot, Nyomtat kilép gomb és kész. Ki kell nyomtatnia a pdf-et, menteni a "Mérési lapok" mappába, ki kell törölnie a beírt adatokat, ugrania az első fülre és bezárnia az excelt.
Mire összehoztam, hogy az aktuális lapot nyomtassa, el ment a mentés.
Amikor hozzáfogtam, csak egy lappal dolgoztam ezért volt beírva így: nve = Worksheets("E007.A42357").Cells(1, 1).Text.
Hozzáteszem gépész vagyok, ilyen dolgokkal csak azért foglalkozom, mert nincs más aki megcsinálja, de sok mindent le lehet egyszerűsíteni, ha elsőre sok is a probléma vele.
Boldogan hátradőltem és próbálgattam. Több fül van a munkafüzetben és nem nyomtatja csak az elsőt. Tudom hol a hiba ( a pirosak) csak javítani nem tudom.
Eddig ez a makró:
Sub Nyomtat_kilép()
Dim fol As String fol = ThisWorkbook.Path Dim nve As String nve = Worksheets("E007.A42357").Cells(1, 1).Text fol = ThisWorkbook.Path & "" & "Mérési lapok"
Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(fol) Then fso.CreateFolder (fol) End If Worksheets("E007.A42357").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ fol & "" & Range("F1") & "_" & "PO" & Range("V5") & "_" & Date & Replace(Time, ":", "-") & nve, Quality:= _ xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=True Range("K10:Y29").Select Selection.ClearContents Range("V5").Select Selection.ClearContents ActiveWorkbook.Save ActiveWorkbook.Close
End Sub
Minden fűl neve szerepel az F1 cellában. Értelem szerűen ez mindenhol más és egyedi. Sejtem, hogy a pont lehet a baja, de kötött a formátum.
Összeküzdöttem az alábbi makrószerűséget, ami le is fut.
A problémám, hogy nem az általa létrehozott mappába menti a nyomtatott pdf-et.
Hogy tudnám a helyére irányítani?
Valamint magát az excelt is szeretném bezáratni.
Sub Nyomtat_kilép()
Dim fol As String fol = ThisWorkbook.Path Dim nve As String nve = Worksheets("E007.A42357").Cells(1, 1).Text
fol = ThisWorkbook.Path & "Mérési lapok" Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(fol) Then fso.CreateFolder (fol) End If
Sziasztok! Kezdő vagyok, de ez a kérdésből lejön gondolom. :) Szeretnék egy naptár csinálni, ahol az évet és hónapot ki lehet választani. A hetet jó magyar módi szerint hétfővel kezdeném, de a FORMAT-nál a default a vbSunday, tudom. A FORMAT sémáját is tudom, hogy hol kellene megadni azt is, csak azt nem tudom, hogy hogyan is adom meg?? :D Gugli és youtube undok, nem segít, mindenhol csak a dátum formálást találom, de az nekem nem kell. Most ez van:
Private Sub UserForm_Initialize()
Dim i As Integer
With Me.cmbMonth For i = 1 To 12 .AddItem VBA.Format(VBA.DateSerial(2021, i, 1), "MMMM") --------> tudom, hogy itt kell megadni, csak hogy??? :DDD Next i .Value = VBA.Format(VBA.Date, "MMMM") End With
With Me.cmbYear For i = VBA.Year(Date) - 5 To VBA.Year(Date) + 5 .AddItem i Next i .Value = VBA.Format(VBA.Date, "YYYY") End With
Hogyan tudnám azt elérni, hogy egy bizonyos cella megváltozása miatt, egy másik munkalapon lefusson egy makró, illetve igazából az összes munkalapon lefusson az az egy és majdnem ugyanaz a makró. Ezek a makrók "Private Sub Worksheet_Activate"-ként vannak megírva az adott munkalapokon és emiatt nem tudom őket simán a "Call" paranccsal meghívni.
A konkrét probléma az, hogy van egy legördülő listám, ami egy másik munkalapról kapja az adatokat, ezek a bizonyos adatok változnak(attól függően, hogy mit választok ki), de ezt csak akkor frissíti a legördülő lista, ha átmegyek arra a munkalapra, ahol egy makró létrehozza az adatokat, amiből táplálkozik a lista és ugye lefut a makró.
Megakadtam az idő és dátum kezelésben. Tehát van egy kezdő dátumom (dátum és óra), egy másik cellában egy szám/idő (másodpercben, de persze ez változtatható) és az lenne a feladat, hogy a kezdő dátumhoz hozzáadja az említett másik cellában lévő értéket másodperc, perc, óra, nap, hónap megfelelő növelésével.
Van egy Excel táblázatom, aminek a jobb felső sarkában (U1 cella) van egy sorszám. Makróval szeretném azt megcsináltatni, hogy másolja le az első munkalapot és a másolás után a másolat jobb felső sarkában (U1 cellában) lévő sorszámot növelje 1-el, utána az első munkalapot zárja (védje) le.
Esetleg gombnyomáshoz köthető e? pl. egy ÚJ gomb megnyomására működjön.
VBA macro segítségével szeretnék file-t feltölteni egy hálózati nyomtató könyvtárába.
Manuálisan ez úgy működik, hogy totalcommanderrel megnyitom az ftp kapcsolatot IP, név, jelszó megadásával, majd átmásolom a file-t egyik könyvtárból a másikba.
Azt szeretném VBA macroval megoldani hogy ugyanez történjen egy commandbutton megnyomására.
Aki konkrét segítséget tud adni, nagyon megköszönném. Angol nyelvű google linkeket nem kérnék.
Egy kis segítséget szeretnék kérni tőletek. Excelben (2016) készítettem egy makrót, ami berak egy footert, ami egy cellához van linkelve, hogy autómatikus updatételődjön. Az excelben 10 sheet van és az első két sheetre nem szeretnék rakni footert, de sajnos csak azokról nem tudom letörölni.
Most így néz ki a VBA kód:
Sub AddFooterToAll() Dim WorkRng As Range For Each ws In Application.ActiveWorkbook.Worksheets ws.PageSetup.LeftFooter = Worksheets("A").Range("C2").Value ws.PageSetup.RightFooter = "Page &P" Next End Sub
Egy Excel táblázatban VBA segítségével kellene megoldjak egy problémát.
Arról volna szó, hogy egyik oszlopban (C) egy másik oszlop (B) elemeit kellene összegezek, egy harmadik oszlopból (A) kiszűrt feltételek szerint.
Írtam egy ciklust, ami így néz ki:
i = 2
Do While i < 20
If Cells(i, 1) = Cells(i - 1, 1) Or Cells(i, 1) = "" Then
Cells(i, 3) = ""
ElseIf Cells(i + 1, 1) = Cells(i, 1) Then
Cells(i, 3) = Cells(i, 2) + Cells(i + 1, 2)
Else: Cells(i, 3) = Cells(i, 2)
End If
i = i + 1
Loop
A problémám az, hogy ha több elem következik egymás után az "A" oszlopban, akkor a "B" oszlopból csak az első kettőt veszi figyelembe, a többit nem adja hozza.
Az igazság, hogy még gyerekcipőben járok, de ha valaki tudna segíteni az nagyon jól jönne.
Kicsit elakadtam és nem értem a miértjét. Legyen szíves valaki ránézni:
Application.wait-ig oké, ott viszont elakad a dolog. Amit szeretnék: az előzőleg mentett csv filet megnyitni, ami úgy találna meg a megadott mappában, hogy "Főkönyv zárás nyitás 2015.xlsm importhoz fülön H1 cella" + csv kiterjesztés. Fname2-nél elakad object variable or with block variable not set-tel, de már nem látom a fától az erdőt.
köszi P.
Sub copy2_new_ws() Dim wb As Workbook Dim wb2 As Workbook
Szóval azt kellene csinálnom, hogy egy bizonyos (D) oszlopban a pozitív értékeket tartalmazó cellák betűit színezzem zöldre, a negatívakét pedig pirosra, viszont még eléggé kezdő vagyok, így nem tudok rájönni, hogy hogyan is kellene ezt megoldani. Ha bárki tudna segíteni, nagyon megköszönném:)