Keresés

Részletes keresés

Törölt nick Creative Commons License 2012.07.06 0 0 18212

A második fájlban nem találja a "Local Area Connection:" sztringet.

Előzmény: zylo. (18211)
zylo. Creative Commons License 2012.07.06 0 0 18211

Üdv,

 

Írtam egy Excel makrót, ami azt csinálja, hogy kiválasztható txt fájlokban (tk. az ipconfig parancsok kimenetei több gépről) megkeresi és egy Excel munkafüzetbe illeszti az IP és MAC címeket. Van egy kis keresgélés, mert több kártya is lehet, de néhány közülük "disconnected". Ha megvan az elsődleges kártya, további kettőt is meg kell nézni, hogy léteznek-e. Az egész ciklusban van.

 

A makró kicsit kezdetleges, de (majdnem) működik: az első fájlt jól feldolgozza, de a másodiknál "Run-time error 91, Object variable or With block variable not set" hibával kiakad az első keresés parancson, még mielőtt bármit is keresne.

 

Ez mitől lehet? Mit csináljak, hogy 0-ról kezdje másodjára is?

 

Itt a kód részlet: (azért hosszú, hogy érthetőbb legyen, bocs)

 

mdata = Array( "IP Address. . . . . . . . . . . . :", _

                          "Physical Address. . . . . . . . .:”, _

                          "IP Address. . . . . . . . . . . . :", _

                          "Physical Address. . . . . . . . .:”, _

                           "IP Address. . . . . . . . . . . . :", _

                           "Physical Address. . . . . . . . .:”)

 

ipdata = Array("Local Area Connection:", _

                            "Local Area Connection 2:", _

                            "Local Area Connection 3:", _

                            "Local Area Connection 4:", _

                            "Local Area Connection", _

                            "Ethernet adapter Prod", _

                            "Ethernet adapter OOB", _

                            "Ethernet adapter")

 

' *** Az ip file-ok megnyitása

 

Dim sFname As Variant

    Dim i As Long

 

    sFname = Application.GetOpenFilename(FileFilter:="Text Files (*.txt), *.txt", MultiSelect:=True)

 

    If IsArray(sFname) Then

        For i = LBound(sFname) To UBound(sFname)

            Workbooks.Open sFname(i)

            n = ActiveWorkbook.Name

 

            v = 0

 

            For h = 0 To 5

 

                On Error GoTo nemtalalt

 

                Range("A1").Select

ipkeres:              

                Cells.Find(What:=ipdata(v), After:=ActiveCell, LookIn:=xlFormulas, _

                        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _

                        MatchCase:=False, SearchFormat:=False).Activate

 

                rr = ActiveCell.Row

 

                On Error GoTo disconnect

 

                Range("A" & rr).Select

                    Cells.Find(What:="Media disconnected", After:=ActiveCell, LookIn:=xlFormulas, _

                        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _

                        MatchCase:=False, SearchFormat:=False).Activate

 

                rrmd = ActiveCell.Row

 

                On Error GoTo hiba

 

                If rrmd < rr Or rrmd > rr + 5 Then             ' Ha nem a megtalált kártyára vonatkozik a disconnected

                    Range("A" & rr).Select                           ' Vissza a megtalálthoz

                Else                                                           ' Ha a megtalált kártya disconnected

                    Range("A" & rr + 1).Select                     ' Új keresés egy sorral lentebbről.

                    If v < 7 Then

                        v = v + 1

                    End If

 

                    GoTo ipkeres

                End If

 

                Cells.Find(What:=mdata(h), After:=ActiveCell, LookIn:=xlFormulas, _

                    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _

                    MatchCase:=False, SearchFormat:=False).Activate

 

                ActiveCell.Replace What:=mdata(h), Replacement:="", LookAt:=xlPart _

                    , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

                    ReplaceFormat:=False

 

                beir(h) = ActiveCell.Value

                beir(h) = LTrim(RTrim(beir(h)))

 

                If (h = 2 or h = 4 or h = 6) And v < 7 Then    ' Amikor az IP-t és a MAC-t is kiolvastuk

                    v = v + 1

                    Range("A" & rr).Select

                    ActiveCell.ClearContents

                End If               

            Next h

feltolt:

            Windows(n).Activate

            ActiveWorkbook.Close False

 

’*******************************************

’ Itt van a beíró rész…

’*******************************************             

        Next i

    End If

 

GoTo vege

 

hiba:

'MsgBox "Valami hiba van! "

Resume Next

 

nemtalalt:

'MsgBox "idejött h: " & h & " v: " & v & ipdata(v)

If v < 7 Then

    v = v + 1

Else

    beir(h) = ""

    GoTo feltolt

End If

Resume

 

disconnect:

Range("A" & rr + 6).Select

Resume Next

 

vege:

 

tbando Creative Commons License 2012.07.05 0 0 18210

Nem excel probléma, de talán tudtok segíteni. Az XP alatt több éven keresztül minden további nélkül futó DOS  emulációm (Quattro Pro) az elmúlt időszakban valamikor meghülyült, és „Not enough memory for that operation”  üzenettel leáll. Mivel korábban ilyet nem csinált, feltételezem, hogy az XP valamelyik frissítése barmolhatta el a beállításokat. Visszaállítással próbálkoztam, de a gépemen csak 3 hónapig visszamenőleg vannak meg a korábbi állapotadatok. Az elállítódás pedig úgy néz ki korábban történhetett.  Azt kérdezném tehát, hogy hogyan lehet az XP DOS-ban elérhető memoriáját növelni. A gép fizikai memóriája 1MB, és a rendszer 32bites. 

 

djmorphy Creative Commons License 2012.07.05 0 0 18209

Szia!

 

Csináltam egy táblázatot ami úgy néz ki mint a szerkezet és hogy mit szeretnék megvalósítani.

 

https://www.box.com/s/9a70b6053c807b826865

Előzmény: Törölt nick (18205)
Sánta Kutya (SK) Creative Commons License 2012.07.05 0 0 18208

Google az én barátom, sikerült! (A General ablakba került, és át kellett tenni a Munka1 ablakba, hogy fusson.)

Köszi nagyon!!!!

Előzmény: Sánta Kutya (SK) (18207)
Sánta Kutya (SK) Creative Commons License 2012.07.05 0 0 18207

Megcsináltam, de hogy tudok hivatkozni rá? Valamiért meg sem jelenik a makrólistában. :-O

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

Nagyjából ez lenne a kód:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Lista As Range, MásikÉrték As String, MásikCella As Range
    
    'cella validálása
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Me.Range("A:B")) Is Nothing Then Exit Sub
    
    'változáskövetés
    On Error GoTo nagyhiba
    Application.EnableEvents = False
    If Target.Column = 1 Then  'A oszlopban változott egy cella
        Set Lista = ThisWorkbook.Worksheets("Kaja").Range("A:B")
        Set MásikCella = Target.Offset(, 1)
    ElseIf Target.Column = 2 Then 'B oszlopban változott egy cella
        Set Lista = ThisWorkbook.Worksheets("Kaja").Range("B:C")
        Set MásikCella = Target.Offset(, -1)
    End If
    On Error GoTo kishiba
    If Target.Value = "" Then
        MásikCella.Value = ""
    Else
        MásikÉrték = Application.WorksheetFunction.VLookup(Target.Value, Lista, 2, False)
        MásikCella.Value = MásikÉrték
    End If
