Keresés

Részletes keresés

wawabagus Creative Commons License 2010.10.18 0 0 13019
Szia Delila_1!
Igen, elvileg már sokat használtam makrót úgy hogy Personal-ba volt lementve...
De a gondom az, amit leírtam SQL-nek...

Hogy ha Personalba mentem akkor az Új fájl helyett a personalt mentegeti nekem.
Ha viszont a munkafüzethez kapcsolom a macrót, akkor meg jól működik...

Totál nem értem :-))..

Előzmény: Delila_1 (13001)
wawabagus Creative Commons License 2010.10.18 0 0 13018
Szia!
Köszi még egyszer a segítséget!
Van valami amit én totál nem értek.

Megírtam a makrót, ami remekül működik, ha az adott munkafüzetben tárolom

DE

ahogy Personal-ba mentem, már nem jó munkafüzetet ment el csv formátumba.
Konrétan a macro munkafüzetet mentegeti /Personal.csv/.

Ez okozta eddig is problémát, de totál nem értem mit kezdjek ezzel.
Nekem Personal-ba mentve kell a macró, de akkor félreérti a dolgokat....

Pedig úgy hivatkoztam, ahogy írtad: definiáltam egy nevet az létrehozott munkafüzetnek...

Van valami tipped mi lehet a baja?

Köszi előre is
Előzmény: SQLkerdes (12990)
Delila_1 Creative Commons License 2010.10.18 0 0 13017
Sub mm()
    Dim sz As Integer
   
    For sz = 1 To 1500
        Range("DL2") = sz
        If Range("DK1") = 1 Then
            MsgBox "Megvan: " & sz: Exit Sub
        End If
    Next
    MsgBox "Nincs meg"
End Sub
Előzmény: repuleskepekben (13016)
repuleskepekben Creative Commons License 2010.10.17 0 0 13016
És makróval hogy lehetne azt megoldani, hogy mondjuk egy nyomógombbal indítom el a cellában lévő értéket, mondjuk 1-el kezdödjön, és mondjuk 1500-ig helyettesítse be a számokat, amik csak pozitív egész számok lehetnek, és növekvő sorrendben 1,2,3,4,5....1498,1499,1500 és ha a behelyettesítéskor mondjuk a C2-es cella értéke 1-re változik, akkor álljon le a számok behelyettesítése?

Van egy munkalapom, ahol a DL2 cellába kellene behelyettesíteni a számokat 1-1500-ik, és van a DK1 cella amiben bizonyos feltételek teljesülése esetén 0-ról 1-re változik.Azt szeretném, hogy az 1-el inditott behelyettesítés addig menjen, mig a DK1 cella értéke 0-ról 1-re nem változik.Az 1500 számig terjedő behelyettesítésre akár 3 ilyen is előfordulhat, hogy a DK1 cella 0-ról 1-re változik, de van olyan is amikor csak 1-szer, meg olyan is, amikor egyszer sem, ezért nem jó nekem a célértékkeresés.A DK1 cella egyébként egy HA függvényt tartalmaz, ami sok cella értékét figyeli, és ennek csak 0 vagy 1 az értéke.

Ezt hogy lehetne megoldani?
Előzmény: Törölt nick (13015)
Törölt nick Creative Commons License 2010.10.17 0 0 13015
megmeg
Előzmény: repuleskepekben (13014)
repuleskepekben Creative Commons License 2010.10.17 0 0 13014
A Solver-nél ott meg lehet adni, hogy a behelyettesített értékek mondjuk egész számok legyenek, és mondjuk 1-től 500 ig terjedjen?
Előzmény: Törölt nick (13012)
Törölt nick Creative Commons License 2010.10.17 0 0 13013
B2 helyett B1 természetesen
Előzmény: Törölt nick (13012)
Törölt nick Creative Commons License 2010.10.17 0 0 13012
Nem értem. Ebben az esetben egy sima összeadás/kivonással ki lehet számolni a B2 cella értékét - hogy a C2=1 legyen
=J1-H1-G1-F1

