Mundarija
VBA-da nusxalash va joylashtirish bilan ishlashda biz duch keladigan eng keng tarqalgan muammolardan biri bu ish vaqti xatosi 1004 : PasteSpecial Method of diapazon klassi muvaffaqiyatsiz tugadi . Ushbu maqolada men sizga ushbu xatoning mumkin bo'lgan sabablari nimada ekanligini va ularni qanday hal qilishni tegishli misollar va rasmlar bilan ko'rsataman.
Amaliy ish kitobini yuklab oling
Ushbu maqolani o‘qiyotganingizda mashq qilish uchun ushbu mashq kitobini yuklab oling.
PasteSpecial Method Failed.xlsm
PasteSpecial Method of Range Class Muvaffaqiyatsiz: Sabablari va Yechimlar
Ko'proq kechiktirmasdan, asosiy muhokamamizga o'tamiz. Ya'ni, bu xatoning mumkin bo'lgan sabablari nima bo'lishi mumkin va ularni qanday hal qilish mumkin.
1-sabab: Hech narsadan nusxa ko'chirmasdan PasteSpecial usuliga kirish
Bu eng ko'p. xato ortidagi umumiy sabab. Ya'ni, hech narsa nusxa ko'chirmasdan PasteSpecial usuliga kirishga harakat qilish.
Uni aniq tushunish uchun quyidagi VBA kodni tekshiring.
⧭ VBA kodi:
2608
Bu yerda biz VBA ning PasteSpecial usulidan foydalandik. har qanday narsani nusxalash. Shunday qilib, Excel uni ishga tushirganingizda ish vaqti xatosi 1004 ni ko'rsatadi.
⧭ Yechim:
Ushbu muammoni hal qilish uchun, avvalo, bir qator kataklardan nusxa koʻchirishingiz, soʻng PasteSpecial usuliga kirishingiz kerak.
6288
Ushbu kodni ishga tushirganingizda, bo'ladifaol ish varag'ining B3:B5 diapazonidagi formulalarni tanlangan diapazonga qo'ying.
Batafsil o'qing: Ish varaqlari sinfining maxsus Paste usuli muvaffaqiyatsiz tugadi (sabablari va yechimlari)
2-sabab: Imlo xatosi bilan PasteSpecial usuliga kirish
Bu yana bir keng tarqalgan sababdir. xato. Ya'ni, har qanday argumentda imlo xato(lari) bilan PasteSpecial usuliga kirish uchun.
Buni aniq qilish uchun quyidagi VBA kodiga qarang. Bu erda biz xlPasteAll argumentida imlo xatosiga yo'l qo'ydik.
⧭ VBA kodi:
8608
Ushbu kodni ishga tushirganingizda, siz ish vaqti xatosi 1004 ni olasiz.
⧭ Yechim:
Yechish oson. Ishonchim komilki, siz buni allaqachon taxmin qilgansiz. Faqat barcha argumentlarning imlosi toʻgʻri tuzilganligiga ishonch hosil qiling.
Va xato avtomatik ravishda yoʻqoladi.
Batafsil oʻqing: Qanday qilib qoʻyish kerak Excelda maxsus buyruq (5 mos usul)
Shunga o'xshash o'qishlar
- Excel VBA: diapazonni boshqa ish kitobiga nusxalash
- Qiymatlarni Excel VBA yordamida keyingi bo'sh qatorga nusxalash va joylashtirish (3 ta misol)
- VBA PasteSpecial-ni qo'llash va Excelda manba formatlashni saqlash
- Excelda bir nechta katakchalardagi bir xil qiymatni qanday nusxalash mumkin (4 usul)
- Mezmonlar asosida qatorlarni boshqa ishchi varaqga nusxalash uchun Excel VBA
3-sabab: Yangisini ochishNusxalashdan keyin nusxa ko'chirish/qo'yish rejimini bekor qiladigan ish kitobi
Bu xatoning yana bir muhim sababi. Ya'ni, joylashtirishdan oldin nusxa ko'chirish/joylashtirish rejimini bekor qiladigan biror narsa qilish.
Aniq tushunish uchun quyidagi kodga qarang.
⧭ VBA kodi:
8353
Bu yerda biz B3:B5 diapazonini Ishchi kitobi1 deb nomlangan ish kitobining Vaq1 dan nusxa oldik.
Keyin biz shu papkada Ishchi kitobi2 nomli yangi ish kitobini yaratdik va koʻchirilgan diapazonni Varaq1
Lekin biz kodni ishga tushirganimizda, u PasteSpecial Method of Range Class Failed Failed Xatoni ko'rsatadi, chunki biz yangi ish kitobini yaratganimizda, nusxa olish/joylashtirish rejimi bekor qilinadi.
⧭ Yechim:
Ushbu muammoni hal qilish uchun avval yozing Ish kitobi2 deb nomlangan yangi ish kitobini yaratish uchun kod satrlarini pastga tushiring.
Keyin Ishchi kitobi -ni faollashtirish uchun qatorlarni kiriting va undan kerakli diapazonni nusxalang.
Va nihoyat, Workbook2 -ni faollashtiring va u yerga nusxalangan diapazonni joylashtiring.
9960
Ushbu kodni ishga tushiring. U Ishchi daftar1 ning Shart1 dan B3:B5 diapazonidan nusxa oladi.
Va uni joylashtiring Ishchi kitobi2 deb nomlangan yangi yaratilgan ishchi kitobining Varaq1 ga.
⧭ Ehtiyot:
Shubhasiz, ishlayotganda Ish kitobi1 ni ochiq saqlashni unutmang.kod.
Batafsil o'qing: Makrolarsiz Excelda nusxa ko'chirish va joylashtirishni qanday o'chirish mumkin (2 ta mezon bilan)
4-sabab: Nusxalash/qo'yish rejimini bekor qiluvchi Application.CutCopyMode-ni False ga aylantirish
Nihoyat, xatolik yuzaga kelishining yana bir sababi bo'lishi mumkin. Biz PasteSpecial usuliga kirishdan oldin xatolik tufayli Application.CutCopyMode -ni o'chirib qo'yishimiz mumkin.
Bu juda keng tarqalgan amaliyot bo'lmasa-da, ba'zida biz buni kerak bo'lganda qilamiz. uzun qatorlar bilan ishlang.
Uni aniq tushunish uchun quyidagi kodga qarang. Bu yerda biz B3:B5 diapazonidan nusxa oldik, lekin joylashtirishdan oldin CutCopyMode ni bekor qildik.
⧭ VBA kodi:
8053
Kodni ishga tushirganingizda, u PasteSpecial Method of Range Class Failed Failed xatosini ko'rsatadi.
⧭ Yechim:
O'ylaymanki, hozir hammangiz yechimni taxmin qildingiz. Bu aslida juda oddiy. CutCopy rejimini o'chiradigan koddan chiziqni olib tashlang.
Shunday qilib, to'g'ri VBA kodi quyidagicha bo'ladi:
2016
U B3:B5 diapazonidan nusxa oladi va hech qanday muammosiz D3:D5 ustiga qo'yadi.
Batafsil o'qing: VBA Excel-da qiymatlar va formatlarni nusxalash uchun maxsus joylashtirish (9 ta misol)
Eslash kerak bo'lgan narsalar
Bu yerda men faqat VBA da PasteSpecial usuli bilan ishlashda duch kelishi mumkin boʻlgan muammolarni koʻrsatdim. PasteSpecial usulini batafsil bilmoqchi bo'lsangiz, ushbu havolaga tashrif buyuring.
Xulosa
Xulosa qilib aytganda, bular Kodingizda ish vaqti xatosi 1004: PasteSpecial Method od Range Class Failed ga olib kelishi mumkin bo'lgan sabablar. Umid qilamanki, siz barcha fikrlarni aniq tushundingiz va ular kelajakda sizga ko'p yordam beradi. Boshqa sabablarni bilasizmi? Va sizda biron bir muammo bormi? Bemalol bizdan so'rang. Yana postlar va yangilanishlar uchun ExcelWIKI saytimizga tashrif buyurishni unutmang.