- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- vrob: Az IBM PC és a játékok a 80-as években
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Brogyi: CTEK akkumulátor töltő és másolatai
- Tomasz72: Ventilátor upgrade
- sziku69: Szólánc.
- MasterDeeJay: H110-es lapban 10.gen Comet Lake működhet?
- eBay-es kütyük kis pénzért
- Parci: Milyen mosógépet vegyek?
-
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
-
Akkor még egy megoldás, csak a változatosság kedvéért...
Alaphelyzet
Makró futtatása után (Start Macro gomb)
1. új munkalap | 2. új munkalap | 3. új munkalap
Létrehozott munkalapok törlése után (Delete Created Sheets gomb)Macro forráskód
Option Explicit
'Globális deklarációk
Dim MySrcRange, MyTempRange, MyCell As Range
Dim MySheetNamesArray() As String
Dim MySheetNamesIndexArray() As Long
Dim MyArrayIndex, MyDestOffset As Long
Dim MySrcSheetName, MySrcCodesColumn, MySrcCodesRow, MyDestCodesColumn, MyDestCodesRow As String
Private Sub CommandButton1_Click()
'Képernyő frissítés KI
Application.ScreenUpdating = False
'Forrás munkalap és cella beállítása
MySrcSheetName = "Munka2"
MySrcCodesColumn = "A"
MySrcCodesRow = "2"
'Cél cella beállítása
MyDestCodesColumn = "B"
MyDestCodesRow = "2"
'Forrás munkalap kiválasztása
ThisWorkbook.Worksheets(MySrcSheetName).Select
'Tartomány létrehozása a forrás adatok alapján
Set MySrcRange = Range(MySrcCodesColumn & MySrcCodesRow & ":" & MySrcCodesColumn & Cells(Cells.Rows.Count, MySrcCodesColumn).End(xlUp).Row)
'Dinamikus tömbők átméretezése a tartományban található cellák száma alapján (üreseket is beleértve)
ReDim MySheetNamesArray(0 To MySrcRange.Count - 1)
ReDim MySheetNamesIndexArray(0 To MySrcRange.Count - 1)
MyArrayIndex = 0
'Végignézzük a forrástartomány használt celláit
For Each MyCell In MySrcRange
'Ha üres, akkor kihagyjuk
If Not IsEmpty(MyCell) Then
'Aktuális munkalap létezik?
If Not SheetExists(MyCell.Text) Then
'Nem létezik, létrehozzuk és beírjuk a forráscella értékét
ActiveWorkbook.Sheets.Add After:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)
ActiveSheet.Name = MyCell.Text
Sheets(ActiveSheet.Name).Range(Cell1:=MyDestCodesColumn & MyDestCodesRow) = MyCell.Text
'Létrehozott munkalap nevét beírjuk a tömb megfelelő pozíciójába és megnöveljük a tömb indexét
MySheetNamesArray(MyArrayIndex) = MyCell.Text
MySheetNamesIndexArray(MyArrayIndex) = MySheetNamesIndexArray(MyArrayIndex) + 1
MyArrayIndex = MyArrayIndex + 1
Else
'Létezik, meghatározzuk a célcella eltolási értékét és beírjuk a forráscella értékét
MyDestOffset = GetDestRangeOffsetAsSheetName(MyCell.Text)
Sheets(MyCell.Text).Range(Cell1:=MyDestCodesColumn & (MyDestCodesRow + MySheetNamesIndexArray(MyDestOffset))) = MyCell.Text
'Eltolási értéket megnöveljöük az eltolási értékeket tartalmazó tömbben
MySheetNamesIndexArray(MyDestOffset) = MySheetNamesIndexArray(MyDestOffset) + 1
End If
End If
Next MyCell
'Forrás munkalap kiválasztása
ThisWorkbook.Worksheets(MySrcSheetName).Select
'Képernyő frissítés BE
Application.ScreenUpdating = True
'Start Macro gomb tiltása, Delete Created Sheets parancsgomb engedélyezése
CommandButton1.Enabled = False
CommandButton2.Enabled = True
End Sub
'Az adott munkalap létezik vagy nem
Public Function SheetExists(SheetName As String) As Boolean
Dim MyWorkSheet As Worksheet
Dim Result As Boolean
Result = False
For Each MyWorkSheet In ThisWorkbook.Sheets
If UCase(MyWorkSheet.Name) = UCase(SheetName) Then
Result = True
Exit For
End If
Next MyWorkSheet
SheetExists = Result
End Function
'A léterhozott munkalapon a cél cellák eltolási értékei
Public Function GetDestRangeOffsetAsSheetName(CurrentSheetName As String) As Long
Dim i As Long
For i = 0 To MySrcRange.Count - 1
If MySheetNamesArray(i) = CurrentSheetName Then
GetDestRangeOffsetAsSheetName = i
Exit For
End If
Next i
End Function
'A létrehozottt munkalapok törlése
Private Sub CommandButton2_Click()
Dim i As Long
'A megerősítő ablak(ok) megjelenésének tiltása
Application.DisplayAlerts = False
'Létrehozott munkalapok törlése
For i = 0 To MyArrayIndex - 1
If SheetExists(MySheetNamesArray(i)) Then Sheets(MySheetNamesArray(i)).Delete
Next i
'Forrás munkalap kiválasztása
ThisWorkbook.Worksheets(MySrcSheetName).Select
'A megerősítő ablak(ok) megjelenésének engedélyezése
Application.DisplayAlerts = True
'Start Macro gomb engedélyezése, Delete Created Sheets parancsgomb tiltása
CommandButton1.Enabled = True
CommandButton2.Enabled = False
End Sub -
Delila_1
veterán
Fferi gyorsabb volt, de azért én is beteszem a saját makrómat.
Sub Szetvalogatas()
Dim sor As Long, lapnev As String, usor As Long, a
usor = Range("A" & Rows.Count).End(xlUp).Row
For sor = 2 To usor
lapnev = Right(Cells(sor, 1), Len(Cells(sor, 1)) - 3)
On Error Resume Next
Set a = Sheets(lapnev)
If Err.Number > 0 Then
Sheets.Add.Name = lapnev
Sheets(lapnev).Move After:=Sheets.Count
End If
Sheets(lapnev).Cells(sor, 2) = Sheets("Munka2").Cells(sor, 2)
Sheets("Munka2").Select
Next
Sheets("Munka2").Move After:=Sheets(1)
MsgBox "Kész a szétválogatás", vbInformation
End Sub -
Fferi50
Topikgazda
Szia!
Már megint kérdésem van:
Ha számok vannak a munka2 lap A oszlopában, akkor honnan tudjuk, hogy mi a neve a keresendő munkalapnak? Mert csak számokat nem szerencsés munkalapnévnek adni.
A formázáshoz:
Egy munkalapot megformázol. Utána a formátum másolóval annyi munkalapra másolod, amennyire akarod. (Formátum másoló bekapcsolása kijelölöd a másolandó részt. Jobb egérgomb - a jobb oldalon levő ecsetre duplakatt. Addig marad bekapcsolva, amíg ESC-t nem nyomsz neki.)
De a megformázott munkalapot sablonként is elmentheted és nyithatsz utána ugyanolyan munkalapokat.
ÜDv.
Új hozzászólás Aktív témák
Hirdetés
- MÁV topic
- Győr és környéke adok-veszek-beszélgetek
- SkyShowtime
- Norvégia átmenetileg betiltja az áramigényes kriptobányászatot
- Hitelkártyák használata, hitelkártya visszatérítés
- Miskolc és környéke adok-veszek-beszélgetek
- Nintendo Switch
- Black Myth: Wukong
- Autós topik
- Kevesebb dolgozó kell az Amazonnak, AI veszi át a rutinfeladatokat
- További aktív témák...
- Eladó Steam kulcsok kedvező áron!
- Assassin's Creed Shadows Collector's Edition PC
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- Csere-Beszámítás! MSI Gaming X RTX 4060Ti 16GB GDRR6 Videokártya!
- BESZÁMÍTÁS! Apple MacBook Pro 14 M2 Pro - M2 Pro 16GB 512GB SSD garanciával hibátlan működéssel
- Új és régi konzolok Okosítása/Softmodoloása, és Szoftveres szintű javítása - RÉSZLETEK A LEÍRÁSBAN
- AKCIÓ! GIGABYTE AORUS MASTER RX 6800 XT 16GB videokártya garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged