Keresés

Részletes keresés

Törölt nick Creative Commons License 2009.04.29 0 0 9162
Kérdés.
a makróban nem a Sheets("munkalapneve") módon szeretném megszólítani a munkalapot, mert az változik. Az sem jó ha változóba rakom a munkalap nevét.

Meg lehet vhogy szólítani azzal a megnevezéssel, ami a munkalap tulajdonságainál van a Microsoft Excel Objects-en belül) vhogy így:
munka1(munkalapneve)
munka2(munkalapneve)
stb...
és én pl a munkax-el szeretném megszólítani, mert az állandó.
E.Istvan Creative Commons License 2009.04.29 0 0 9161

Azt a minimális makrót amit az új munkafüzetbe átmásolok azt már nem akarom kitörölni, sőt az szükséges az új munkafüzet működéséhez. Csak elrejteni/levédeni szeretném. :o)

Foglalkozva a témával egy gondolat már felötlött bennem ma reggel, de még nem próbáltam ki. Létrehozok egy üres de levédett munkafüzetet (kézzel) és ezt nyitom meg a programból, ebbe másolom bele a munkafüzetet majd mentem más néven. Nem túl elegáns, de ha működni fog és nem lesz jobb ötlet akkor ez lesz.

Előzmény: Törölt nick (9159)
Törölt nick Creative Commons License 2009.04.29 0 0 9160
Talán ez segítség
http://exceltip.com/st/Delete_all_macros_in_a_workbook/document_using_VBA_in_Microsoft_Excel/505.html

Előzmény: Törölt nick (9159)
Törölt nick Creative Commons License 2009.04.29 0 0 9159
Egy dologban biztos vagyok:
Az újonnan létrehozott munkafüzetekből ki lehet törölni a makrót. (Makróval)
Ha lesz időm utánanézek a mikéntjének, de úgy emlékszem itt is szó volt már erről.
Előzmény: E.Istvan (9156)
Törölt nick Creative Commons License 2009.04.29 0 0 9158
Kicsit visszanézed az előzményeket akkor látni fogod hogy vmit félreérthettél.
Előzmény: Delila_1 (9152)
NeomatiK Creative Commons License 2009.04.29 0 0 9157
A Formátum eszköztárban van gyárilag egy "oszlopok közt középre" nevű parancs és ikon. Az ugyanezt tudja, ha jól látom.
Előzmény: Delila_1 (9152)
E.Istvan Creative Commons License 2009.04.29 0 0 9156

A mentés SaveAs-al történik, de a munkafüzet létrehozása nem.

A Sheets("xxx").Copy hatására az adott munkalapot egy vadi új "szűz" munkafüzetben hozom létre és ennek a VBAprojekje alapértelmezésként nem védett.

A feladat, amit már megoldottam, hogy egy összetett munkafüzetből különböző felhasználói beállításokkal hozok létre több százas nagyságrendben új munkafüzeteket melyek mindegyike más mennyiségű és adattartalmú munkalapot tartalmaz. Ezen munkalapokon vannak gombok és vezérlő elemek, melyekhez makrók tartoznak és mivel sajnos új munkafüzetbe másolom azokat, így alapértelmezésként láthatóak és szerkeszthetőek.

Egy ideig a saját munkafüzetemet mentettem el SaveAs-al minden esetben, a nem szükséges munkalapok elrejtésével, ekkor ez nem volt probléma mert a saját munkafüzet projektje védett, de már túl nagy méretű munkafüzetek lettek. Ezért kellett váltanom, hogy csak a szükséges és elégséges mennyiségű adatot hozom létre egy új munkafüzetben.

Előzmény: Törölt nick (9153)
tt65 Creative Commons License 2009.04.28 0 0 9155
Előzmény: tt65 (9154)
tt65 Creative Commons License 2009.04.28 0 0 9154
találtam egy jó kis anyagot: itt
VBA 33 leckében. angol
Törölt nick Creative Commons License 2009.04.28 0 0 9153
Jól gondolom, hogy SaveAs-al mented, ill. így hozod létre az új munkafüzeteket?
Előzmény: E.Istvan (9146)
Delila_1 Creative Commons License 2009.04.28 0 0 9152

Nem fontos egyesíteni.

