Excel kérdés
Jelentkezz be a hozzászóláshoz.
Elõre is elnézést kérek a fogalmazásért de nem vagyok egy nagy excell szakértõ.
Van két különálló excell tábla, az "A" oszlopban a megnevezés mind a kettõben megegyezik.
A másodikban viszont nincs meg minden megnevezés ( az elsõ excellben van 5000 sor a ásodikban 4325)
Hogy tudom megoldani, hogy az ugyanolyan megnevezésûek egymás mellé kerüljenek miután a második tábla adatait a "B" oszlopba másolom.
=HA(C1=0;0;HA(C1<=10000;5200;C1/10000*5200))
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
=HA(A1=$Y$1;0;HA(C1<=1;5200;C1*5200))
ha 1 m2 ig 0 írjon ki akkor meg ez:
=HA(A1=$Y$1;0;HA(C1<=1;0;C1*5200))
nem igen értettem meg melyik kell! :-)
lényeg az hogy az Y1 cella mindig üres legyen :-)
Az Élet nem más mint egy hosszú Halál! \"Belül én már rég meg haltam csak a maszkom él.\" - Junkies Nyúljon meg a nyaka bogyokának, s legyen kék a nyelve!
Elõre is köszi.
A C2 képlete: =HA(B2<1;A2;A2*B2)
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Egy olyan kérdésem lenne, hogy excelben szeretnék számolni m2-t, viszont nem tudom megadni, hogy 1m2 alatt adott egységárral számoljon. tehát pl ha 1 m2 5200 Ft akkor 0,7 m2 is 5200 Ft legyen stb.
Tudna valaki segíteni?
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Örülök, h. végre rátaláltam erre a fórumra, mert bizony gyakran elakadok. Írtam egy kis progit excell2003-ban, ami megkönnyíti egy nyugdíjas orvosnak a gyógyszerekhez írni a recepteket, amiket eddig kézzel (és sok hibával) írt. Adódott egy újabb recept, amihez egy jpg.fájlt kellene kinyomtatni, de attól függõen, h. egy bizonyos cellában milyen szám van. Most ha erre kerül a sor, mindig egérrel odaillesztem. Nem lehetne ezt függvénnyel csinálni?
Remélem, most már eljut a kérdésem egy hozzáértõ emberhez!
Az "A" oszlopban gyûjtöm egy játékhoz tartozó nickeket, amikhez tartozik egy-egy hyperhivatkozás is. Ha a nickre klikkelek, akkor ugrás történik arra a nickre, akivel utoljára játszott. Ctrl+C majd Ctrl+V-vel át tudom másolni a hyperhivatkozást a "B" oszlop egy cellájába, de szeretném ezt egy függvényre bízni, mert több ezer ilyen adat van. Nem találok ilyen függvényt. Lehet, h. nincs is? Ha makrót kell írni hozzá, az nekem kínai.
Ez a két bõvítmény egy halom hasznos új függvényt ad, érdemes tanulmányozni.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Ha megnyitom utána, akkor a kijelölés az eredeti helyén marad, és hibába kattintok máshova, már csak a normál keret mûködik, mintha nem is lett volna benne makró, viszont ahol volt, ott úgy marad, mintha formázva lennének a cellák.
"ha én rákattintok egy cellára, akkor az adott sort kiemelje? A jobb átláthatóság érdekében..."
Akkor mit is akarsz? Írd le pontosabban.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Mûködik, egészen addig, míg mentek, majd kilépek, és belépéskor ott marad a kijelölés, és minden marad a régiben.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.FormatConditions.Delete
With Target
With .EntireRow
.FormatConditions.Add Type:=xlExpression, Formula1:="1"
With .FormatConditions(1)
With .Borders(xlTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
With .Borders(xlBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
.Interior.ColorIndex = 20
End With
End With
With .EntireColumn
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="1"
With .FormatConditions(1)
With .Borders(xlLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
With .Borders(xlRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 5
End With
.Interior.ColorIndex = 20
End With
End With
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="1"
.FormatConditions(1).Interior.ColorIndex = 36
End With
End Sub
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Excelben be lehet azt állítani, hogy ha én rákattintok egy cellára, akkor az adott sort kiemelje? A jobb átláthatóság érdekében...
Az Excellel hihetetlen sok feladatot meg lehet oldani, de ahhoz ismerni kell a mûködését. Nulla ismerettel nem megy!
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Köszönöm!Igen, ez a legegyszerûbb fatengelyes elv, csak az a gond, hogy ha mindent ami sallang hó fehérre tolok, akkor van a bibi, ugyanis nem látom hova meg mit is írok be fekete színnel. 😊 Érted?!
Azért köszönöm!Mivel rájöttem h az excel fos úgy ahogy van, mivel nem lehet megadni egy cella méretét mm-ben, vagy cm-ben, így word-ben szerkesztem tovább a mai nap ezt a munkalap szerû táblázatot. Nem egyszerû eset. Na majd kitalálom.
..::http://takrisz.fw.hu::..
azon cellák amelyek nem kellenek (sallang) azoknak a betûszíneit változtasd a háttér színére. gondolom fehérre. s akkor csak azokat fogod látni mik kellenek s azt is fogja kinyomtatni. szerintem más megoldás nincs, de ha türelmesebb vagy s van akkor majd kapsz választ.
Az Élet nem más mint egy hosszú Halál! \"Belül én már rég meg haltam csak a maszkom él.\" - Junkies Nyúljon meg a nyaka bogyokának, s legyen kék a nyelve!
Olyan kérdésem lenne, hogy ha excelben akarok nyomtatni egy nyomtatványt mátrix nyomtatóval úgy, hogy csak az értékek nyomtatódjanak a megfelelõ részen a papírra, és a többi sallang ne (megszerkesztett keret, címek, stb..) , akkor azt hogyan tudom megcsinálni?
Valahogy egybe kellene fagyasztani az alap táblázatot, és csak az utólagosan beírt értékeket szeretném kinyomtatni.
Köszönöm!
..::http://takrisz.fw.hu::..
Visszatérsz az Excelbe. Alt+F8-ra bejönnek a makrók, a kiválasztott "szortiroz"-hoz az Egyebek gomb segítségével gyorsbillentyût rendelhetsz. Amikor kiválasztasz az A1-ben egy számot, a Ctrl+a megadott billentyû a helyére teszi.
Bemásoltam a mostani változatot, elég sajátságos az elrendezés, nem látok benne rendszert, de te tudod, mit akarsz.
Az elsõ adatot mindegyik oszlopban a 6. sorba írja, a következõt alá, az jó. Nem értem, mi a gondod.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Sub szortiroz()
Dim a As Variant, oszlop As Integer, usor As Integer
Dim k As Integer, sz As String
a = Left(Cells(1), 5)
Select Case a
Case 10000
oszlop = 11: k = 5: GoTo Szort
Case 20000
oszlop = 12: k = 5: GoTo Szort
Case 30000
oszlop = 15: k = 5: GoTo Szort
Case 40000
oszlop = 20: k = 5: GoTo Szort
Case 50000
oszlop = 25: k = 5: GoTo Szort
End Select
a = Left(Cells(1), 4)
Select Case a
Case 1000
oszlop = 8: k = 4: GoTo Szort
Case 2000
oszlop = 9: k = 4: GoTo Szort
Case 3000
oszlop = 14: k = 4: GoTo Szort
Case 4000
oszlop = 19: k = 4: GoTo Szort
Case 5000
oszlop = 10: k = 4: GoTo Szort
End Select
a = Left(Cells(1), 3)
Select Case a
Case 100
oszlop = 5: k = 3: GoTo Szort
Case 200
oszlop = 6: k = 3: GoTo Szort
Case 300
oszlop = 13: k = 3: GoTo Szort
Case 400
oszlop = 18: k = 3: GoTo Szort
Case 500
oszlop = 7: k = 3: GoTo Szort
End Select
a = Left(Cells(1), 2)
Select Case a
Case 10
oszlop = 2: k = 2: GoTo Szort
Case 20
oszlop = 3: k = 2: GoTo Szort
Case 30
oszlop = 24: k = 2: GoTo Szort
Case 40
oszlop = 17: k = 2: GoTo Szort
Case 50
oszlop = 4: k = 2: GoTo Szort
End Select
a = Left(Cells(1), 1)
Select Case a
Case 1
oszlop = 21: k = 1: GoTo Szort
Case 2
oszlop = 22: k = 1: GoTo Szort
Case 3
oszlop = 23: k = 1: GoTo Szort
Case 4
oszlop = 16: k = 1: GoTo Szort
Case 5
oszlop = 1: k = 1: GoTo Szort
End Select
Szort:
sz = Trim(Cells(1) & "")
If Cells(6, oszlop) > "" Then
usor = Cells(65536, oszlop).End(xlUp).Row
Cells(usor + 1, oszlop) = Right(sz, Len(sz) - k)
Else
Cells(6, oszlop) = Right(sz, Len(sz) - k)
End If
End Sub
Megírtam az újabb óhajodnak megfelelõen. Innen másold be, hogy ne legyen elírás.
Sub szortiroz()
Dim a As Variant, oszlop As Integer, usor As Integer
Dim k As Integer, sz As String
a = Left(Cells(1), 5)
Select Case a
Case 10000
oszlop = 5: k = 5: GoTo Szort
Case 20000
oszlop = 10: k = 5: GoTo Szort
Case 30000
oszlop = 15: k = 5: GoTo Szort
Case 40000
oszlop = 20: k = 5: GoTo Szort
Case 50000
oszlop = 25: k = 5: GoTo Szort
End Select
a = Left(Cells(1), 4)
Select Case a
Case 1000
oszlop = 4: k = 4: GoTo Szort
Case 2000
oszlop = 9: k = 4: GoTo Szort
Case 3000
oszlop = 14: k = 4: GoTo Szort
Case 4000
oszlop = 19: k = 4: GoTo Szort
Case 5000
oszlop = 24: k = 4: GoTo Szort
End Select
a = Left(Cells(1), 3)
Select Case a
Case 100
oszlop = 3: k = 3: GoTo Szort
Case 200
oszlop = 8: k = 3: GoTo Szort
Case 300
oszlop = 13: k = 3: GoTo Szort
Case 400
oszlop = 18: k = 3: GoTo Szort
Case 500
oszlop = 23: k = 3: GoTo Szort
End Select
a = Left(Cells(1), 2)
Select Case a
Case 10
oszlop = 2: k = 2: GoTo Szort
Case 20
oszlop = 7: k = 2: GoTo Szort
Case 30
oszlop = 12: k = 2: GoTo Szort
Case 40
oszlop = 17: k = 2: GoTo Szort
Case 50
oszlop = 22: k = 2: GoTo Szort
End Select
a = Left(Cells(1), 1)
Select Case a
Case 1
oszlop = 1: k = 1: GoTo Szort
Case 2
oszlop = 6: k = 1: GoTo Szort
Case 3
oszlop = 11: k = 1: GoTo Szort
Case 4
oszlop = 16: k = 1: GoTo Szort
Case 5
oszlop = 21: k = 1: GoTo Szort
End Select
Szort:
sz = Trim(Cells(1) & "")
If Cells(10, oszlop) > "" Then
usor = Cells(65536, oszlop).End(xlUp).Row
Cells(usor + 1, oszlop) = Right(sz, Len(sz) - k)
Else
Cells(10, oszlop) = Right(sz, Len(sz) - k)
End If
End Sub
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Lenne 1 kérdésem excelben, remélem tudtok segíteni!
Szóval az lenne h van egy táblázatom, ahol nevek és fizetendõ összegek vannak. S ezt kellene átírnom egy másik táblázatba, úgy hogy ha változik a név, akkor az összeg is. Ez meg is van egy szûrõ illetve FKERES függvénnyel, ami rákeres az adott névre. Viszont a gond akkor van ha a név kétszer szerepel, akkor csak az elsõt írja ki, a második összeget nem. Erre tudtok valami h azt is kírja? (úgy mint az elsõ összeget, hogyha változik a név akkor ez is)
Pl:
Kovács János 3245
Nagy Béla 1457
Kovács János 1241
Így kellene: (egymás mellé, külön)
Kovács János
Fizetendõ:
3245 1241
Lvl 54 - 7:3 Hybrid Str Archer - Fire+Cold Lvl 30 - Full Str Glavie - Fire+Light (InAct) Lvl 52 - Full Int Warlock/Wizard
Ha az elõbbi hozzászólásomban leírtak szerint szeretnéd szétválogatni az adataidat, itt van hozzá a makró:
Sub szortiroz()
Dim a As Variant, oszlop As Integer, usor As Integer
a = Left(Cells(1), 5)
Select Case a
Case 10000
oszlop = 5: GoTo Szort
Case 20000
oszlop = 10: GoTo Szort
Case 30000
oszlop = 15: GoTo Szort
Case 40000
oszlop = 20: GoTo Szort
Case 50000
oszlop = 25: GoTo Szort
End Select
a = Left(Cells(1), 4)
Select Case a
Case 1000
oszlop = 4: GoTo Szort
Case 2000
oszlop = 9: GoTo Szort
Case 3000
oszlop = 14: GoTo Szort
Case 4000
oszlop = 19: GoTo Szort
Case 5000
oszlop = 24: GoTo Szort
End Select
a = Left(Cells(1), 3)
Select Case a
Case 100
oszlop = 3: GoTo Szort
Case 200
oszlop = 8: GoTo Szort
Case 300
oszlop = 13: GoTo Szort
Case 400
oszlop = 18: GoTo Szort
Case 500
oszlop = 23: GoTo Szort
End Select
a = Left(Cells(1), 2)
Select Case a
Case 10
oszlop = 2: GoTo Szort
Case 20
oszlop = 7: GoTo Szort
Case 30
oszlop = 12: GoTo Szort
Case 40
oszlop = 17: GoTo Szort
Case 50
oszlop = 22: GoTo Szort
End Select
a = Left(Cells(1), 1)
Select Case a
Case 1
oszlop = 1: GoTo Szort
Case 2
oszlop = 6: GoTo Szort
Case 3
oszlop = 11: GoTo Szort
Case 4
oszlop = 16: GoTo Szort
Case 5
oszlop = 21: GoTo Szort
End Select
Szort:
usor = Cells(65536, oszlop).End(xlUp).Row
If Cells(10, oszlop) > "" Then
Cells(usor + 1, oszlop) = Cells(1)
Else
Cells(10, oszlop) = Cells(1)
End If
End Sub
Rendelhetsz hozzá gyorsbillentyût: Alt+F8 -ra bejönnek a makrók. Kijelölöd a szortiroz nevût, az Egyebek gombra kapsz egy párbeszéd ablakot, ahol a Ctrl+ mellé beírod a betût, amelyikkel a billentyûzetrõl indíthatod.
Gombhoz is rendelheted.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Hány külön oszlop kell?
A10-tõl 1; B10-tõl 10; C10-tõl 100; D10-tõl 1000; E10-tõl 10000
F10-tõl 2; G10-tõl 20; H10-tõl 200; I10-tõl 2000; J10-tõl 20000
.
.
U10-tõl 5; V10-tõl 50; W10-tõl 500; X10-tõl 5000; Y10-tõl 50000 kezdetûek?
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Az eredeti makró nem figyeli, hogy a B2-be bevitt érték hány számjegybõl áll. Akkor ezt kérted: "...beírok egy értéket mondjuk B2-be és ha az 10-el kezdõdik akkor azt tegye a B10-be ha még egy 10-el kezdõdõt írok akkor azt a B11-be írja. És ha 20al kezdõdõt írok akkor azt a C10-be tegye és így tovább..?". A 10-zel kezdõdõ szám minimum 2, maximun akárhány számjegyû lehet.
Arra tippelek, hogy beviszel egy értéket az A1 cellába. Attól függõen, hogy ez hány számjegybõl áll, a B2, C2, és D2 cellákba kell szortírozni, illetve ha már van ezekben érték, a B, C és D oszlop következõ sorába kell másolni az A1-be beírt értéket.
Kérlek, ugorj neki újra, és próbáld meg pontosan leírni, mire van szükséged. Ha lehet, kicsit bõkezûbben bánj a mondatrészeket elválasztó vesszõkkel, mert ezek nélkül kicsit nehezen lehet követni a mondanivalódat.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Az érdekel, hogy melyik cella (cellák) értékének változása módosítja a B2-t.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As String
If Target.Address = "$B$2" Then
a = Left(Target, 2)
If a = "10" And Cells(11, 2) = "" Then
Cells(11, 2) = Target
Exit Sub
End If
If a = "10" And Cells(11, 2) > "" Then _
Cells(Range("B65536").End(xlUp).Row + 1, 2) = Target
If a = "20" And Cells(11, 3) = "" Then
Cells(11, 3) = Target
Exit Sub
End If
If a = "20" And Cells(11, 3) > "" Then _
Cells(Range("C65536").End(xlUp).Row + 1, 3) = Target
End If
End Sub
Valahogy így nézett ki.. Olyan probléma merült fel, hogy a "B2"-be beírt érték, nem kézzel van beírva, hanem egy képlettel kerül oda. És így nem akar mûködni :S erre van valamilyen megoldás? Esetleg egy gombbal mûködne?
Egyébként, ha a ThisWorkbook-hoz rendeled, a laphoz rendelt Worksheet_Change érzékeli a beírást.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
A másik problémát meg még mindig nem tudtam megoldani. Amikor elõször próbáltam megoldani azt a problémát én is a "change" utasítást használtam. De sajnos a ez a parancs nem érzi ha a szimulációs program frissíti a táblát, tehát beírja a cellákba az értékeket meg kiírja hogy "Results Availablet", olyan mintha nem történne változás. :S
Az is megoldás lehetne ha idõnként (mondjuk 2 másodpercenként) lefutna
egy makró ami ellenõrzi hogy kiírta-e hogy kész. De sajnos a "Wait" parancsot nem használhatom mert ha fut egy makró akkor nem adja át az adatokat csak ha paranccsal kérem. Viszont ha elõbb kérem az adatot mint ahogy a szimuláció végez akkor hibaüzenetet kapok amit le kell okézni, így megáll a ciklus.(ja a szimuláció lefutási ideje sztochasztikus (ha használhatom ezt a durva kifejezést😄) 10 másodperctõl 5 percig is tarthat)
Lehetne még egy megoldás is, ha lehetne egy makrót írni ami a felugró ablakot felugrás után 2 perccel leokézi vagy eltörli. Van erre parancs? Nem találtam rá semmit...
De gondoltam egy olyan megoldásra is, hogy veszek egy majmot és betanítom, hogy amikor egy cellába megjelenik egy bizonyos szám akkor lenyom egy gombot. 😄 De ez állatkínzás lenne 24 órán keresztül 😄
Ez lett a vége. A makró szépen beilleszti a vágólapra tett adatot, ha nem teljes a kijelölés akkor figyelmeztet. Ráadásul bolondbiztos is egy kicsit mert ha nem a Munka1-en áll a munkafüzet akkor sem rombolja szét az aktív lapot.
Köszi!
Sub beilleszt_vr()
Sheets("Munka1").Select
Range("A1😮1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.ClearContents
ActiveSheet.Paste
sz = "This message has been sent by System Guard, please do not reply."
Columns("A:A").Select
On Error GoTo hiba
Selection.Find(What:=sz, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Select
MsgBox "Sikeres beillesztés. Összesen " & Selection.Row - 24 & " sor."
Exit Sub
hiba:
Range("A1😮1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.ClearContents
MsgBox "Hibás beillesztés, ismételd meg új kijelöléssel!"
End Sub
Sub ResA()
Cells(5, 1) = "Results available"
End Sub
Ez a makró beírja a lapra (jelen esetben az A5-be) a vizsgált szöveget. Mivel változás történt a lapon, beindul a hozzá rendelt makró:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "Results available" Then
Cells(2, 1) = Cells(1, 1) + 1
End If
End Sub
Ez az A2-be írja az A1+1 értéket abban az esetben, ha a lapon megjelent a "Results available" szöveg.
Nem akarod elhinni, de a function NEM TUD MÁS CELLÁBA ÍRNI.
Az itt közölt makród Else ága felesleges, hiszen a fu változó csak akkor kap értéket, ha a range("a1")=2 feltétel igaz. Amíg nem adsz értéket, a változó nulla, vagy üres string.
Példa a memória változóra:
Sub változó()
Dim v As Variant
v = 26
MsgBox v
beír v
End Sub
A Dim utasítással helyet foglalsz a v nevû változónak a memóriában, ebben az esetben variant típusút, vagyis mindegy, hogy a késõbbiek folyamán egész számot, tizedest, logikai értéket, vagy éppen dátumot töltesz bele.
A második sorral értéket adsz neki. A harmadikkal kiíratod egy üzenetbe, végül a negyedik sorrral meghívod a beír makrót, és átadod neki a változó értékét.
Sub beír(v)
Cells(2, 3) = v
End Sub
A címsorban zárójelek között szereplõ változó értékével kezd valamit ez a makró, jelen esetben beírja a C2 cellába.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Tegnap este kipróbáltam. Az a baj hogy azt a függvényt nem én írom ami kiíratja a "Results available"-t. (Le van jelszavazva, bárcsak bele piszkálhatnék...) :S Viszont megpróbáltam úgy hogy arra írok függvényt, hogy amikor megjelenik a felirat akkor oda-vissza lép két lap között, de nem lépkedett :S. A "Worksheet_Activate" parancsot viszont kipróbáltam azzal nem volt gond az tette a dolgát. Szóval még mindig ott állok ahol a part szakad :S. Hol lehet annak utánanézni, hogy mik a korlátai a "function" parancsnak??
Ja úgy tervezem a második fele a ciklusnak úgy fog indulni ha két feltétel teljesül:1, lefutott az elsõ fél 2, kész a szimuláció (ez hiányzik már csak :S)
Azért mellékelek egy egyszerûsített példát hátha én rontottam el valamit:
Public Function fu(cell As Range, _
Optional default_value As Variant)
If cell.Range("a1") = 2 Then
fu = default_value
Sheets("Munka2").Activate
Sheets("Munka1").Activate
Else
fu = 0
End If
End Function
Sub Worksheet_Activate()
Cells(1, 1) = Cells(1, 1) + 1
End Sub
Lenne viszont még egy kérdésem de ez csak aprócska. Hogy definiálok változókat úgy hogy azok a memóriába maradjanak és ne keljen mindig egy cellába menteni õket? (Egyébként kezdõ vagyok még a makro programozásból, de jól bele csaptam a lecsóba... 😊)
Mit szólsz ahhoz a megoldáshoz, hogy mikor beíratod a "Results available"-t, átlépsz egy másik lapra, majd vissza? A lapra történõ visszalépést lekezelheted egy eseménykezelõ eljárással (Worksheet_Activate), ez lenne a "jel", amire indul a ciklus második fele.
A "második fél"-be tegyél egy változót, ami az általa újraindított "elsõ fél"-nek jelzi, hogy egyszer már eljutott a másodikba, és ettõl függjön, hogy indítja-e megint a másodikat. Egyébként végtelen ciklusba szaladsz. 😊 De ezt biztosan tudod.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
iscasC
Az E5-be tegyél egy HA függvényt, ami ezt elintézi.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Hibakezeléssel:
Törli az eddig bemásolt adatokat, üzenet küld, és kilép.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Szeretnék írni egy olyan függvényt, ami meghív egy sub-ot ami ír a tábla egyes celláiba.
Valahogy így:
Public Function MyFu(cell As Range, _
Optional default_value As Variant)
If cell.Range("a1") = 2 Then
MyFu = default_value
Application.Run ("viz")
Else
MyFu = 0
End If
End Function
Public Sub viz()
Worksheets("Munka1").Cells(5, 5) = 1
End Sub
Szerintem ennek mûködnie kéne, de ha a beadott érték 2-re vált akkor csak az „#ÉRTÉK!” visszajelzést kapom. Ha olyan sub-ot futtatok, ami mondjuk egy szövegdobozt dob eredményül, de nem avatkozik be akkor viszont fut. Mi lehet az ok? Hogy kell megoldani?
Ez a függvény egy agyon makrózott táblába megy, amibe egy külsõ program is nyúlkál. (A problémám akkor is fenn áll, ha csak egy üres táblába próbálkozok.) Már próbáltam más paranccsal (change) is megoldani a problémát, de az összeakadást okoz, a függvény látszik megoldásnak, csak ez se fut.
Köszönöm elõre is a választ:
iscasC
Jól gondolom-e, hogy hibás kijelölés esetén (ha nincs a beillesztésben a zárósor) akkor valamilyen hibával ki fog lépni Debug módba? Mert ezt nagyon el szeretném kerülni.
Az lenne a legjobb, ha hiba esetén csinálna egy Undo-t és figyelmeztetne, hogy ismételd meg a beillesztést új kijelöléssel.
Az a gondom vele, hogy mivel mindig az elõzõ napi adattáblát írom felül ezért ha egy hibás kijelöléssel írom felül a munkalapomat a keresett szövegem akkor is ott lesz valahol az 1500. sor környékén csak éppen az elsõ 700 sor az adott napi adatokat tartalmazza, a következõ 7-800 pedig az elõzõ napit.
Azért gondoltam, hogy a kijelölés méretében van benne a megoldás mert a beillesztés után mindig csak beillesztett tartomány van kijelölve a munkalapon, a többi nem.
Vagy az is megoldás lenne, ha a makró nem az egész munkalapon keresné a zárószöveget csak a kijelölésben, esetleg ha minden beillesztés elõtt törölném a munkalap tartalmát és utána kerestetném a szöveget (ha megtaláltam=jó, ha nem=hiba), vagy ha egy makróba tenném a törlés>beillesztés>ellenõrzés-t és csak akkor van MsgBox ha hiba van.
Nem tudom, még alszom rá egyet.