vagy:
1. Célérték keresés
vagy
2. Solver (A bővítményeknél be kell kapcsolni)
vagy
3. Makró számolós ciklussal
4. Makró, aminek kivanja a J1-H1-G1-F1 cellák értékét egymásból és visszaadja a B2 cellának :)





Előzmény: repuleskepekben (13011)
repuleskepekben Creative Commons License 2010.10.17 0 0 13011
Sziasztok!

A következő megoldására kérném a segítségetek.

Van egy munkalap, ahol van egy léptető. A léptető 1-től több ezerig terjedhet.Ez a léptető a B1 cellához van rendelve.

F1 cella 112
G1 cella 21
H1 cella 33 értékekkel rendelkezik.

J1 cella a 281-es értékkel rendelkezik

C1 cellában a képlet : =SZUM(B1;F1;G1;H1)
C2 cellában a képlet : =HA(C1=J1;1;0)

A munkalap:

A kérdésem az lenne, hogy hogyan lehet azt megoldani, hogy a léptető, vagy esetleg nyomógombbal elinditani a B2-es cellát 1-től, és addig léptetné magától, mig a C2 cella értéke 1-re nem változik.És ennek hatására megállna a léptető.Vagy esetleg nyomógomb hatására indulna el a léptető álltal vezérelt cella, és a C2 értékének 1-re váltása hatására állna meg. Ezt meg lehet oldani?

O. Kán Creative Commons License 2010.10.16 0 0 13010

Fantasztikus! Hogy Te miket tudsz...:)

 

(A public-ra már én is rájöttem korábban, de erre a paraméterezésre...Köszi!)

Előzmény: Törölt nick (13008)
Törölt nick Creative Commons License 2010.10.16 0 0 13009
ha egy képletet tartalmazó cellára szeretnél adatérvényesítést, akkor pl. az adatérvényesítésben ugyanazt a képletet kell megadnod, ami a cellában van. (Adatérvényesítés --> "Egyéni")
Előzmény: repuleskepekben (13005)
Törölt nick Creative Commons License 2010.10.16 0 0 13008
"ez a szubrutin egy "...beforedoubleclick" eseménykezelőben van, amit nem tudok a szokásos call paranccsal meghívni."

Nem biztos, hogy nem tudod. Ha például

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'kód
End Sub

helyett az eseménykezelőd így néz ki:

Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'kód
End Sub

akkor simán meghívható például így:

Sub hívás
Munka1.Worksheet_BeforeDoubleClick Range("A1"), False
End Sub

Feltéve, hogy a Munka1 kódnevű munkalaphoz tartozik. A szubrutin belsejétől függően fontos lehet, hogy a Range("A1"), False paraméterek helyén mit adsz meg.
Előzmény: O. Kán (13007)
O. Kán Creative Commons License 2010.10.16 0 0 13007

"...és egyszerűen meg kellene hívni az XYZ szubrutint"

 

Bocsánat, erre még nem reagáltam: azt is megpróbáltam, hogy meghívom, de ez a szubrutin egy "...beforedoubleclick" eseménykezelőben van, amit nem tudok a szokásos call paranccsal meghívni.

Előzmény: Törölt nick (13003)
O. Kán Creative Commons License 2010.10.16 0 0 13006

Azért szeretném (szerettem volna) meghívni makróból a szubrutint, mert az egy többlépcsős makró lett volna, összesítve a különböző, egyébként önállóan működni képes szubrutinokat. Így nem marad más hátra, mint a "...beforedoubleclick"-be írt szubrutint átmásolom egy sima, nem eseménykezelős makróba (amit sajnos még át kell szerkesztenem, hogy így is futni tudjon), és ezt hívom meg az összesítőbe.

 

Köszönöm a választ mindenkinek. :)