nagyhiba:
    Application.EnableEvents = True
    Exit Sub
kishiba:
    MásikÉrték = "#HIÁNYZIK#"
    Resume Next
End Sub

Kell hozzá a forráslista a Kaja munkalap A:C tartományában. Legyen a C oszlop az A oszlop pontos másolata. Ez azért kell, mert az FKERES függvény csak a tartomány első oszlopában tud keresni, és csak a keresőoszloptól balra eső tartományból ad vissza értéket.

 

Előzmény: Sánta Kutya (SK) (18200)
Törölt nick Creative Commons License 2012.07.04 0 0 18205

Makróval megoldható. Csakhogy nincs értelme makrót írni olyan példa alapján, amit beküldtél, mert csak az idő megy vele, és úgysem lesz jó. A konkrét adatszerkezetet kell ismerni. Általánosságban olyasmi lenne az algoritmus, hogy

- kell egy lista a beszállítókról valahol

- végigmenni az A oszlop celláin

- a vizsgált cella tartalma megegyezik valamelyik beszállítóval, akkor számlatartalom kapcsoló ki, (és megjegyezni, hogy melyik munkalapra kell pakolni,) egyébként be

- ha a számlatartalom kapcsoló be van kapcsolva, akkor az aktuális cella teljes sorát másolni a megjegyzett munkalapra

 

Ez az algoritmus simán elhasalhat azon, ha üres sorok is vannak, szóval erre mondtam, hogy konkrét adatszerkezet kell.

 

Előzmény: djmorphy (18202)
erdeiboroka Creative Commons License 2012.07.04 0 0 18204

