Keresés

Részletes keresés

_Nyuszi Creative Commons License 2011.02.24 0 0 14124

Makró.

Olyat tudsz a legegyszerűbben, hogy beteszel két képet, és makróval állítod a tulajdonságaikat. De képet beszúrni is lehet, csak sztem macerásabb.

A .visible tulajdonságot tudod állítani, és OK lesz.

(Fejből többet nem tudok, a szakirodalmam meg bent van, majd a többiek...)

-----

Az volt a bajom, hogy fogalmam sincs, hogyan kell cellába képet beszúrni. Én csak leteszem, és esetleg beállítom a cella méretének megfelelően, és megmondom, hogy a cellával együtt mozduljon a kép is (helye is, mérete is).

Előzmény: mcsabi30 (14123)
mcsabi30 Creative Commons License 2011.02.24 0 0 14123

szia Nyuszi!

Képre szeretnék hivatkezni függvényel.úgy hogyha egy bizonyos cellába egy bizonyos érték (pl.1) van akkor egy másik cellába szúrjon be egy képet.pl.A1-es clella=1 akkor B1=egy bizonyos kép

Előzmény: _Nyuszi (14111)
Sznida Creative Commons License 2011.02.24 0 0 14122

Ebben az esetben:

 

"=VLOOKUP(RC[-10],[" & vRng.Parent.Parent.Name & ".xls]" & vRng.Parent.Name & "!" & Tartomany & ",10,0)"

 

Üdv: Sznido

Előzmény: SQLkerdes (14121)
SQLkerdes Creative Commons License 2011.02.24 0 0 14121

vRng.Parent.Parent.Name

vRng.Parent.Name

 

Asszem, de nem követtem a társalgást, szóval felelősséget nem vállalok semmiért.

Előzmény: Sznida (14120)
Sznida Creative Commons License 2011.02.24 0 0 14120

Értem... :( Az baj.

Én akkor abba az irányba indulnék, mivel a beírt képlet szöveg, ezért módosítom a szöveget arra amire kell.

"=VLOOKUP(RC[-10],[" & wbPriceList.Name & "]" & wbPriceList.worksheets(1).name & "!" & Tartomany & ",10,0)"

Igaz ebben az esetben már nem sok értelme van a vRng tartománynak, mert ugyanazokat adod meg utána megint, akkor lenne értelme, ha ki tudnánk nyerni a vRng-ből, hogy mi a file neve, és mi a munkalap neve.

 

Üdv: Sznido

Előzmény: wawabagus (14119)
wawabagus Creative Commons License 2011.02.24 0 0 14119

Szia!

Hát mégsincs ok az ünneplésre :-DDD.

Felfedeztem, hogy ahelyett, hogy a másik fájlból vlookupol, önmagából vlookupol.

A Tartományhoz ezt írja: ="C[-10]:C"

Ez lehet hogy jó, de az nincs benne hogy melyik fájlra vonakozik...

 

Szóval minden jó, csak mintha nem értené, hogy az vRng a másik fájlban van.

 

:-((((

 

Előzmény: Sznida (14116)
Sznida Creative Commons License 2011.02.24 0 0 14118

Gratulálok! :)

 

Ügyes vagy!

 

Üdv: Sznido

Előzmény: wawabagus (14117)
wawabagus Creative Commons License 2011.02.24 0 0 14117

És igen és igen...
Sznida és robbantomester...

MÉGRE felfogtam egy részét annak, amit magyaráztatok nekem.

rWorkRange.Offset(0, 10).Value = "=VLOOKUP(RC[-10],PL_Wasko_SP_Standard_Services_Q1_2011.csv!B:L,10,0)"
Helyett ez:
rWorkRange.Offset(0, 10).FormulaR1C1 = "=VLOOKUP(RC[-10],PL_Wasko_SP_Standard_Services_Q1_2011.csv!C2:C12,10,0)"
Vagy ahogy javasoltad:


Set vRng = wbPriceList.Worksheets(1).Range("B:L")...ami nem relatív

Tartomany = vRng.AddressLocal(ReferenceStyle:=xlR1C1, _
        RowAbsolute:=False, ColumnAbsolute:=False, _
        RelativeTo:=Worksheets(1).Cells(1, 12))...de ez már relatívvá teszi és akkor a Vlookup is tudja értelmezni!!!!


Egy mini lépést már előre jutottam :-) hála nektek :-DDD...

 

És végre felfogtam Szinda, amit írtál erről tartomány dologról...

Vettem három mély lélegzetet és elkeztem lépésről lépésre...tesztelgetni...és a végére felfogtam amit írtál :-))).

 

