Keresés

Részletes keresés

SQLkerdes Creative Commons License 2011.02.02 0 0 13922

Ha a beszúrást megcsinálja, de a függvényt nem illeszti be, akkor a gond az lehet, hogy a Do While ActiveCell.Value <> Empty rész félreviszi a kódot és oly módon értékelődik ki, hogy csak egyetlen egyszer kerül be a loop belsejébe a kód.

 

Feltéve de nem megengedve, hogy ez igaz, én nem az ActiveCell object-re hivatkoznék, hanem valahogy máshogy hivatkoznám meg azt a területet amit ki akarsz értékeltetni.  Könnyen lehet, hogy az activecell nem változik a kód futásakor, vagyis nem végigfut az oszlopokon, henem beáll egy cellára, oda beilleszti a függvényt és nem mozdul.  Amikor a loop megint kiértékelteti, hogy az activecell üres-e, akkor azt látja, hogy nem (mert az első lépésben bekerült a képlet) és  jgy a kód megy tovább dolgára.

 

Pont ez az oka annak, hogy Select-et, Active-et meg Active-val kezdődő objecteket nem best practice használni, mert nehéz kiokoskodni, hogy a program futásakor épp mi lesz az Active.

Előzmény: wawabagus (13920)
Törölt nick Creative Commons License 2011.02.02 0 0 13921

Szerintem, a "FajlNev = ActiveWorkbook.Name" visszaadja a kiterjesztést is, nem kell külön hozzáilleszteni.

Előzmény: Sznida (13919)
wawabagus Creative Commons License 2011.02.02 0 0 13920

Szia!

Köszi, közben kieszeltem egy másik megoldást, ami működni látszik :-)...

Csak a loop-pal nem stimmel valami...

vagyis a for-ral, tehát hogy minden munkalapon megismételje a munkát.

 

Szerintem mit rontottam el?

Beszúr mindenhova egy oszlopot, pont mint kértem az első sheeten meg is csinálja a függvényt, de a többi sheetre már nem teszi be...valami hibádzik :-DDD.

 

Mi lehet a gond?

Köszi!!

 

Sub teszt2()

Dim PriceList As Variant
Dim CheckFile As Variant
Dim x As Long

MsgBox "Open the file you want to check!"
Application.Dialogs(xlDialogOpen).Show


MsgBox "Open the PriceList!"
Application.Dialogs(xlDialogOpen).Show

PriceList = Workbooks(Workbooks.Count).Name
CheckFile = Workbooks((Workbooks.Count) - 1).Name


Workbooks(CheckFile).Activate
x = Worksheets.Count

For i = 1 To x
    Worksheets(i).Range("B:B").Insert Shift:=xlToRight
    Range("A2").Select
        
        Do While ActiveCell.Value <> Empty
            ActiveCell.Offset(0, 1).Value = "=RC[21]&""_""&RC[24]&""_""&RC[26]&"" Q""&ROUNDUP(MONTH(RC[6])/3,0)&""  ""&YEAR(RC[6])"
            ActiveCell.Offset(1, 0).Select
        Loop
Next i

End Sub

Előzmény: Sznida (13919)
Sznida Creative Commons License 2011.02.02 0 0 13919

Szia,

 

Megnyitás után tárolhatod az aktuális file nevét így:

 

FajlNev = ActiveWorkbook.Name & ".xls"

 

Üdv: Sznido

Előzmény: wawabagus (13918)
wawabagus Creative Commons License 2011.02.02 0 0 13918


Sziasztok!

Az alábbi makrót gyártottam és felmerült egy kis probléma.
A lényeg, hogy a felhasználónak ki kell választani a 2 db fájlt amin majd a makró futni fog.
Ehhez GetOpenFilename-t használok.

Viszont sokszor utalgatnék a fájlokra, de ez a fenti parancs az egész elérési útvonalat is belerakja a névbe...
Az viszont nem jó per pillant.
Hogyan lehetne azt megoldani, hogy a kliens:
1. kiválasztja a 2 db fájlt
2. fájlok meg is nyílnak
3. excel meg is jegyzi szépen a nevet de az elérési útvonal nélkül tehát pl: "JakabPista.xls"

Van valami praktikus tanácsotok ezzel kapcsolatban?

Nagyon köszönöm!!
------------------------
Sub Price_check()

Dim CheckFile As String
Dim PriceList As String