A 3 cellát kijelölve a formátumban az igazításnál, vízszintes elrendezésnél "A kijelölés közepére" formát kell választani. Mivel ezt sűrűn alkalmazom, írtam egy kis makrót rá (a personal.xls-ben), és egy ikonthoz rendeltem, hogy mindig kéznél legyen.

 

Sub Kijelölés_közepére()
    Selection.HorizontalAlignment = xlCenterAcrossSelection
End Sub

(Szívesen várok kifejezőbb ikonra példát)

Előzmény: Törölt nick (9147)
E.Istvan Creative Commons License 2009.04.28 0 0 9149
Nem kézzel kell beállítanom. Azt ismerem. Fut egy program, ami létrehoz egy új munkafüzetet, belemásol egy munkalapot amin makrók is vannak, majd elmenti és bezárja. Még mentés előtt ebből a futó programból kellene levédeni ezt az új munkafüzetet.
Előzmény: Törölt nick (9148)
Törölt nick Creative Commons License 2009.04.28 0 0 9148
Be lehet. Tools/VBAProject -> Protect fül
Előzmény: E.Istvan (9146)
Törölt nick Creative Commons License 2009.04.28 0 0 9147
Ebben a formában nincs, csak ha 3-at egyesítessz. (Szerintem felesleges is - és jobb kerülni az egyesített cellák használatát.)
Előzmény: NeomatiK (9145)
E.Istvan Creative Commons License 2009.04.28 0 0 9146
Sziasztok!
Ismét egy kis segítség kellene.
Egy munkafüzetben lévő makróból hozok létre és mentek le más munkafüzeteket. Ezeknek az új munkafüzeteknek a lapjain találhatóak gombok és egyéb objektumok a hozzájuk tartozó kódokkal együtt. Viszont ezek a kódok megtekinthetőek, átírhatóak. A futó programból ennek a másik munkafüzetnek a VBAprojektjére be lehet állítani jelszót? Gyanítom hogy nem, de akkor valahogy le lehet védeni a makrókat?
NeomatiK Creative Commons License 2009.04.28 0 0 9145
Kár :( Köszi.

Pedig simán lehetne ilyen funkció AB12 cella felbontva 3 részre, AB(A)12, AB(B)12, AB(C)12 vagy ilyesmi...

Előzmény: Törölt nick (9144)
Törölt nick Creative Commons License 2009.04.28 0 0 9144
Nem. Inkább csak "fordítva" működik.
Előzmény: NeomatiK (9143)
NeomatiK Creative Commons License 2009.04.28 0 0 9143
Sziasztok!

Egy cellát fel lehet bontani pl 3 cellára?

Az a módszer, hogy a cellákat összevonjam, ahol nincs szükség a 3 külön adat bevitelére (mert ezek vannak nagytöbbségben), sok igazítással és macerával járna, tehát nem szimpatizálok vele.

Törölt nick Creative Commons License 2009.04.27 0 0 9142
na, köszi sikerült.
Úgy csináltam, hogy oszlop celláit felpakoltam 1-esekkel és részössszeggel (ami változik a szűréssel együtt) figyeltem egy másik cellában.
Előzmény: Törölt nick (9139)
Törölt nick Creative Commons License 2009.04.27 0 0 9141
Jó, de ez nem új kód, hanem a tegnapi a Worksheet_Calculate eseménykezelésbe biggyesztve ;-)
Előzmény: Törölt nick (9140)
Törölt nick Creative Commons License 2009.04.27 0 0 9140
Nem rossz. Nekem más volt az alapötletem, de a tied jobban tetszik.
Viszont a játékomat meg elrontottad, mert kész kódot írtál be. :)
Mindjárt ki is próbálom.
Előzmény: Törölt nick (9139)
Törölt nick Creative Commons License 2009.04.27 0 0 9139

Szia!

 

Ezen már én is agyaltam tegnap, sőt, egy picit még kutattam is a témában... A munkalap események közül talán a Worksheet_Calculate használható, de ekkor a kérdéses munkalapra fel kell venni egy függvényt pl. MA(). Ezt ugye minden munkalap eseménynél frissíti...

 

Szóval, ha felteszel egy tetszőleges függvényt, akkor megoldás lehet ez:

 