Fantasztikus!!!

Köszönöm szépen!!!

Sznida Creative Commons License 2011.02.24 0 0 14116

Szia, sajna elveszett amit az előbb írtam.... :(

 

Na akkor újra:

 

Nálam működik a Te progid, csak beírtam egy set-et a vRng=wbPriceList.Worksheets(1).Range("B:L") elé.

Ha mondatonként (F8) futtatod, akkor miután tároltad a Tartomany változóba az adatot, vidd az egeret a Tartomany szóra, és kiírja, hogy mi a tartalma, ha ott "O" van, szerintem nem lesz, akkor cserélned kell, ha nem "C", akkor is cserélned kell "C"-re.

Lásd csatolt kép!

 

 

 

Üdv: Sznido

Előzmény: wawabagus (14115)
wawabagus Creative Commons License 2011.02.24 0 0 14115

Szia Sznida!

Köszi szépen a magyarázatot. Szerintem te érthetően magyarázod, csak én vagyok értetlen :-DDD.

Tehát elvileg az alább bemásolt kódnak működnie kell.

Beleírtam ezt a tartomány dolgot és mivel angol excelem van nem kell semmit sem cserélgetnem /ha jól értem/.

vRng definiálva van

Tartomany definialva van

és most nem foglalkozom egyenlőre azzal, hogy ha nem talál megfelelést, akkor leáll ez a fajta vlookup /szóval, hogy worksheetfunction-t kell majd használnom.

 

De valamit továbbra is rosszul csinálok, mert nem működik...

Erre ír hibát továbbra is: vRng = wbPriceList.Worksheets(1).Range("B:L")

 

Tudom kicsit hopeless vagyok :-)

-----------------

Sub teszt2()
Dim wbPriceList As Workbook
Dim wbCheckFile As Workbook
Dim rWorkRange As Range
Dim vRng As Range
Dim x As Long
Dim Msg As String
Dim Ans As Integer


MsgBox "Open the file you want to check!"
Application.Dialogs(xlDialogOpen).Show
Set wbCheckFile = ActiveWorkbook

MsgBox "Open the PriceList!"
Application.Dialogs(xlDialogOpen).Show
Set wbPriceList = ActiveWorkbook


Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

x = wbCheckFile.Worksheets.Count


For i = 1 To x
    wbCheckFile.Worksheets(i).Range("B:B").Insert Shift:=xlToRight
    wbCheckFile.Worksheets(i).Range("B1") = "UniqueCode"
    Set rWorkRange = wbCheckFile.Worksheets(i).Range("A2")
    
    Do While rWorkRange.Value <> Empty
        rWorkRange.Offset(0, 1).Value = "=RC[21]&""_""&RC[24]&""_""&RC[26]&"" Q""&ROUNDUP(MONTH(RC[6])/3,0)&"" ""&YEAR(RC[6])"
        Set rWorkRange = rWorkRange.Offset(1, 0)
    Loop
Next i

For i = 1 To x
wbCheckFile.Worksheets(i).Range("B:B").Copy
wbCheckFile.Worksheets(i).Range("B:B").PasteSpecial xlPasteValues
wbCheckFile.Worksheets(i).Range("L:M").Insert Shift:=xlToRight
wbCheckFile.Worksheets(i).Range("O:P").Insert Shift:=xlToRight


wbCheckFile.Worksheets(i).Range("L1") = "PriceList.LaborPrice"
wbCheckFile.Worksheets(i).Range("M1") = "Diff"
wbCheckFile.Worksheets(i).Range("O1") = "PriceList.PartsPrice"
wbCheckFile.Worksheets(i).Range("P1") = "Diff"

Next i

wbPriceList.Worksheets(1).Range("B:B").Insert Shift:=xlToRight
wbPriceList.Worksheets(1).Range("B2") = "UniqueCode"
    Range("A3").Select
        
        Do While ActiveCell.Value <> Empty
            ActiveCell.Offset(0, 1).Value = "=RC[5]&""_""&RC[4]&""_""&RC[-1]"
            ActiveCell.Offset(1, 0).Select
        Loop
        
wbPriceList.Worksheets(1).Range("B:B").Copy
wbPriceList.Worksheets(1).Range("B:B").PasteSpecial xlPasteValues