Szeretnék egy UserFormon egy Image-ben egy adott path-on lévő .bmp filet látni.

Nem sikerül megnyitni :-(

 

Sánta Kutya (SK) Creative Commons License 2012.07.04 0 0 18203

Újabb kérdés (csak gyűlnek, csak gyűlnek...), megint 2007-esben.

Egy táblázat egyes oszlopaiban zárolt, más oszlopokban feloldott cellák vannak, és ráteszem a lapvdelmet azzal, hogy a sorok beszúrása és törlése minden felhasználónak engedélyezett. A beszúrás megy is, és a zárolt oszlopokban védett cellák keletkeznek általa. A törlés azonban nem megy! Hogy lehetne elérni, hogy a felhasználó tudjon sort beszúrni és törölni, de a nem törölt sorokban egyes cellákat ne írhasson át?

djmorphy Creative Commons License 2012.07.04 0 0 18202

Esetleg erre lenne valami ötleted Jimmy the Hand? :) 

Mert olyan rosszul esne ha ezzel rontanád a levegőmet! :)

Előzmény: djmorphy (18183)
Sánta Kutya (SK) Creative Commons License 2012.07.04 0 0 18201

Végül is ez az utóbbi szimplán makrórögzítővel is megoldható, nem?

Előzmény: Sánta Kutya (SK) (18200)
Sánta Kutya (SK) Creative Commons License 2012.07.04 0 0 18200

Tudom, hogy ez nagyon nagy kérés, de tudnál csinálni egy alapot, hogy lássam, hogy működik? Annyira nem vagyok otthon a makróírásban, hogy ezt nulláról elkezdjem.

Tehát tegyük fel, hogy a Kaja nevű munkalap A és B oszlopában ilyesmi van:

1  alma

2  banán

3  szőlő

stb.

A Munka1 munkalapon szeretném ezeket reprodukálni az A és B oszlopban (mondjuk a 4. sortól) oly módon, hogy a B oszlopban egy legördülő lista ajánlja fel az értékeket, hogy szöveget ne kelljen gépelni (a valóságban rondák a szövegek).

Azt gondolom, hogy ezt kéne valami sablonba belepakolnom (remélem, hogy akkor nem akar egy külön personal.akármit megnyitni mindig az Excellel együtt!), és a rendszergazda azt mondta, segít majd az összes érintett gépen elterjeszteni ezt a sablont.

 

 

Egy olyanban is szeretnék segítséget kérni, hogy tudok csinálni egy gombot az eszköztárba vagy magára a munkalapra vagy bárhova, amit megnyomva a kijelölt vagy ki nem jelölt, de aktív sor elé beszúr egy újat, és arra kiterjeszti a meglévő képleteket és feltételes formázásokat mondjuk az A:K oszlopban.

Előzmény: Törölt nick (18197)
Törölt nick Creative Commons License 2012.07.04 0 0 18199

"Fényes jó reggelt! Képzeld, indafos nélkül is továbbra is beenged :-)"

 

Igen, látom. Addig, amíg beenged, még rontom itt a levegőt egy kicsit. ;)

Előzmény: Törölt nick (18178)
Törölt nick Creative Commons License 2012.07.04 0 0 18198

Egyetértek.

Előzmény: SQLkerdes (18192)
Törölt nick Creative Commons License 2012.07.04 0 0 18197

Ezt csak makróval tudom elképzelni.

Worksheet_Change -re kell írni egy kódot, ami figyeli A és B oszlopok változását, és ahol változik, ott kiegészít.

Előzmény: Sánta Kutya (SK) (18193)
Törölt nick Creative Commons License 2012.07.04 0 0 18196

Tomb.Rows.Count ?

Előzmény: Árpi84 (18184)
Sánta Kutya (SK) Creative Commons License 2012.07.04 0 0 18195

Mondom: ha csak az egyik irányban menne a hozzárendelés, nem lenne probléma.

Előzmény: djmorphy (18194)
djmorphy Creative Commons License 2012.07.03 0 0 18194

Nekem is itt mondták nemrég a trükköt ehhez hasonló problémára. Próbáld meg az fkeres függvénnyel. Igaz nekem egy irányba kellet társítanom számokhoz betűt. De lehet, hogy 2db fkeressel meg tudod oldani. Az egyiknél a szöveget a másiknál a számot definiálod.

 

 

Előzmény: Sánta Kutya (SK) (18193)
Sánta Kutya (SK) Creative Commons License 2012.07.03 0 0 18193

Hogy oldanátok meg a következő feladatot?

 

Az A oszlopban kódszámok lehetnek, a B-ben hozzájuk tartozó szövegek. Ezek egy külön munkalapon lehetnek listázva és a szövegek legördülőből kerülhetnek a B-be.

A user alapból nem jegyez meg kódszámokat, de olykor mégis, és akkor meg a szöveget nem akarja kiválasztani. Tehát ha az A oszlopba beír egy számot, a B-ben jelenjék meg hozzá a szöveg, ha viszont a B-vel kezdi, és a legördülőből kiválasztja a szöveget, akkor az A-ban jelenjék meg a kódszám.  Ha csak az egyik irányban menne a hozzárendelés, nem lenne probléma. De lehet oda-vissza? (Excel 2007)

SQLkerdes Creative Commons License 2012.07.03 0 0 18192

Lehet, hogy erre a célra egy MsgBox-nak látszódó Form-ot kell csinálni...

Előzmény: lacid90 (18191)
lacid90 Creative Commons License 2012.07.03 0 0 18191

Van arra lehetőség, hogy egy MsgBox- ban ne legyen nyomógomb, és öt másodperc után magától eltűnjön.

 

Sánta Kutya (SK) Creative Commons License 2012.07.03 0 0 18190

2007-ben hogy lehet az adatérvényesítésnél megmondani, hogy a szöveges értéket nagybetűérzékenyen vegye, és ne fogadja el más alakban?

lacid90 Creative Commons License 2012.07.03 0 0 18189

Egy makróban hogyan lehet megadni azt, hogy a munkalapon csak az engedélyezett cellákban lévő értékeket dolgozza fel (pl: C6:D50), vagy a C6:D-a táblázat utolsó sora. Szintén, hogy kell megadni, hogy a makró lefutása után a táblázat egy adott cellájára ugorjon a kijelölés.

lacid90 Creative Commons License 2012.07.02 0 0 18188

Közben rájöttem.

Előzmény: lacid90 (18187)
lacid90 Creative Commons License 2012.07.02 0 0 18187

Az Msgbox-ban hogyan kell több sorba írni??????

Törölt nick Creative Commons License 2012.07.02 0 0 18186

Dinamikus tömbök?

 

Dim MyDArray () as ....

ReDim MyDarray (10)

ReDim Preserve MyDarray (1 to 10)

ReDim Preserve MyDarray (1 to 10)

 

stb...

Előzmény: Árpi84 (18184)
wawabagus Creative Commons License 2012.07.02 0 0 18185

Namááááá! Ezt nem csinálhatod, mi lesz akkor velünk?

Vagy akkor majd követünk

:-D

 

Előzmény: Törölt nick (18161)
Árpi84 Creative Commons License 2012.07.02 0 0 18184

Sziasztok!

 

 

A segítségeteket kérném, hogy hogyan lehet meghatározni VB-ben egy kétdimenziós tömb sorainak számát.

 

A makró úgy működik, mint egy excel-es függvény, egyszerűen a makró meghívásakor annak argumentumába kijelöléssel határozom meg a tömböt. Pont ezért nem tudom előre, hogy hány sora van.

A Tomb.Cells.Count utasítással a cellák számát kapom meg, de nekem csak a sorok száma kellene.

 

Segítségeteket előre is köszönöm.

 

Üdv: Árpi

 

 

djmorphy Creative Commons License 2012.07.02 0 0 18183

Köszi a tippet! Megnézem aztán jelentkezem, hogy mire jutottam! :)

 

 

 

Jönne a következő kérdés :D

 

Meg lehet-e oldani valahogy, hogy a munkafüzet1-re felrögzített számlák/szállítólevelek adatait ami változó terjedelmű szortírozzak beszállítóként új munkafüzetre?

 

Pl:

Munkafüzet 1

 

Beszállító1:

A10:G10

Beszállító2:

A11:F25

Beszállító1:

A25:H30

 

és akkor Munkafüzet2 kiírja az A10:G10 tartományt és A25:H30 

Munkafüzet3 pedig A11:F25-öt. 

 

Ez persze folyamatosan nőni fog szóval valami keresés kellene rá csak az a baj, hogy nem tudom mekkora lesz a bevitt adatok határai. Mert lehet hogy 1 sor és mondjuk 3 oszlop de az is lehet hogy 10sor és 9 oszlop.

 

a dimenzió határai között lehetnek hülyeségek mert csak hasraütés szerűen írtam

Előzmény: le542 (18182)

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