Előzmény: Törölt nick (13003)
repuleskepekben Creative Commons License 2010.10.16 0 0 13005
Az a bajom, közben rájöttem, hogyha egy cellába csak beírom az adott értéket, amire adatérvényesítést kérek, akkor minden jól működik.Da ha egy olyan cellára kérem, ami több más cellából ad ki eredményt, azaz képletet tartalmaz, akkor már nem müködik az adatérvényesítés.Nekem erre a cellára kellene.Azaz ha a cella értéke több másik cellával összefüggésben olyanra változik amelyre szeretném, akkor az adatérvényesítés figyelmeztessen.
repuleskepekben Creative Commons License 2010.10.16 0 0 13004
Az adatérvényesítést próbálgatom, de nem tudom beállítani.Ha ott bejönne egy ablak, az jó lenne, de nem tudtam megcsinálni adatérvényesítéssel.
Hogy kell azt beállítani?
Előzmény: Törölt nick (12985)
Törölt nick Creative Commons License 2010.10.16 0 0 13003
Igazad van, az Application.DoubleClick tényleg nem csinál semmit (legalábbis semmi láthatót). A kérdés inkább az, miért akarod VBA kóddal emulálni a dupla kattintást. Mert ez most így néz ki (ha jól értem):

1) emulálod kóddal a duplakattintást,
2) erre a DoubleClick eseménykezelő lefut,
3) és meghívja az XYZ szubrutint.

Az első két lépés simán kihagyható lenne, és egyszerűen meg kellene hívni az XYZ szubrutint.
Előzmény: O. Kán (12999)
Törölt nick Creative Commons License 2010.10.16 0 0 13002

"Másrészt, ehhez a munkafüzethez beszúrok egy modul lapot, amire a következő makrót írom

 

Sub dlck()
Sheets("munka1").Select
Application.DoubleClick
End Sub"

 

Szerintem, ez felesleges.

 

"Egyrészt, egy munkalaphoz (a neve mondjuk "munka1") odateszem azt a makrót, amit írsz"

 

Javaslom, hogy ezt így tedd meg:

 

 

Előzmény: O. Kán (12999)
Delila_1 Creative Commons License 2010.10.16 0 0 13001
A Personal.xls úgy jött létre, hogy egy makrórögzítésnél a makró helyénél az "Egyéni makró-munkafüzetben" opciót választottad. Amelyik makrót a personalba írod, az minden megnyitott füzetben futtatható, mert ezt a fájlt az Excel indításkor betölti, háttérben. Ez kiválóan alkalmazható, pl. arra, hogy egy kijelölt területet bármelyik füzetben egy kattintással a kedvenc formátumodra alakítsd.

Ha a modullapon a makrók fölött beállítod az SQL által említett Option Explicit-et, futtatáskor azonnal kapsz egy üzenetet, ha dimenzionálás nélküli változót akarsz alkalmazni (UjNeve).
Előzmény: wawabagus (12996)
Törölt nick Creative Commons License 2010.10.15 0 0 13000
De működik.
A modullapra rakott makród teljesen független a munkalap eseménykezelőjében lévőtől.

Az Application.DoubleClick lövésem nincs mire való, de szerintem nem erre amire te akarod használni. Valaki leírhatná mie való...
Előzmény: O. Kán (12999)
O. Kán Creative Commons License 2010.10.15 0 0 12999

Köszi, de nem működik.

 

Egyrészt, egy munkalaphoz (a neve mondjuk "munka1") odateszem azt a makrót, amit írsz

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  MsgBox "Dupla klikk"
  Cancel = True
End Sub

 

 

Másrészt, ehhez a munkafüzethez beszúrok egy modul lapot, amire a következő makrót írom

 

Sub dlck()
Sheets("munka1").Select
Application.DoubleClick
End Sub

 

Amikor aztán elínditom ez utóbbi makrót, akkor nem fog a msgbox megjelenni (és egyébként sem történik semmi a makró következtében). 