vRng = wbPriceList.Worksheets(1).Range("B:L")
 

 

Tartomany = vRng.AddressLocal(ReferenceStyle:=xlR1C1, _
        RowAbsolute:=False, ColumnAbsolute:=False, _
        RelativeTo:=Worksheets(1).Cells(1, 12))

For i = 1 To x
    Set rWorkRange = wbCheckFile.Worksheets(i).Range("B2")
   
    Do While rWorkRange.Value <> Empty
        rWorkRange.Offset(0, 10).Value = "=VLOOKUP(RC[-10]," & Tartomany & ",10,0)"
        rWorkRange.Offset(0, 11).Value = rWorkRange.Offset(0, 9).Value - rWorkRange.Offset(0, 10).Value
        Set rWorkRange = rWorkRange.Offset(1, 0)
    Loop
Next i

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True


End Sub

Előzmény: Sznida (14114)
Sznida Creative Commons License 2011.02.24 0 0 14114

Szia,

 

Kezdjük az elején. Küldtél egy kódot, amiben valmi nem volt.

Ezt én bemásoltam egy VBA-ba, és elkezdtem futtatni. Üres munkalapokat nyittam meg, mert ugye úgy indul a program, hogy két file-t megnyit... (Aztán az első file-ba beírtam egy két számot, hogy legyen valami, mert az üres cellákkal nem foglalkozik a ciklus).

Miután eljutottam a Te hibádhoz, akkor szépen sorjában megnéztem, hogy mit akar csinálni a program. vRng simán set-elte. Aztán rájöttem, hogy te a "rWorkRange.Offset(0, 10).Value =" után az egész képletet idézőjelbe tetted, azaz szövegként beírattad a cellába. Ezt írta Robbantomestre is, és ezért vágta/vágtuk három részre a képletet:  "=VLOOKUP(RC[-10]," & Tartomany & ",10,0)"   a részeket az & fűzi össze. Ha a tartomány helyett csak a vRng-t írom, akkor lehülyézett, mert az egy range a benne lévő adatokkal, de én annak a címére voltam kíváncsi, ezért kipróbáltam a vRng.Address-t. Ez pedig "B:M" volt, amire azt gondoltam, hogy jó. Erre írta Robbantomester, hogy a VBA-ban írt képleteknek relatív sor/oszlophivatkozást kell tartalmazniuk, azaz ott ezt kell lásd: "C[-10]:C[1]", legalábbis a "B:M" ezt jelenti a cells(1,12) cellához képest. Ezután kipróbáltam a vRng.AddressLocal-t, ahol szükség volt a további argumentumokra a zárójelben. ezt tároltam a Tartomány változóban.

Ekkor kiíratva a Tartományt, azt láttam, hogy a magyar excelem a "C"-ket "O"-val jelöli, hát persze, hogy nem fogadta el, ezért ez a két betűt kicseréltem, és utána szépen lefutott a program, és jó fkeres függvényt tett be a megfelelő sorba.

 

Remélem érthető voltam! :)

 

Üdv: Sznido

 

Előzmény: wawabagus (14113)
wawabagus Creative Commons License 2011.02.24 0 0 14113

Szia Sznida,

 

Do While rWorkRange.Value <> Empty
   
    Tartomany = vRng.AddressLocal(ReferenceStyle:=xlR1C1, _
        RowAbsolute:=False, ColumnAbsolute:=False, _
        RelativeTo:=Worksheets(1).Cells(1, 12))


 tehát itt a már korábban definiált vRng-t használjuk?

 tehát ez jó?: vRng = wbPriceList.Worksheets(1).Range("B:L")...valamiért erre mutat a debug, de a wbpriceList bizonyítottam működik, sok műveletben használja sikerrel a macro...de mi a gondja?

 "Cells(1, 12)" ezt nem értem ebben a kontextustban...ez nem a 12-es oszlop első sorát jelenti? Nekem a vlookuphoz nem egy cellára, hanem egész rangre van szükségem, amiben keresgálhet, vagy totál nem értek valamit :-DDD...gondolom ez utóbbi.


        'A magyar excel VBA-ja az oszlopot "O"-nak jelöli, ezt kell átcserélni "C"-re, ez a két sor azt csinálja :)

        Tartomany = Application.WorksheetFunction.Replace(Tartomany, InStr(1, Tartomany, "O"), 1, "C")
        Tartomany = Application.WorksheetFunction.Replace(Tartomany, InStr(1, Tartomany, "O"), 1, "C")

