Hirdetés
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- btz: Internet fejlesztés országosan!
- hcl: Olympus E-PL1 nyomozás
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- Elektromos rásegítésű kerékpárok
- ricsi99: 6. Genes alaplap tündöklése kontra MS/Zintel korlátozásai
- Doky586: SecureBoot kulcsok frissítése (2026 nyara)
-
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
-
Mutt
senior tag
válasz
81lendo$
#19190
üzenetére
Hello,
Pár hasznosabb XlPasteType értékek:
1. xlPasteAll - mindent fog másolni, tehát képletek, számformátumok, egyéb cella formátumok, keretek, kommentek
2. xlPasteValuesAndNumberFormats - a cellákat értékként fogja másolni számformátummal együtt
3. xlPasteValues - a cellákat értékként másolja, minden mást kihagy
4. xlPasteFormulas - képleteket másol, minden mást kihagy
5. xlPasteFormats - formátum másolás, se értéket se képletet nem másolüdv.
-
Mutt
senior tag
válasz
81lendo$
#19166
üzenetére
Szia,
A makró és a VBA ugyanaz, esetleg ha megosztod a rögzített makrót, akkor tudunk rajta csiszolni.
- az osztály névből egy új munkafüzetet készít, hasonló névvel
Új füzetet a Workbooks.Add paranccsal tudsz nyitni, mentéskor tudod megadni a nevet neki.
Ha lapról lenne szó, akkor Worksheets.Add a parancs, és a Worksheet.Name = Cstr(Range("C3")) műxik.- az egész táblázatot bemásolja oda
Adat másolása a Copy Destination:=<cél> paranccsal megy. Ha formátumot is kell másolni, akkor pedig a PasteSpecial használandó.
A táblázatot pedig egyben ki tudod jelölteni, ha benne állsz a CurrentRegion-al.- és tölődjön az első oldalról a már kész osztály.
Törléshez pedig a Delete parancs kell.Itt egy minimalista megoldás:
Sub CopyClass()
Dim wb As Workbook
Dim fajlnev As String
If Range("C3") <> "" Then
'megjegyezzük hogy milyen névvel kell menteni, egy kicsit tisztítunk rajta
fajlnev = CStr(Trim(Range("C3")))
'másoljuk a táblázatot E5-től kezdve
Range("E5").CurrentRegion.Copy
'nyitunk egy fájlt
Set wb = Workbooks.Add
'első fülére első cellájába berakjuk formázva képletek nélkül
wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
'mentjük a fájlt
wb.SaveAs fajlnev
'bezárjuk a fájl
wb.Close
'töröljük az eredeti táblázatot
Range("E5").CurrentRegion.Delete xlShiftUp
'töröljük az osztály nevét
Range("C3").ClearContents
End If
End Subüdv.
-
Mutt
senior tag
válasz
81lendo$
#19113
üzenetére
Hello,
Itt megtalálod a módosított változatot. Nem csak a formátum másolás, de a munkalapra helyezett ActiveX vezérlőt változat is benne van.
A formátum másolása pedig általánosságban így oldható meg:
Range(masolando).Copy
Range(cel).PasteSpecial Paste:=<beillesztéstípusa>A beillesztés típusáról itt súgóban vagy itt lehet olvasni.
Tipikus példák:
xlPasteAll - minden formátumot másol (függvény, szám formátum, cella formátum, keret, komment stb).
xlPasteValuesAndNumberFormats - értéket és számformátumot másol, de mást nem
xlPasteValues - értékként fogja másolni a cella tartalmát, de mást nem hoz átüdv.
-
Mutt
senior tag
válasz
81lendo$
#19077
üzenetére
Szia,
...El tudnád küldeni, a kódját, az "ExportList" gombnak?
Nincs jelszavazva, Alt+F11-el te is megtudod nézni alaposan, a kód részlet pedig ez:Private Sub bExportList_Click()
Dim i As Integer
Dim vHits As Integer
Dim arryHits()
Dim wsCel As Workbook
'találatok száma
vHits = 0
'végigmegyünk a lista elemein
For i = 0 To lbList.ListCount - 1
'amely ki van jelölve azt egy találati tömbbe tesszük
If lbList.Selected(i) Then
'találatok számát növeljük
vHits = vHits + 1
'a találati tömböt átméretezzük hogy fogadja az új elemet
ReDim Preserve arryHits(1 To vHits)
'betöltjük az új elemet
arryHits(vHits) = lbList.List(i)
End If
Next i
If vHits Then
'új fájl létrehozása
Set wsCel = Workbooks.Add
wsCel.Sheets(1).Range("A1") = "Munkalap neve"
For i = 1 To vHits
'kért adatok kiiratása
wsCel.Sheets(1).Cells(i + 1, "A") = arryHits(i)
wsCel.Sheets(1).Cells(i + 1, "B") = ThisWorkbook.Sheets(arryHits(i)).Range("E2")
wsCel.Sheets(1).Cells(i + 1, "C") = ThisWorkbook.Sheets(arryHits(i)).Range("K27")
wsCel.Sheets(1).Cells(i + 1, "D") = ThisWorkbook.Sheets(arryHits(i)).Range("K28")
Next i
End If
'form bezárása
Unload Me
End Sub...- Ilyenkor amikor konkrét cellát viszel át egy másik fájlba, akkor fomátuma is átmegy. (pl.: pénznem [Forint], [Euro])?
A sima Copy nem viszi át VBA-ban, így nekem sem fogja a formázást másolni, de természetesen meg lehet csinálni (PasteSpecial).
...- Ugye én nem formon, hanem Munkalapon csináltam, de elvileg ott is működik ez a megoldás?
Ha ActiveX vezérlőket használsz a lapon, akkor műkődhet. A gond azonban, hogy ezek a vezérlők egymástől függetlenül fognak létezni, ezért globális változók kellenek az adatok cseréjéhez.üdv.
Új hozzászólás Aktív témák
Hirdetés
- AKCIÓ! Dell Precision 3571 i7-12700H 16GB 512GB FHD RTX T600 4GB 1 év teljeskörű garancia
- HP EliteBook 830 G5, G6 13,3" i5, 16GB RAM, SSD, jó akku, számla, 6 hó gar
- ÁRGARANCIA!Épített KomPhone i5 12400F 16/32/64GB RAM RTX 5060 Ti 8GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! ASUS DUAL MINI RTX 3060Ti 8GB videokártya garanciával hibátlan működéssel
- Crucial T705 4TB Gen5 SSD, 14100MB/s
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Fferi50