Előzmény: Törölt nick (12957)
Herold Creative Commons License 2010.10.15 0 0 12998
Sikerült, köszönöm.
Előzmény: Törölt nick (12994)
Törölt nick Creative Commons License 2010.10.15 0 0 12997
spec alighanem azárt szürke, mert jelszóval védve.
Előzmény: Herold (12993)
wawabagus Creative Commons License 2010.10.15 0 0 12996
Szia!
:-))))...igenigen, ezt én is észrevettem már :-DDD.
Köszi a sasszemet!
:-)
Előzmény: Delila_1 (12991)
wawabagus Creative Commons License 2010.10.15 0 0 12995
Szia!
Nagyon köszönöm a válaszod!
Az a jel ott volt a macroban, nem is értem hogyan sikerült ezt rosszul bekopiznom.
Viszont nagyon köszönöm ezt az tippert használni fogom.

Igazánból valami nagyon fura dolgot műveltem a makróval, amit abszolút nem értem.
Létrehoztam egy PERSONAL nevű fájlt a próbálgatásaim során...de én nem akartam...:-D
Szóval szerintem az excel tényleg nem értte mi az aktív munkafüzet.

Azt szeretném még kérdezni, hogy ha ezt a makrót szeretném több ember számára hozzáférhetővé tenni azt hogyan tudom.

A makróm, ami egyébként 99%-ban kész /nagyon éleveztem :-D/ úgy kéne működnie, hogy külön gépeken te tudják futtatni...

Ezt hogyan tudom praktikusan megoldani? Lehetne template-tel, de itt ez nem jöhet szóba.

Hova kell bemásolniuk?

Köszi az infót és még egyszer a segítséget!
:-)
Előzmény: SQLkerdes (12990)
Törölt nick Creative Commons License 2010.10.15 0 0 12994
ALT+F11

Itt alapban a bal oldalon látható felületen keresd meg a "Modul" lapokat, amelyekre dupla kattintással megnyílik egy szkript, amit kézzel ki tudsz törölni.
(Ha nincs levédve jellszóval...)
Előzmény: Herold (12993)
Herold Creative Commons License 2010.10.15 0 0 12993
A makrót hogy tudom kitörölni egy dokukmentumból? (Office XP-t használok).
Az Eszközök/Makrók/Makró menüpontban ha kijelölöm a makró nevét, a Törlés gomb szürke, nem lehet törölni.
SQLkerdes Creative Commons License 2010.10.15 0 0 12992
Szép találat!

Ezért kell használni az OPTION EXPLICIT-et!
Előzmény: Delila_1 (12991)
Delila_1 Creative Commons License 2010.10.15 0 0 12991
A fájlnév megadásakor UjNev a változód neve (helyfoglaláskor is), mentéskor UjNeve.
Mivel az UjNeve értéke üres string, nem tudja elmenteni.
Egy betű ilyen galibát okozhat.
Előzmény: wawabagus (12986)
SQLkerdes Creative Commons License 2010.10.15 0 0 12990
A ThisWorkbook mindíg az a workbook, ami a kódot tartalmazza, szóval a definiálással nincs gond.

A probléma az lehet, hogy utána az ActiveWorkbook object-tel akarsz valamit csinálni, de lehet, hogy az új Workbook-ot nem activáltad.

Az új workbook-ot a kód futása közben hozod létre, mert akkor a következő technikát ajánlom:

Dim UjWorkbook as workbook (itt csak definiálsz egy object-et amit később fogunk használni)
Set UjWorkbook = workbooks.add (innentől az új workbook-ra bármikor hivatkozhatsz, mint 'ujworkbook', igy sose keveredsz bele, hogy éppen melyik workbook-kal csinálsz dolgokat
... (kód többi része)
ujworkbook.saveas ... (innen az jön amit eddig is csináltál, csak a bizonytalan Activeworkbook helyett a tuti ujworkbook object-et hivatkozod a kódban).


Előzmény: wawabagus (12986)

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