Mivel nekem angol Excelem van, akkor ez rám nem vonatkozik, ugye?


        rWorkRange.Offset(0, 10).Value = "=VLOOKUP(RC[-10]," & Tartomany & ",10,0)"
        rWorkRange.Offset(0, 11).Value = rWorkRange.Offset(0, 9).Value - rWorkRange.Offset(0, 10).Value
        Set rWorkRange = rWorkRange.Offset(1, 0)
    Loop

 

Bocs a hülye kérdésekért! Kezdem elveszíteni a lelkesedésem :-DDD, mert nem érzem a fényt az alagút végén mégsem :-DDD

Köszi szépen a segítséget!!!

Előzmény: Sznida (14109)
wawabagus Creative Commons License 2011.02.24 0 0 14112

Szia Robbantomester,

bb dolgot is írtál, de nem vagyok biztos benne hogy értem.

Kékkel beírtam mit nem értek pontosan...tuti valamit félreértettem.

Köszi szépen a segítséget!!

-------------------------------------

Sub teszt2()
Dim wbPriceList As Workbook
Dim wbCheckFile As Workbook
Dim rWorkRange As Range
Dim vRng As Range
Dim x As Long

MsgBox "Open the file you want to check!"
Application.Dialogs(xlDialogOpen).Show
Set wbCheckFile = ActiveWorkbook

MsgBox "Open the PriceList!"
Application.Dialogs(xlDialogOpen).Show
Set wbPriceList = ActiveWorkbook


Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

x = wbCheckFile.Worksheets.Count


For i = 1 To x
    wbCheckFile.Worksheets(i).Range("B:B").Insert Shift:=xlToRight
    wbCheckFile.Worksheets(i).Range("B1") = "UniqueCode"
    Set rWorkRange = wbCheckFile.Worksheets(i).Range("A2")
    
    Do While rWorkRange.Value <> Empty
        rWorkRange.Offset(0, 1).Value = "=RC[21]&""_""&RC[24]&""_""&RC[26]&"" Q""&ROUNDUP(MONTH(RC[6])/3,0)&"" ""&YEAR(RC[6])"
        Set rWorkRange = rWorkRange.Offset(1, 0)
    Loop
Next i

For i = 1 To x
wbCheckFile.Worksheets(i).Range("B:B").Copy
wbCheckFile.Worksheets(i).Range("B:B").PasteSpecial xlPasteValues
wbCheckFile.Worksheets(i).Range("L:M").Insert Shift:=xlToRight
wbCheckFile.Worksheets(i).Range("O:P").Insert Shift:=xlToRight


wbCheckFile.Worksheets(i).Range("L1") = "PriceList.LaborPrice"
wbCheckFile.Worksheets(i).Range("M1") = "Diff"
wbCheckFile.Worksheets(i).Range("O1") = "PriceList.PartsPrice"
wbCheckFile.Worksheets(i).Range("P1") = "Diff"

Next i

wbPriceList.Worksheets(1).Range("B:B").Insert Shift:=xlToRight
wbPriceList.Worksheets(1).Range("B2") = "UniqueCode"
    Range("A3").Select
        
        Do While ActiveCell.Value <> Empty
            ActiveCell.Offset(0, 1).Value = "=RC[5]&""_""&RC[4]&""_""&RC[-1]"
            ActiveCell.Offset(1, 0).Select
        Loop
        
wbPriceList.Worksheets(1).Range("B:B").Copy
wbPriceList.Worksheets(1).Range("B:B").PasteSpecial xlPasteValues

For i = 1 To x
    Set rWorkRange = wbCheckFile.Worksheets(i).Range("B2")
    Set vRng = wbPriceList.Worksheets(1).Range("B:M")
          Egyébként mostanság ehhez a sorhoz írja a debug, hogy nem érti...de mi nem jó ebben? Bár igaz olyat is láttam, hogy ezt jelöli ki, de nem is itt van a hiba...MIT NEM ÉRT EZEN? ... Kikészít már :-D


    Do While rWorkRange.Value <> Empty
        rWorkRange.Offset(0, 10).Value = "=VLOOKUP(RC[-10],vRng,10,0)"

          1.erre gondolsz? rWorkRange.Offset(0, 10).Value = "=VLOOKUP(RC[-10],"& vRng &",10,0)"

          2.meg erre? rWorkRange.Offset(0, 10).Value = WorksheetFunction.VLookup(rWorkRange, vRng, 10, False)

          /a neten láttam, hogy ilyenkor így írják a dolgot "WorksheetFunction.VLookup(range("rWorkRange"),range("vRng"), 10, False)

          3. meg hogy a Value helyett Name legyen? Vagy Formula?

 

      rWorkRange.Offset(0, 11).Value = rWorkRange.Offset(0, 9).Value - rWorkRange.Offset(0, 10).Value
        Set rWorkRange = rWorkRange.Offset(1, 0)
    Loop