Private Sub Worksheet_Calculate()
Dim x As Byte
Dim s As String

 

  If ActiveSheet.AutoFilterMode = True Then ' ha a munkalapon az autoszűrő aktív
    For x = 1 To ActiveSheet.AutoFilter.Filters.Count
      If ActiveSheet.AutoFilter.Filters(x).On Then ' itt nézzük meg, hogy aktív-e valamelyik
        s = Mid(ActiveSheet.AutoFilter.Filters(x).Criteria1, 2, Len(ActiveSheet.AutoFilter.Filters(x).Criteria1))
        MsgBox "Indulhat a program, a(z) " & x & ". szűrő aktiválva, értéke: " & s
      End If
    Next x
  Else: MsgBox "Autoszűrő kikapcsolva"
  End If
 
End Sub

 

 

 

Előzmény: Törölt nick (9138)
Törölt nick Creative Commons License 2009.04.27 0 0 9138
Szia,
Még arra van megoldás, hogy ne kelljen egy gombot sem megnyomni, hanem ha változik valami az autofilterben akkor hajtódjon végre?
(a munkalap események nem a legjobbak sajnos, mert a szűrő váltásakor kell végrehajtódnia a makrónak (Ez egy sima for each ciklus, ami a soron megy végig és elrejt bizonyos oszlopokat)
Nem kell kész kód, csak vmi pseudo - mert különben elveszed a játékomat. :)
Előzmény: Törölt nick (9137)
Törölt nick Creative Commons License 2009.04.27 0 0 9137
Nagyon szívesen :-)
Előzmény: Törölt nick (9136)
Törölt nick Creative Commons License 2009.04.27 0 0 9136
Hálás köszönet, a dőlt betűs első sorod tartalmazza a lényeget.
Nagyjából fél órát keresgéltem erről egy régebben látott összefoglalót, de nem tudtam konkrétan mire keressek. Most, hogy megírtad, rögtön meg is találtam :)
Köszönöm még egyszer a segítségedet.
Előzmény: Törölt nick (9134)
Delila_1 Creative Commons License 2009.04.27 0 0 9135
Köszönöm. A figyelmetlenségem miatt történt a "baleset". A Long-gal helyrerázózott a lelke.
Előzmény: Törölt nick (9132)
Törölt nick Creative Commons License 2009.04.26 0 0 9134

kiemelt bold rész tartalmazza az értéket. Próbáld ki a Mid függvény nélkül is így:

 

s = ActiveSheet.AutoFilter.Filters(x).Criteria1 

 

------------------------------------------

 

Sub Autoszűrő2()
Dim x As Byte
Dim s As String

 

If ActiveSheet.AutoFilterMode = True Then ' ha a munkalapon az autoszűrő aktív
    For x = 1 To ActiveSheet.AutoFilter.Filters.Count
      If ActiveSheet.AutoFilter.Filters(x).On Then ' itt nézzük meg, hogy aktív-e valamelyik
        s = Mid(ActiveSheet.AutoFilter.Filters(x).Criteria1, 2, Len(ActiveSheet.AutoFilter.Filters(x).Criteria1))
        MsgBox "A(z) " & x & ". szűrő aktiválva, értéke: " & s
      End If
    Next x
  Else: MsgBox "Autoszűrő kikapcsolva"
  End If

 

End Sub

Előzmény: Törölt nick (9133)
Törölt nick Creative Commons License 2009.04.26 0 0 9133
Tökélete, köszönöm szépen.
És azt pl, hogy mi van kiválasztva az autoszűrőben mi mondja meg?
Előzmény: Törölt nick (9128)
Törölt nick Creative Commons License 2009.04.26 0 0 9132
Ezeket használom, nálam jól beváltak:

Sub Sorok_Oszlopok()

Dim utolsosor As Long
Dim utolsooszlop As Byte

'sorok száma az "A" oszlop értékei alapján (akkor is jó, ha "lyukas")
utolsosor = Range("A" & Rows.Count).End(xlUp).Row

'oszlopok száma az 1. sor értékei alapján
utolsooszlop = Cells(1, Columns.Count).End(xlToLeft).Column

MsgBox utolsosor & vbNewLine & utolsooszlop

End Sub
Előzmény: Delila_1 (9130)
Törölt nick Creative Commons License 2009.04.26 0 0 9131
Őszintén szólva, azt nem értem, hogy miért boolean a felsorolt változók típusa?
Előzmény: Delila_1 (9129)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!