'Open Checkfile

MsgBox "Open the file you want to check!"

CheckFile = Application.GetOpenFilename
If CheckFile = "False" Then
MsgBox "No file was selected."
Exit Sub
End If

MsgBox "FileName is: " & CheckFile

'Open PriceList

MsgBox "Open the PriceList!"
PriceList = Application.GetOpenFilename
If PriceList = "False" Then
MsgBox "No file was selected."
Exit Sub
End If

MsgBox "FileName is: " & PriceList

Sznida Creative Commons License 2011.02.02 0 0 13917

Köszönöm szépen!

Előzmény: Törölt nick (13916)
Törölt nick Creative Commons License 2011.02.02 0 0 13916

Kiindulásnak:

Dim ShellAppl As Object

Set ShellAppl = CreateObject("Shell.Application"). BrowseForFolder(0, "Válaszd ki a ktárat", 0, "kiinduló könyvtár elérési útját itt add meg")

Előzmény: Sznida (13915)
Sznida Creative Commons License 2011.02.02 0 0 13915

Megtaláltam, ha esetleg valakinek még szükszége lenne rá:

itt megtalálhatja!

 

Üdv: Sznido

Előzmény: Sznida (13914)
Sznida Creative Commons License 2011.02.02 0 0 13914

Sziasztok,

 

Hogyan lehet VBA-ban bekérni egy file elérési útját?

Van egy kód, ami email-ben csatolt file-t küld automatikusan, ha nem találja az általam beírt file, akkor meg akarom kérdezni a felhasználót, hogy adja meg az elérési utat. Mivel már nem DOS-ban dolgozunk, ezért nem várható el egy átlagos felhasználótó, hogy egy inputbox-ba írja be, hogy "c:file.txt", ezért egy olyan ablakot szeretnék kiadni a képernyőre, mint például a megynyitás, vagy a mentésnél.

Tud valaki segíteni!

 

Köszönettel: Sznido

Nemgéza66 Creative Commons License 2011.02.01 0 0 13913

A dekódoláson még dolgozok, de addig is küldtem egy emailt.

Előzmény: Delila_1 (13912)
Delila_1 Creative Commons License 2011.02.01 0 0 13912

Egyszerre írtunk (nagyjából). Itt a kép hozzá.

 

Előzmény: Nemgéza66 (13910)
Delila_1 Creative Commons License 2011.02.01 0 0 13911

Próbálom kitalálni, hogy is nézhet ki a táblázatod. Most erre tippelek:

 

 

Az F3 képlete látszik a szerkesztőlécen, az L oszlopét már írtam.

 

Előzmény: Nemgéza66 (13908)
Nemgéza66 Creative Commons License 2011.02.01 0 0 13910

 Az azonosítókhoz tartozó összegek (a lehívások összegei) a te táblázatod szerint az E oszlopban szerepelnek.

Az én táblázatom szerint az első 2500-as értékről van szó, és azt szertném, ha a sárgával jelölt cellába automatikusan beíródna.

 

Lehet, hogy nem írtam le jól, hogy mire lenne szükség, megpróbálom újból.

 

Tehát ha felviszi valaki a táblázatba a 4 azonosítót, az első alkalommalmég  neki kell beírnia, hogy milyen értékű a lehívás.

Amikor viszi fel a következőket, akkor azt szeretném, hogy ha már volt korábban ilyen lehívás akkor az E oszlopba beírná annak az értékét. Tehát a sok lehívásnál elég legyen csak a legelső alkalommal beírni az összeget, ha legközelebb előkerül ugyan az akkor már töltse ki a cellát a korábbi érték szerint.

Előzmény: Delila_1 (13909)
Delila_1 Creative Commons License 2011.02.01 0 0 13909

Ha 1 lapon vannak, írd meg, melyik oszlopban mi található. Pl. melyikben vannak az összegek, amik az A:D oszlopokba írt száll. azonosítókhoz tartoznak.

 

 

A hivatkozásokból hagyd ki a Munka1!-et, és jó lesz, ha a táblázatod az itteni kép szerinti.

Előzmény: Nemgéza66 (13908)
Nemgéza66 Creative Commons License 2011.02.01 0 0 13908

Hát ezt át kell rágjam alaposan. :-)

 

Most így elsőre azt nem értem, hogy miért kell 2 munkalapról beszélnünk. Na de nem is mondok semmit amíg át nem nézem  a megoldást.