Next i


Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

Előzmény: Törölt nick (14105)
_Nyuszi Creative Commons License 2011.02.23 0 0 14111

Hogyan tudsz egy cellába képet tenni?

Előzmény: mcsabi30 (14110)
mcsabi30 Creative Commons License 2011.02.23 0 0 14110

Hali!

Excelbe szeretnék képre hivatkozni függvénybe, lehetséges ez? Ha igen hogyan?

Pl.:ha A1=1 akKor B1=kép, ha A1=2 akkor B1=egy másik kép

Előre is köszi.

Sznida Creative Commons License 2011.02.23 0 0 14109

Sziasztok,

 

Robbantomester jó helyen jár.

A probléma a sor/oszlop relatív hivatkozással van, a formulaR1C1 se működött, nálam. Ezért megcsináltam az én verzióm, ami nálam lefut, kicsit csúnya, de működik. Sajnos van benne egy azaz kett csere az angol-magyar nyelv miatt, erre lehet nem lesz szükséged Wawabagus.

A Kód: (mármint amit beírtam, az egyik do while loop ciklus)

 

    Do While rWorkRange.Value <> Empty
   
    Tartomany = vRng.AddressLocal(ReferenceStyle:=xlR1C1, _
        RowAbsolute:=False, ColumnAbsolute:=False, _
        RelativeTo:=Worksheets(1).Cells(1, 12))
        'A magyar excel VBA-ja az oszlopot "O"-nak jelöli, ezt kell átcserélni "C"-re, ez a két sor azt csinálja :)

        Tartomany = Application.WorksheetFunction.Replace(Tartomany, InStr(1, Tartomany, "O"), 1, "C")
        Tartomany = Application.WorksheetFunction.Replace(Tartomany, InStr(1, Tartomany, "O"), 1, "C")
        rWorkRange.Offset(0, 10).Value = "=VLOOKUP(RC[-10]," & Tartomany & ",10,0)"
        rWorkRange.Offset(0, 11).Value = rWorkRange.Offset(0, 9).Value - rWorkRange.Offset(0, 10).Value
        Set rWorkRange = rWorkRange.Offset(1, 0)
    Loop

Remélem neked is működni fog!

 

Üdv: Sznido

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

még valami, ha mindenképpen így akarod:

"=VLOOKUP(RC[-10],vRng,10,0)"

Akkor így próbáld, ugyanis a változód idézőjelek között, van. Ez így szöveg.

"=VLOOKUP(RC[-10]"&,vRng&",10,0)"

Perszi lenti hsz-em alapján fogalmam sincs mi lesz belőle.


Előzmény: wawabagus (14102)
Törölt nick Creative Commons License 2011.02.23 0 0 14107

még ezzel is gond lehet:

Set vRng = wbPriceList.Worksheets(1).Range("B:M")

 

ugyanis a vba a cellába beírandó képletet sor/oszlop relatív hivatkozással tudja csak értelmezni és valószínűleg ennek ez keresztbe tesz. Használhatsz .FormulaR1C helyett sima .Formula-t is. (Tudod, a .Value helyett)

 

Előzmény: wawabagus (14102)
Törölt nick Creative Commons License 2011.02.23 0 0 14106

A NAME-t pedig a vRng , miatt írja ki, mert a tábládban lennie kell egy ezzel a névvel ellátott tartománynak.

Előzmény: wawabagus (14102)
Törölt nick Creative Commons License 2011.02.23 0 0 14105

1. Szerintem nam .value kell neki, hanem .FormulaR1C1 

2. ne így használd a vlookup-ot, hanem így:  Worksheetfunction.VLookup(...)  az argumentumok ugyanazok.

Előzmény: wawabagus (14104)
wawabagus Creative Commons License 2011.02.23 0 0 14104

Szia,

