< návrat zpět
MS Excel
Téma: Dosazení jména sešitu.
Zaslal/a Martin K. 5.3.2014 14:26
Zdravím všechny,
mám na vás prosbičku. potřebuji dosazovat do vzorce vždy název souboru, který samozřejmě není vždy stejný. U všeho ostatního, jsem to zvládnul, ale při vytváření vždy musím dosadit jeden vzoreček, který mi v tabulce něco vyhledá a pak jej později zruším a použiju data. A problém je, jak jinak zadat tento vzorec, ale sproměnou názvů souboru ? Jedná se o změnu tohoto [prevadec.xlsm] na cokoliv jiního, dle názvu sešitu. Nemělo by se jednat o nic těžkého a na internetu se pár napadů našel, ale bohužel mi ani jeden nefunguje a netuším proč.
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-2],[prevadec.xlsm]TL!R2C1:R150C5,3,FALSE)),""!"",(VLOOKUP(RC[-2],[prevadec.xlsm]TL!R2C1:R150C5,3,FALSE)))"
Poradí někdo ?
V makru názvy řeším takto, tím jsem se jim vyhnul a vše funguje, bohužel u tohodle ne a ne přijít na řešení. prřitom je mi jasné, že je jednoduché .
Set Prevadec = ActiveWorkbook
Prevadec.Activate
Všem moc díky za radu...
Uzamčeno - nelze přidávat nové příspěvky.
marjankaj(5.3.2014 14:35)#018136 MsgBox ActiveWorkbook.Name
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-2],["&activeworkbook.name&"]TL!R2C1:R150C5,3,FALSE)),""!"",(VLOOKUP(RC[-2],["&activeworkbook.name&"]TL!R2C1:R150C5,3,FALSE)))"
citovat
Martin K.(5.3.2014 14:47)#018137 ? Tak teď nevím.
Možná sem špatně napsal. Potřebuji tu proměnou v tom vzorci :
"=IF(ISERROR(VLOOKUP(RC[-2],[prevadec.xlsm]TL!R2C1:R150C5,3,FALSE)),""!"",(VLOOKUP(RC[-2],[prevadec.xlsm]TL!R2C1:R150C5,3,FALSE)))"
Jde o ten název prevadec.xlsm, který bych potřeboval měnit, podle aktuálního názvů souboru. Mě napadlo asi toto, ale to nefunguje :
"=IF(ISERROR(VLOOKUP(RC[-2],[" + Activeworkbook.name + "]TL!R2C1:R150C5,3,FALSE)),""!"",(VLOOKUP(RC[-2],[" + Activeworkbook.name + "]TL!R2C1:R150C5,3,FALSE)))" Skusil jsem i:
" & Activeworkbook.name & "citovat
Martin K.(5.3.2014 14:48)#018138 Tak sorry, já asi psal v době, kdy jsem tam viděl jen jednu větu.
Bohužel, zkusil jsem a výsledek je tohle Run-time error 1004. Application-defined or object-defided error.
A ["&ActiveWorkbook.Name&"] takhle mě to nepustí napsat, musím zapsat takto [" & ActiveWorkbook.Name & "].
citovat
AL(5.3.2014 15:06)#018139 skús to pochopiť z tohto (nie je to úplný návod, ale pokiaľ to pochopíš, tak si to dokážeš i upraviť):
Sub WithVariable()
Dim MyBook As String
MyBook = ActiveWorkbook.Name
MyBook = "[" & MyBook & "]" & ActiveSheet.Name
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-2]," & MyBook & "!R2C1:R150C5,3,FALSE)),""!"",(VLOOKUP(RC[-2]," & MyBook & "!R2C1:R150C5,3,FALSE)))"
End Subcitovat
Martin K.(5.3.2014 15:15)#018140 TAK SUPER. Ještě sjem tam měl jednu chybu, ale už vím kde je problém.
Moc díky, chyběla mi tam právě toto:
Dim MyBook As String
MyBook = ActiveWorkbook.Name
Tím jsem si to jméno nastavil v době, kdy byl aktivní ten soubor a né, až později, kdy jsem dělal v jiném. A proto to házelo tu chybu.
Ještě jednou moc díky, to bylo přesně to co potřebuju. Poradit, ale ne zas moc, abych musel na to přijít aspoň trochu já.
citovat