Delila_1 Creative Commons License 2011.02.01 0 0 13907

Vegyük, hogy a Munka1 lapon vannak a bevitt értékek, és a csatolt kép (amire rákattintva mindjárt olvasható lesz a szöveg) a Munka2 lapon.

 

A Munka2 L oszlopában összefűztem a A:D tartomány adatait, köztük szóközzel.

=A3&" "&B3&" "&C3&" "&D3

 

A kereső képlet szép hosszú, ketté vágtam:

 

=HA(DARABTELI(L:L;L3)>1;SZUMHATÖBB(Munka1!E:E;Munka1!A:A;A3;

Munka1!B:B;B3;Munka1!C:C;C3;Munka1!D:D;D3);"")

 

Ez akkor igaz, ha a Munka1 lap E oszlopában szerepelnek az összegek.

Előzmény: Nemgéza66 (13896)
Nemgéza66 Creative Commons License 2011.02.01 0 0 13906

Az én kérédésemre nem tudja valaki a megoldást?

Delila_1 Creative Commons License 2011.02.01 0 0 13905

Tudtommal nem.

Előzmény: RuN3$ (13904)
RuN3$ Creative Commons License 2011.02.01 0 0 13904

Köszönöm a válaszokat!

2007 ben megtudtam csinálni 2003 ban kűzdök.

=SZORZATÖSSZEG((A1:A10=1)*(B1:B10="A")) Kiválóan működik!

DARABTELI és a HA kombinálásával is meglehet megoldani?

 

Előzmény: Delila_1 (13903)
Delila_1 Creative Commons License 2011.02.01 0 0 13903

Régebbi verziónál

 

=SZORZATÖSSZEG((A1:A10=1)*(B1:B10="A"))

Előzmény: RuN3$ (13901)
SQLkerdes Creative Commons License 2011.02.01 0 0 13902

Használd a SUMIFS függvényt, xl 2007 és 2010-ben elérhető.

Ha xl 2003-at vagy korábbit használsz akkor tömbfüggvényt kell használj.

Előzmény: RuN3$ (13901)
RuN3$ Creative Commons License 2011.02.01 0 0 13901

Hello.

 

Milyen logikai képlet kombinécióval lehet azt megvalósítani hogy:  számolja össze azokat a sorokat C1 be ahol az A1 ben "1" áll és a B oszlopban "A" ?

A oszlop   Boszlop   C oszlop

     1               A        2

     2               A

     1               A

     2               B

gessztenye1 Creative Commons License 2011.02.01 0 0 13900

Megtaláltam a megoldást.

Tehát Excel beállításai -> speciális -> beállítások megjelenítése ehhez a munkafüzethez -> Objektumoknál megjelenítendő -> "semmi" helyett "minden" beklikkelése.

Előzmény: gessztenye1 (13899)
gessztenye1 Creative Commons License 2011.02.01 0 0 13899

Sziasztok!

 

Egy táblázatba szeretnék beszúrni esetenként sorokat, de a "Az objektumok nem vihetők lapon kívülre" szöveget kapom. A táblán nincs rejtve se sor, se oszlop. Mitől lehet még ilyen?

Nemgéza66 Creative Commons License 2011.02.01 0 0 13898

Emberi számítás szerint nem lesz csak 2007-es vagy majd újabb verzióval használva.

SQLkerdes Creative Commons License 2011.01.31 0 0 13897

Az a file ami a kívánt képletet tartalmazza lesz valaha megnyitva 2007-esnél alacsonyabb verziójú excelben?  Tehát pld xl 2003-ban és alacsonyabban...

Mert ettől függ, hogy mi lesz a függvény.

Előzmény: Nemgéza66 (13896)
Nemgéza66 Creative Commons License 2011.01.31 0 0 13896

 

Milyen módon lehet tudnék ide egy kis minta táblázatot bemásolni?

 

Próbáltam excelből, word-ből pdf-ből, de semmi sem lesz olvasható.

 

 

 

Nem igazán látszik az eredeti táblázat, legalább a szöveget kimásolom ide:

 

Azt szeretném megoldani, hogy ha egy lehívás azonosítóit beírom az első 4 oszlopba, akkor minden sor F oszlopában lévő cella nézze végig, hogy ilyen azonosítójú lehívás van-e már a táblázatban, ha van akkor annak az F2  cellában lévő értékét (most ez példaként 250.000 a fenti táblázatban) írja be a saját sorába is az F oszlopba. Ha még nincs ilyen lehívás, akkor ne írjon be a cellába semmit.

 

 

 

 

 

