-
Fototrend
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
-
m.zmrzlina
senior tag
válasz scott_free #9090 üzenetére
amúgy a hivatalos "munkahetek" szerint az idei első munkahét január 3-ával indult.
Én is ebből indultam ki.
Kezdők szerencséje.
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9093 üzenetére
Talán majd Delila_1 megoldja nekünk. Van rá 2*53*7 (vagy mennyi ) napja.
-
m.zmrzlina
senior tag
válasz Shirak! #9127 üzenetére
Jól értem?
Olyan megoldást keresel aminek megmondod hogy:
1. milyen mérettartományban
2. melyik gyárban gyártott
3. 2cm+ széles - vagy nemcsapágynak mi az ára (alapul véve a listaárat)?
Vagyis egyszerűbben: hogyan befolyásolja a listaárat a fenti 3 feltétel?
Egy mérettartománynak azonos a listaára?
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz Nesh007 #9167 üzenetére
A feladat amiben segítséget kérsz az egy megfelelően elrendezett egyszerű kivonás.
Valamit én nem értek, vagy a feladat sokkal bonyolultabb csak én nem látom át a lényegét?
(megjegyzem simán előfordulhat, hogy így van és nem haragszom ha valaki felvilágosít)
[ Szerkesztve ]
-
m.zmrzlina
senior tag
A következő kódrészlettel az a bajom, hogy az a sor amivel egy másik munkafüzetben végzett kijelölést értékként akarok beilleszteni 1004-es hibakóddal kiakad. A makró munkafüzetében tett kijelölést hiba nélkül értékként is be tudja illeszteni.
Az xlPasteAll viszont így is úgy is gond nélkül lefut.
Mi lehet az oka, merre keresgéljek? A cél az lenne, hogy a másik munkafüzet kijelölését értékként lehessen beilleszteni.
paste_list:
Application.ScreenUpdating = False
CommandButton1.Caption = tech
Cells(2, 2).Value = tech
Cells(4, 2).Select
On Error GoTo error_1
Selection.PasteSpecial Paste:=xlPasteAll
'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.Cells(Selection.Rows.Count + 1, 1).Select
If ActiveCell.Value <> "" Then
Range(ActiveCell, ActiveCell.End(xlDown)).Select
End If
....stb
....stb[ Szerkesztve ]
-
m.zmrzlina
senior tag
A cimkéhez egy Select Case szerkezeten keresztül jutunk attól függően, hogy egy Inputboxnak mi a tartalma.
Az Inputboxot pedig egy ActiveX parancsgomb indítja ami abban a munkafüzetben (sőt azon a munkalapon) van amibe a beillesztést el szeretném végezni.
A vágólapra illesztés (a távoli asztalról) még a parancsgomb használata előtt történik.
-
m.zmrzlina
senior tag
Sziasztok!
Az a kérdésem, hogy van-e Excel97-ben egyszerűbb lehetőség speciális karakterek beszúrására azon kívül hogy a Karaktertáblán (Start>Programok>Kellékek>Rendszereszközök>Karaktertábla) vágólapra teszem majd Ctrl+V ?
-
m.zmrzlina
senior tag
válasz Delila_1 #9288 üzenetére
A Beszúrás/Szimbólum menüpont közvetlenül adja a karaktertáblát.
A 2007-ben igen, de a 97-ben semmi ilyesmi nincs. Én is ott kerestem először, megnéztem vagy ötször de nem találtam.
Hál' istennek nem kell nagyon gyakran használni és a drag'n drop módszer egy kicsit gördülékenyebb mint a copypaste.
Köszi.
-
m.zmrzlina
senior tag
válasz pirit28 #9335 üzenetére
Valami ilyesmire gondolsz?
Private Sub CommandButton1_Click()
Cells(2, 3).Activate
Do Until ActiveCell.Value = ""
amitkeres = InputBox("Add meg a keresni kívánt nevet, vagy név részletet!", "Keresés", amitkeres)
Cells.find(What:=amitkeres, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
Loop
End SubInputboxban bekéri a keresendő karaktersorozatot és végigkeresi a C sort az utolsó névig úgy, hogy minden találatnál megáll. <Enter>-rel tudsz a következő találatra ugrani.
Szerintem a munkalapra elhelyezett parancsgombos indítás nem a legcélszerűbb (ennél a megoldásnál biztosan nem). 2007-ben a Gyorsindítás eszköztárba tennék egy parancsgombot, korábbiaknál új menüpontot tennék a menübe.
Melyik Excel verziót használod?
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz pirit28 #9338 üzenetére
Ha egy név csak egyszer szerepel a listában akkor lehet ez egy megoldás:
Sub find()
eleje:
Cells(2, 3).Activate
amitkeres = InputBox("Add meg a keresni kívánt nevet, vagy név részletet!", "Keresés", amitkeres)
On Error GoTo uzenet
Cells.find(What:=amitkeres, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
If ActiveCell.Row <> 2 Then
Cells(2, 3).Activate
GoTo uzenet
End If
Exit Sub
uzenet:
MsgBox ("A keresett név nincs a listában.")
GoTo eleje
End SubNincs bolondbiztossá téve még, csak próbálkozom.
-
m.zmrzlina
senior tag
válasz m.zmrzlina #9341 üzenetére
Nekem is volna egy kérdésem a #9341-ben lévő kóddal kapcsolatban a nálam okosabbakhoz.
Miért van az, hogy ha olyan karaktersorozat kerül az inputboxba ami nincs a munkalapon, de még csak nem is része egyik létezőnek sem akkor az első próbálkozást rendben lekezeli a hibaüzenettel, a másodiknál viszont kiakad a 91-es hibával?
-
m.zmrzlina
senior tag
válasz m.zmrzlina #9345 üzenetére
Még az előzőhöz...
Ha viszont a 2.soron kívül lévő cella tartalomra keresek akkor rendben működik (adja a hibaüzenetet) akárhányszor ismétlem meg a keresést.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz m.zmrzlina #9348 üzenetére
Érdekes, hogy második alkalommal is az On Error GoTo uzenet utáni sor okozza a hibát mint elsőre de először el tud menni az uzenet: címkére másodszor már nem.Akkor sem ha nem ugyanaz az inputbox tartalma mint először.
Magyarul, ha kétszer gépeli el a júzer a nevet akkor ugyanúgy kiakad a kód mintha nem is lenne benne hibakezelés.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9352 üzenetére
Erre gondolsz?
When the first error is raised, execution transfers to the line following Err1:. The error hander is still active when the second error occurs, and therefore the second error is not trapped by the On Error statement.
Az az ok, hogy az első hibakezelő rutin még aktív mikor a második hiba bekövetkezik?
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9354 üzenetére
Ezt sikerült kiötleni, úgy tűnik működik.
Sub find()
eleje:
Cells(2, 3).Activate
amitkeres = InputBox("Add meg a keresni kívánt nevet!", "Keresés", amitkeres, 13000, 100)
On Error Resume Next
Cells.find(What:=amitkeres, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
If Err.Number = 91 Then
MsgBox ("A keresett név nincs a listában.")
GoTo eleje
End If
If ActiveCell.Row <> 2 Then
Cells(2, 3).Activate
MsgBox ("A keresett név nincs a listában.")
GoTo eleje
End If
End SubMűködni működik de jó ez így?
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9356 üzenetére
Még hogy az informatikusoknak nincsen humoruk...
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9358 üzenetére
Az eredeti feladat itt lett leírva: #9335
A második sorban vannak az adatok C2-től kezdődően CX2-ig és az az is követelmény hogy csak a 2. sorban lévő találat érvényes, tehát pl a D4-ben hiába van meg a keresett név az nem jó.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9361 üzenetére
Ja, mondjuk azt a "2. sorban" dolgot nem vágom.
Mihez képest 2. sorban? C2-hőz képest, azaz 3. sorban?Az első sorhoz képest a második sorban ami A2-vel kezdődik
Szerintem megoldottuk pirit28 problémáját, a hibakezelés már csak engem érdekelt mert tudtam hogy valami hibádzik.
Köszi a segítséget.
-
m.zmrzlina
senior tag
válasz m.zmrzlina #9393 üzenetére
-
m.zmrzlina
senior tag
Nem tudom megoldódott-e már a problémád, ha nem itt egy lehetséges megoldás. Én feltételes formázással gondolom megoldani.
Ez egyelőre annyit tud, hogy egyetlen munkának "bejelöli" a keretidejét és a tervezett idejét a "naptárba".
Nézd meg, ha jó az irány akkor gondolkodunk tovább errefelé, ha nem akkor módosíthatunk.
C6-C7-ben lévő képleteket természetesen nem a táblázatba kell írni, hanem a szabálykezelőben az Új formázási szabály>A formázandó cellák kijelölése képlettel>Értékek formázása ha a képlet igaz mezőbe. A két képlet két különböző szabályt jelent.
-
m.zmrzlina
senior tag
Amit én a #9389-ből ill. a #9373-ból kiértettem, arra van szükséged, hogy két intervallumot (keretidő és tervezett idő) és két időpontot (kezdés és befejezés hete) különböző szinekkel kijelölni egy megfelelő táblázatban.
Az előző gondolatébresztő hsz-t a következőképpen pontosítottam és egészítettem ki:
I2-BH2-ig felvittem a hetek sorszámát, itt fogja keresni a WEEKNUM fv az adott dátumhoz tartozó hetet. Maga a fv úgy van paraméterezve, hogy hétfőt tekintse a hét első napjának és azért kell kivonni belőle 1-et, hogy a visszaadott érték illeszkedjen a 2011-es magyarországi hivatalos naptári hetekhez.
A négy képlet sorrendje fontos mert a kezdő és befejező hét formázása csak így írja felül a tervezett idő celláinak háttérszínét.
-
m.zmrzlina
senior tag
Ezzel nincs is gondom.
Azt nem értem, hogy az első táblázatban egy termék oszlop van a másodikban három. Az első táblázat hibás elemeit mindig a második táblázat első termékoszlopában kell keresni és a mások kettőt változtatás nélkül hozzácsatolni, vagy az első táblázat hibás eleme (a helyes névvel) előfordulhat-e a második táblázat bármely termékoszlopában?
Még egy kérdés. Azonos sorban szereplő 3 terméknek azonos az ára is?
-
m.zmrzlina
senior tag
Akkor valami ilyesmi lenne a feladat?
a tablazat1 kb 600 sor, a tablazat2 kb 650, tehat itt lesz olyan is, ami a tablazat1-ben nincs benne.
Ezekhez az elemekhez honnan fogunk árat rendelni? Üresen hagyjuk az ár helyét?
Mindig a tábla1 terméknevei a bővebbek mint a te példádban vagy van olyan is mint az én példámban a nagyharang-templomi nagyharang ahol a tábla2 leírása bővebb?
-
m.zmrzlina
senior tag
Ötletre volna szükségem.
A következő kód egy ActiveX parancsgombhoz van rendelve és azt csinálja, (meg még sok minden mást de ez most nem érdekes) hogy a vágólapról megfelelő helyre beilleszt egy 1 oszlop széles változó hosszúságú tartományt, vagy ha a felhasználó <Szóköz>-t nyom akkor törli a meglévőt, vagy nem engedi elfelejteni a "névadást"(Select Case 2. ág)
Private Sub CommandButton1_Click()
Dim tech As String
start:
tech = InputBox("Add meg a technikus nevét!" + Chr(13) + Chr(13) + "A lista törléséhez nyomj < SPACE >-t!")
Select Case tech
Case Is = " "
GoTo clearcontent
Case Is = ""
MsgBox "Nem adtad meg a technikus nevét!" + Chr(13) + Chr(13) + "Pótold a hiányosságot!", vbCritical, "Hiányzó adat!"
GoTo start
Case Is <> ""
GoTo paste_list
End Select
paste_list:
Application.ScreenUpdating = False
CommandButton1.Caption = tech
Cells(2, 2).Value = tech
Cells(4, 2).Select
On Error Resume Next
Selection.PasteSpecial Paste:=xlPasteAll
If Err.Number <> 0 Then
MsgBox "Jelöld ki a panellistát!" & Chr(13) & "Hibakód:" & Err.Number, vbCritical, "Hiba!!!"
Cells(2, 2).Select
Range(ActiveCell, ActiveCell.End(xlDown)).ClearContents
CommandButton1.Caption = "Tech_1"
Exit Sub
End If
'stb...stb...stb...Az a gondom, hogy ha a felhasználó izgalmában véletlenül több szóközt nyom egy helyett akkor nem a régi lista törlése történik hanem beilleszti a vágólapot úgy hogy a parancsgomb felirata " "(kvázi semmi) lesz ami kód szempontjából egy teljesen normális működés de nem ez a cél.
Ezt a felhasználói hibát kellene lekezelni a legegyszerűbben. Nem baj ha nem <Szóköz>-zel törlünk, lehet akár <Del> vagy <Backspace> is.
Hogyan lehet ezt megoldani?
[ Szerkesztve ]
-
-
m.zmrzlina
senior tag
válasz m.zmrzlina #9490 üzenetére
Közben megoldottam a problémát.
Az Inputbox után a Select Case elé betettem ezt a sort:If InStr(tech, " ") = 1 Then tech = " " Else tech = tech
Mivel az Inputboxba nem várunk olyan adatot ami szóközzel kezdődik ezért bármilyen bevitt adat ami szóközzel kezdődik az törölni fogja a listát.
Van viszont más kérdésem az Inputbox-szal kapcsolatban.
Hogyan kell lekezelni a Cancel gombot, hogy valóban Cancel-ként viselkedjen? Jelen formájában ugyanazt csinálja mint az OK gomb. -
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9492 üzenetére
Ezt nem igazán értem. Próbáltam Inputboxra alkalmazni de nem ment.
Ide kellene valahogy beilleszteni:
Private Sub CommandButton1_Click()
Dim tech As String
start:
tech = InputBox("Add meg a technikus nevét!" + Chr(13) + Chr(13) + "A lista törléséhez nyomj < SPACE >-t!")
If InStr(tech, " ") = 1 Then tech = " " Else tech = tech
If tech = vbCancel Then Exit Sub
Select Case tech
' Case Is = vbCancel
' Exit Sub
Case Is = " "
GoTo clearcontent
Case Is = ""
MsgBox "Nem adtad meg a technikus nevét!", vbCritical, "Hiányzó adat!"
GoTo start
Case Is <> ""
GoTo paste_list
End Select -
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9494 üzenetére
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9496 üzenetére
Köszönöm a választ, este megnézem a linkeket.
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9496 üzenetére
Ami az Inputbox-t mint metódust illeti (második linked) nekem nem megfelelő ugyanazért amiért ez:#8953 meg ez:#9219. Úgy látszik engem üldöz ez a probléma
Az Inputbox mint függvény esetében kipróbáltam néhány dolgot de egyikkel sem sikerült szétválasztani a Cancel és az OK gombok működését.
Már saját Inputbox készítésén gondolkodtam (UserForm TextBox parancsgombok) amikor ezeket találtam:[link][link]
Noha úgy tűnik működik a dolog nekem
kicsitnagyon ingoványos ez a terület szóval ha valaki lát benne olyan buktatót amit én esetleg nem vettem észre az ne kíméljen.[ Szerkesztve ]
-
m.zmrzlina
senior tag
-
m.zmrzlina
senior tag
A következő programrészlet egy 1 oszlop széles és kb 100 sor (változó) hosszú tartományt illeszt be vágólapról.
Cells(4, 2).Select
On Error Resume Next
Selection.PasteSpecial Paste:=xlPasteAll
If Err.Number <> 0 Then
MsgBox "A lista beillesztését a kijelöléssel kell kezdeni." + Chr(13) + Chr(13) + "Először végezd el a kijelölést!", vbCritical, "Hiba!!!"
Exit Sub
End IfA vágólapra másolást a felhasználónak kell elvégeznie ezt nem tudom megkerülni. Azt a felhasználói hibát szeretném kezelni, hogy ha tévedésből pl egy 1500x15 méretű tartományt jelöl ki akkor a makró ne végezze el a beillesztést hanem küldjön hibaüzenetet és lépjen ki.
Milyen technikák vannak erre?
-
m.zmrzlina
senior tag
válasz Delila_1 #9534 üzenetére
Tettem a végére az End If elé egy Exit Sub-ot és betettem a
Selection.PasteSpecial Paste:=xlPasteAll
sor után.futtatáskor jön is a MsgBox de az OK-ra a beillesztés ennek ellenére megtörténik. Ha az említett sor elé teszem be akkor MsgBox nélkül megtörténik a beillesztés.
Hogy tudom rávenni a beillesztés előtti kilépésre?
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen