Keresés

Hirdetés

!! SZERVERLEÁLLÁS, ADATVESZTÉS INFORMÁCIÓK !!
Talpon vagyunk, köszönjük a sok biztatást! Ha segíteni szeretnél, boldogan ajánljuk Előfizetéseinket!

Új hozzászólás Aktív témák

  • Fferi50

    Topikgazda

    válasz bteebi #26162 üzenetére

    Kiegészítés:

    Sőt,az a gyanúm, ha szám formátumú, akkor a szorzás sem kell, elég a számformátum megváltoztatása!

    Üdv.

  • Fferi50

    Topikgazda

    válasz bteebi #26162 üzenetére

    Szia!

    Az világos, hogy honnan szeretnél másolni, az viszont nem egészen, hogy hova.
    Mert a "forrás" munkafüzet megnyitása után az abban levő munkalap válik aktívvá, tehát az itt
    " For oszlop = 2 To 10 Step 4
    'ebben a sorban valószínűleg több hiba is van:
    ActiveSheet.Cells(19 + 2 * adat, oszlop) = 1000 * (Left(fajlnev.Sheets("Sheet1").Cells(36 + 2 * (adat - 1), 16), Len(fajlnev.Sheets("Sheet1").Cells(36 + 2 * (adat - 1), 16) - 1)))
    ActiveSheet.Cells(19 + 2 * adat, oszlop).NumberFormat = "0"
    Next oszlop"

    hivatkozott Activesheet sajnos a forrás fájlodban van.

    Tehát ebben az esetben neked nem a forrás fájl hivatkozással van problémád, hanem a cél fájl hivatkozásával.
    Ezt pedig úgy tudod megoldani, hogy az "eredeti" munkafüzeted kitöltendő munkalapját (amiből a többit megnyitod), egy változóhoz rendeled mielőtt még egy másik fájlt megnyitnál (pl.Set cellap=activesheet), mivel most még az az aktív munkalap.
    Ezek után a számolás: cellap.cells(19+2*adat,oszlop) -ra kell hogy hivatkozzon és persze akkor fajlnev.sheets("Sheet1").cells helyett maradhat az Activesheet.cells.

    "az eredeti adatok általános formátuma pl. "3.2k"" Ez azt jelenti, hogy mindig van a szám után egy betű és a formátum szöveg?
    Ha igy van, akkor a használható a replace függvény is: replace(activesheet.cells(36+2*(adat-1),16),right(activesheet.cells(36+2*(adat-1),16),1),"").
    Viszont a "beszúrt" programsorból úgy látom, az eredeti érték számformátum, ezért működik a közvetlen szorzás 1000-el, vagyis nem kell semmilyen levágás, átalakítás!

    Még valami: ahol Activesheet.Cells van, ott az Activesheet elhagyható, mert az az alapértelmezés.

    Üdv.

Új hozzászólás Aktív témák