Próbáltam, de nem nem érti. Beírj az első celléba, ahova kell és finish : #NAME?.

Kipróbáltam egy az egyben is. Megadva szépen a ranget és szépen kezdi is kitölteni, de az első olyan után cella után ahova nem talál megfelelést "n/a" lenne leáll az egésszel.

Olvastam a neten, hogy a worksheetfunction.vlookup-ot kéne itt használni, mert az nem robban le az első sikeretelen találat után...

 

De basszus lezsibbadtam ettől :-).

Egy hajszál választ el a kész macrotól :-D...és annyire idegesítő hogy ez a vlookup kérdés nem is annyira egyszerű...

 

Most már el kell mennem, de holnap folyt köv...NEM ADOM FEL :-)))...olyan szépen haladtam :-)

 

Majd jövök holnap :-)!

Köszi a problémámmal való foglalkozást!!

Szép estét

 

 

Előzmény: Sznida (14103)
Sznida Creative Commons License 2011.02.23 0 0 14103

Szia,

 

Próbáltad vRng.address-el?

 

Üdv: Sznido

Előzmény: wawabagus (14102)
wawabagus Creative Commons License 2011.02.23 0 0 14102

Sziasztok!

Kéne egy kis segítség :-).

VBA-ban egy loopos VlookUp és egy primko kivonás kifogott rajtam.

 

A misszió, hogy a CheckFile fájlba beírjon egy Vlookupot összekötve a fájlt a PriceList fájllal. Mindezt loop-pal.

vRng hivatott leegyszerűsteni a dolgot, de azt írja ki az excel a vlookup függvényre hogy "NAME?"...szóval nem érti. Én sem.

 

Minden remekül működik. El is kezdi beírni a Vlookupot, de nem tudja értelmezni. Én meg nem értem mit nem ért.

Ti értitek?

Bocsánat kicsit hosszú a macro...

Előre is köszönöm a segítségeteket!!

 

-------------------------------------

Sub teszt2()
Dim wbPriceList As Workbook
Dim wbCheckFile As Workbook
Dim rWorkRange As Range
Dim vRng As Range
Dim x As Long

MsgBox "Open the file you want to check!"
Application.Dialogs(xlDialogOpen).Show
Set wbCheckFile = ActiveWorkbook

MsgBox "Open the PriceList!"
Application.Dialogs(xlDialogOpen).Show
Set wbPriceList = ActiveWorkbook


Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

x = wbCheckFile.Worksheets.Count


For i = 1 To x
    wbCheckFile.Worksheets(i).Range("B:B").Insert Shift:=xlToRight
    wbCheckFile.Worksheets(i).Range("B1") = "UniqueCode"
    Set rWorkRange = wbCheckFile.Worksheets(i).Range("A2")
    
    Do While rWorkRange.Value <> Empty
        rWorkRange.Offset(0, 1).Value = "=RC[21]&""_""&RC[24]&""_""&RC[26]&"" Q""&ROUNDUP(MONTH(RC[6])/3,0)&"" ""&YEAR(RC[6])"
        Set rWorkRange = rWorkRange.Offset(1, 0)
    Loop
Next i

For i = 1 To x
wbCheckFile.Worksheets(i).Range("B:B").Copy
wbCheckFile.Worksheets(i).Range("B:B").PasteSpecial xlPasteValues
wbCheckFile.Worksheets(i).Range("L:M").Insert Shift:=xlToRight
wbCheckFile.Worksheets(i).Range("O:P").Insert Shift:=xlToRight


wbCheckFile.Worksheets(i).Range("L1") = "PriceList.LaborPrice"
wbCheckFile.Worksheets(i).Range("M1") = "Diff"
wbCheckFile.Worksheets(i).Range("O1") = "PriceList.PartsPrice"
wbCheckFile.Worksheets(i).Range("P1") = "Diff"

Next i

wbPriceList.Worksheets(1).Range("B:B").Insert Shift:=xlToRight
wbPriceList.Worksheets(1).Range("B2") = "UniqueCode"
    Range("A3").Select
        
        Do While ActiveCell.Value <> Empty
            ActiveCell.Offset(0, 1).Value = "=RC[5]&""_""&RC[4]&""_""&RC[-1]"
            ActiveCell.Offset(1, 0).Select
        Loop
        
wbPriceList.Worksheets(1).Range("B:B").Copy
wbPriceList.Worksheets(1).Range("B:B").PasteSpecial xlPasteValues

