Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Private Sub Worksheet_Change(ByVal Target As Range) Dim wsLog As Worksheet, rLog As Range Dim rQuery As Range, c As Range, Hit As Range
Set wsLog = Worksheets("Munka5") Set rQuery = Range("B1", Range("B" & Rows.Count).End(xlUp)) For Each c In rQuery Set rLog = wsLog.Range("B" & Rows.Count).End(xlUp).Offset(1) Set Hit = wsLog.Range("B:B").Find(what:=c.Value, after:=rLog, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious) If Hit Is Nothing Then rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value rLog.Offset(, 2) = Now ElseIf Hit.Offset(, 1) <> c.Offset(, 1) Then rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value rLog.Offset(, 2) = Now End If Next End Sub
MOST csak akkor loggol, ha "rákényszerítem", úgyértem, ha rámegyek a munka3-ra majd a munka5-re váltok, akkor azt az állapotot loggolja, de ha elmegyek a városba dolgomat intézni, és nem váltogatom a lapokat oda-vissza, akkor a munka3 ezen kódja "nem dolgozik" nem loggol automatikusan, csakis a váltásnál.(pedig a munkafüzet mindig aktív és online)
Jimmy The Hand: minden eddigitől elvonatkoztatva: nem lenne egyszerübb, ha az egész loggolásnak EGYETLEN feltétel szerint kellene történnie?? semmi összehasonlítgatás meg efféle. CSAK annyi, hogy a weblekérdezéses munka3 nevű lapon, ha a "D" oszlop valamely cellájában a kód találna egy "L" karaktert, akkor csak az adott sor A, B, C oszlopában szereplő értéket (számított értéket!) loggolja csak (idővel együtt).
mert én azt az "L" karaktert logikai fügvényekkel el tudom helyezni a "D" oszlopba.
Köszönöm :) A helyzet, hogy ez egy elég aljas excel tábla. Nyomtatási területet, vonalkód címkét készítő makró is van benne, ennek a végére tettem be egy 3-as modulba, csináltam egy TESZT nevű könyvtárat néhány doksival, de valamit elronthatok, mert nem nagyon akar működni. :(
Ötletem éppenséggel volt, de nem tudtam megvalósítani.
Szóval azt próbáltam, hogy makróval indítani az internet explorert, és elküldeni a megadott oldalra, aztán ott lekérdezni az oldalról egy adott objektum értékét. Az objektum nevét ugye az oldalforrásból lehet megállapítani. Hát itt elakadtam. Nem értek a javascripthez, de html-hez se nagyon, és nem tudom, hogy hogyan vannak ezek az értékek megjelenítve.
A nevüket sem találom. Olyat találtam, hogy
<span id="ertek_nyito"> </span>
meg
<span id="hozam_idoszak"> </span>
meg hasonlók, de az
Set object = ie.Document.getElementsByName("hozam_idoszak")
végrehajtása után az object tartalma a nagy semmi.
Én már nem dolgozom 2003 excelben, de amikor xl2007-ben compatibility mode-ban lementettem file-okat amikben volt COUNTA(H:H) akkor azt mondta, hogy az probléma lehet.
Ha legalább annyi teljesül, hogy minden fájl nevében benne van a kód, és minden fájl ugyanabban a mappában van, akkor már meg lehet spórolni a manuális felvitelt.
A1-re kihegyezve valami ilyesmi lehet:
Private Sub Worksheet_Change(ByVal Target As Range) Dim FN As String, myPath As String, ext As String Dim wa As Object
If Target.Address <> "$A$1" Then Exit Sub myPath = "C:\itt_vannak_a_fájlok_mappa\" FN = Dir(myPath & "*" & Range("A1").Value & "*.*", vbNormal) If FN = "" Then Exit Sub ext = Mid(FN, InStrRev(FN, ".")+1) If ext = "doc" Then Set wa = CreateObject("word.Application") wa.documents.Open myPath & FN wa.Visible = True ElseIf ext = "xls" Then Workbooks.Open myPath & FN End If End Sub
Köszi a választ ! Az az igazság, hogy egyöntetű algoritmust nem lehet ráhúzni a file-okra, hogy értsd, ezek szövetek amiknek van egy kódjuk, de a file neve sokszor ilyen: 935 445 szines bőr jobbos.doc vagy 887 445 szürke anyag.doc. Olyan megoldásra gondolotam mint a HA függvénynél, hogy ha 958 444 van a kódban, akkor nyissa meg a xycvb.doc-ot. Ezt nyilván manuálisan egyszer fel kellene vinnem, hogy melyik kód alapján mit nyisson meg.
egy hivatkozást szeretnék - függvénnyel - mellyel egy másik munkafüzet adott oszlopának mindenkori utolsó cellaértékét tudom beilleszteni úgy, hogy az értékek nincsenek sorba rendezve.
ha jól tudom akkor a "hol.van" és "cím" függvényekre van szükség....
Próbáld ki ezt. Feltételeztem, hogy a B oszlopban vannak az alma, cékla, banán, stb., szóval amivel beazonosítható a nemtudommi, továbbá a C oszlopban van nemtudomminek a nemtudommije, amit figyelni kell. Sajnos e tekintetben eléggé ellentmondásos információk jöttek eddig. Az alapötlet pedig az eddigiektől eltérően az, hogy a már naplózott banánok közül keresem ki az utolsó banánt, és ha ahhoz képest van eltérés, akkor naplózom megint. Így nem kell temp munkalap.
Private Sub Worksheet_Change(ByVal Target As Range) Dim wsLog As Worksheet, rLog As Range Dim rQuery As Range, c As Range, Hit As Range
Set wsLog = Worksheets("Munka5") Set rQuery = Range("B1", Range("B" & Rows.Count).End(xlUp)) For Each c In rQuery Set rLog = wsLog.Range("B" & Rows.Count).End(xlUp).Offset(1) Set Hit = wsLog.Range("B:B").Find(what:=c.Value, after:=rLog, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious) If Hit Is Nothing Then rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value rLog.Offset(, 2) = Now ElseIf Hit.Offset(, 1) <> c.Offset(, 1) Then rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value rLog.Offset(, 2) = Now End If Next End Sub
weblapról szépen elérem a kérdéses oldalt, viszont vagy nem találom a kis nyilat mellyel kijelölhetem az adatokat, vagy az adatokat kijelölöm majd pedig importálom - viszont hiányosan jelennek meg a munkafüzetben. Körbenéztem a különböző fórumokon, de sajna sehol sem találtam megoldást. Elképzelhető hogy ezt a fajta dolgot nem tudja kezelni az excel...
árfolyamokra lenne szükségem, amit a táblázat megnyitása után azonnal tudok - mármint az értékeket - frissiteni.
A problémát igazából az jelentheti, hogy ugyanazon internetes oldalcimhez több megjeleníthető adathalmaz (flash?) tartozik.
biztos érthetetlenül fogalamztam, elnézést érte. Ha valaki találkozott hasonló szituval kérem adjon tanácsot.
a B oszlopban csak akkor van alma nevű elem, ha a weblekérdezés ad alma nevű elemet, amúgy nincs.
leegyszerűsítené a dolgot, ha mondjuk ÉN DIREKT egy feltételhez kötném, mit LOGGOLJON????
például ilyesmi: a munka3 worksheetben , ha az adott sor "C" oszlopban lenne egy "L" karakter, akkor loggolja a sor 3 értékét? (időkijelzéssel) a munka5-re.