wawabagus Creative Commons License 2011.01.31 0 0 13895

Szia!

Előszöris köszönöm a válaszod.

A lent írt makró csak egy kezdemény...azért színezek csak, hogy teszteljem érthető-e az excel számára melyik fájlon kell dolgozni.

Biztos létezik értelmesebb módja is...

Ez igazából egy mini teszt volt...de már itt elbuktam :-))))...

 

Az utolsó V1-es aktivációnak tényleg semmi értelme, véletlen hiba. Bocs, hogy összezavartalak.

 

A futás közben már itt hibát jelez:

Workbooks(CheckFile).Worksheets(1).Range("A1").Select

 

És a legjobban attól tudok falramászni, hogy ezek a megoldások már más makróbal működtek.

És persze a tied működik...

Köszönöm.

 

Kikészülök...

 

Nincs valami tanfolyam ahol szép lassan tanítják a VBA-t? :-DDD, nem intenzív kurzuson.

Írtam már egy csomó makrót, de ahelyett hogy egyre okosabb lennék egyre hülyébb vagyok benne.

 

Köszi a segítséget!!

 


Előzmény: SQLkerdes (13894)
SQLkerdes Creative Commons License 2011.01.31 0 0 13894

Jól látom, hogy sárgára és zöldre akarod festeni bizonyos workbook-ok bizonyos worksheetjeinek A1 celláját?

Milyen hibát tapasztalsz?  Fut de nem azt csinálja amit szeretnél (hanem mit?) vagy le sem fut?

 

Sub Price_check()
'
' Price_check Macro

MsgBox "Open the file you want to check!"
Application.Dialogs(xlDialogOpen).Show


MsgBox "Open the PriceList!"
Application.Dialogs(xlDialogOpen).Show

PriceList = Workbooks(Workbooks.Count).Name
CheckFile = Workbooks((Workbooks.Count) - 1).Name
Jó esély van arrra, hogy itt elrontja, hogy melyik file a PriceList file és melyik a CheckFile.  Lehet érdemes lenne a file-okat azok megnyitásakor hozzárendelni a nevükhöz...
'Zöld

Workbooks(CheckFile).Worksheets(1).Range("A1").Select

    With Selection.Interior
        .ColorIndex = 43
        .Pattern = xlSolid
    End With

'Sárga

Workbooks(PriceList).Worksheets(1).Range("A1").Select

    Range("V1").Activate  Miért aktiválsz itt bármit is?  Mi a szerepe a V1 cellának?  Ha a V1-et akarod formázni akkor fentre nem kell az A1, v. fordítva.
    With Selection.Interior
        .ColorIndex = 36
        .Pattern = xlSolid
    End With

End Sub

 

Én lebeszélnélek a Select parancs használatáról, hagyd ki csak lassítja a kódot és nehezebb átlátni.

 

Az első With / End with átírva:

 

With Workbooks(CheckFile).Worksheets(1).Range("A1").Interior
        .ColorIndex = 43
        .Pattern = xlSolid
End With

 

Hát nem sokkal szebben látszik, hogy mivel csinálsz mit?

Előzmény: wawabagus (13893)
wawabagus Creative Commons License 2011.01.31 0 0 13893

Sziasztok!

Mit csináltam már megint rosszul?

Méééééé nem akar működni?

Köszönöm a kritikát! :-)

 

Sub Price_check()
'
' Price_check Macro

MsgBox "Open the file you want to check!"
Application.Dialogs(xlDialogOpen).Show


MsgBox "Open the PriceList!"
Application.Dialogs(xlDialogOpen).Show

PriceList = Workbooks(Workbooks.Count).Name
CheckFile = Workbooks((Workbooks.Count) - 1).Name

'Zöld

Workbooks(CheckFile).Worksheets(1).Range("A1").Select

    With Selection.Interior
        .ColorIndex = 43
        .Pattern = xlSolid
    End With

'Sárga

Workbooks(PriceList).Worksheets(1).Range("A1").Select

    Range("V1").Activate
    With Selection.Interior
        .ColorIndex = 36
        .Pattern = xlSolid
    End With

End Sub

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