For i = 1 To x
    Set rWorkRange = wbCheckFile.Worksheets(i).Range("B2")
    Set vRng = wbPriceList.Worksheets(1).Range("B:M")
    
    Do While rWorkRange.Value <> Empty
        rWorkRange.Offset(0, 10).Value = "=VLOOKUP(RC[-10],vRng,10,0)"
        rWorkRange.Offset(0, 11).Value = rWorkRange.Offset(0, 9).Value - rWorkRange.Offset(0, 10).Value
        Set rWorkRange = rWorkRange.Offset(1, 0)
    Loop
Next i


Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

 

SQLkerdes Creative Commons License 2011.02.22 0 0 14101

Sőt backdoor sem műxik, hogy a Function-ből meghívok egy sub-ot

 

Function TotalLink(InputRange As Range) As Variant
Call formatter(InputRange, Application.Caller)

TotalLink = InputRange.Value                

End Function 

 

Sub formatter(SourceRange As Range, TargetRange As Range)  

SourceRange.Copy 

TargetRange.PasteSpecial (xlPasteFormats)   

End Sub

 

Meghívja a sub-ot, az le is fut, mégsincs semmilyen hatása.

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

Izé... Nekem se sikerült sehogy sem, pedig próbálkoztam...

Aztán utánanéztem, és ezt találtam:

 

"UDF's do not have the same flexibility as a standard Procedure. A UDF cannot alter the structure of a Worksheet, such as change the Worksheet name, turn off gridlines, protect the Worksheet etc. They cannot change a physical characteristic of a cell, including the one that houses the UDF. So we cannot use a UDF to change the font colour, background colour etc of any cell. They cannot be used to try and change any part of another cell in any way at all. This means a UDF cannot place a value into any other cell except the cell housing the UDF."

(Forrás: http://www.ozgrid.com/Excel/free-training/ExcelVBA1/excelvba1lesson21.htm)

 

Úgy tűnik, ez zsákutca.

Előzmény: SQLkerdes (14099)
SQLkerdes Creative Commons License 2011.02.22 0 0 14099

Valóban elsikkadt a Caller-es hozzászólás...

 

Szóval ezt csináltam, de a formátumot nem másolja...

 

Function TotalLink(InputRange As Range) As Variant
InputRange.Copy

Application.Caller.PasteSpecial (xlPasteFormats)

TotalLink = InputRange.Value                

End Function

Sznida Creative Commons License 2011.02.22 0 0 14098

Nincs mit, máskor is, ha itt leszek! :)

Előzmény: kelan (14097)
kelan Creative Commons License 2011.02.22 0 0 14097

Köszönöm szépen a segítségedet, pont erre gondoltam! :) Legközelebb konkrétabban megfogalmazom. :)

Előzmény: Sznida (14056)
Törölt nick Creative Commons License 2011.02.22 0 0 14096

"Ebből csak azt nem látom még, hogy a cél-cellát hogy hivatkozzam meg az UDF-ben..."

 

Úgy látom, elsikkadt a 14083. hsz.

 

"Lehet egy Change eseménykezelővel jobban lehetne boldogulni"

 

Képlet számolása nem vált ki a Change eseményt.

Ha pl. B1 cellában a képlet =A1, és A1 megváltozik, akkor lesz Change, de ekkor a Target A1 lesz, és B1-et csak a Target.DirectDependents tartományból tudod kihámozni. Ha a Target.DirectDependents egyetlen cella, akkor szerencséd van. Ha több cella, akkor melyik lehet az, amit át kell színezni?

Előzmény: SQLkerdes (14094)
Törölt nick Creative Commons License 2011.02.21 0 0 14095

Én a forrás cellából csak rámásolnám  .PasteSpecial Paste:=xlPasteFormats módon a célcellára a formátumot. A fene állítgatná egyesével azokat (mert erre következtettem a hszodból)

Sőt. A legegyszerűbb a teljes oszlopra átmásolni, lassítani nem nagyon lassít...

Nehogy egyesével állítgass be minden cellaformátum tulajdonságot
AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBulgarianCatalanChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDetect languageDutchEnglishEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatinLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishThaiTurkishUkrainianUrduVietnameseWelshYiddishAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBulgarianCatalanChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatinLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishThaiTurkishUkrainianUrduVietnameseWelshYiddishDetect language » Hungarian
Előzmény: SQLkerdes (14094)

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