ঘরে কোনও স্ট্রিং আউটপুট দেওয়ার সময় ত্রুটি


0

আমি একটি এক্সেল স্প্রেডশিটের অংশ স্বয়ংক্রিয় করতে একটি ভিবিএ ম্যাক্রো ব্যবহার করছি। নিম্নলিখিত লাইনটি আমাকে রানটাইম ত্রুটি 1004 # অ্যাপ্লিকেশন বা অবজেক্টের সংজ্ঞায়িত ত্রুটি দেয়

Sheets("Material").Last.Offset(0, 1).Value = "=SUMIF(MainTable[0],AG12,MainTable[Cost])"

ঘড়ি ব্যবহার করে আমি জানি যে সমীকরণের বাম দিকটি যথাযথ ঘরটি উল্লেখ করছে। আমি ধরে নিচ্ছি যে ত্রুটিটি ডানহাতে স্ট্রিংয়ের ভিতরেই লেখা হয়েছে যা সেলটিতে লেখা হচ্ছে - আমি আমার টেবিলের রেফারেন্সগুলি নিয়ে সম্ভবত ভাবছি? স্ট্রিং হিসাবে বাকী সমস্ত সূত্রগুলি সূক্ষ্মভাবে লিখিত হয় এবং এতে কোনও সারণী উল্লেখ নেই।


অন্য কোনও মান সেট করা কি ঠিক কাজ করে? Sheets("Material").Last.Offset(0, 1).Value = "A"উদাহরণ স্বরূপ. Lastফাংশন আমাকে সন্দেহজনক মনে হচ্ছে।
ন্যাটানকোড

শেষটি একটি ব্যাপ্তি পরিবর্তনশীল, এটি লুপ এবং অফসেটের সাহায্যে বর্ধিত হয়। আমি এটি লেখার সময় আমি এখনকার মতো অ্যারে বুঝতে পারি নি।
রিজিওট

আমি দেখতে পাচ্ছি, তাহলে আপনি কি সমস্যার সমাধান করেছেন?
ন্যাটানকোডস

হ্যাঁ আমি স্রেফ এটি বের করেছিলাম। আমি উত্তর পোস্ট করব - এটি একটি সাধারণ ভুল। আমি ওভারথিংকিং ছিল। কোডটি ঠিক আছে, স্ট্রিং সূত্রটি নিজেই ত্রুটিটি তৈরি করছিল (অ-অস্তিত্বশীল টেবিল কলামটি উল্লেখ করে)। এই প্রশ্নটি যদি সহায়ক হিসাবে বিবেচিত না হয়, তবে মুছে ফেলতে নির্দ্বিধায়।
রিজিওট

ঠিক আছে, আপনি এটি কাজ করে খুশি!
ন্যাটানকোডস

উত্তর:


0

আমি ধরে নিয়েছি ত্রুটিটি কোডের মধ্যে রয়েছে কারণ যখন আমি রানটাইম ত্রুটি পেয়েছি তখন প্রদত্ত কক্ষে কোনও আউটপুট ছিল না। সমস্যাটি আসলে ঘটে যদি কোনও ঘরে কোনও সূত্র লিখতে হয় এবং এটি সেই পপ আপ উইন্ডোটি তৈরি করে যা বলে যে "আমরা এই সূত্রটি নিয়ে একটি সমস্যা পেয়েছি ...." #Name ?, # VALUE এর মতো নয়! , # এন / এ টাইপ ত্রুটি। আমার ক্ষেত্রে, আমার কোডটি একটি টেবিলের মধ্যে একটি পরিসর সেট করেছে, যার নাম মেইন টেবিল এবং কলামের শিরোনামগুলির মধ্যে একটি কার্যকর মূল্য ছিল। কোডটি একটি স্ট্রিং রেফারেন্সিং মেইন টেবিল [ব্যয়] হিসাবে একটি সূত্র সেট করে, যা মেইনটেবল [কার্যকর ব্যয়] হওয়া উচিত।

ভিবিএ একটি রানটাইম ত্রুটি তৈরি করবে, সাবটি থামবে এবং সমস্যাটির স্ট্রিংটি কখনই কোষে আউটপুট হবে না। নিম্নলিখিত কোডটি একটি সাব থামবে। (অতিরিক্ত "(" পপআপ উইন্ডো সূত্র ত্রুটি দেবে))

Range("A1").Value = "=Sum((B2:B4)"

নিম্নলিখিত কোডটি নিরবচ্ছিন্নভাবে কাজ করে যদিও এটি একটি #NAME দেয়? কক্ষ এ 1 এ ত্রুটি।

Range("A1").Value = "=Sum(PotatoSalad)"

আমি স্ট্রিংগুলির একটি অ্যারে দিয়ে একটি দ্রুত পরীক্ষাও করেছি। একটি অ্যারের মধ্যে সূত্রগুলি স্ট্রিংগুলিতে সংরক্ষণ করা কোডের সমস্যাটিকে বাধাগ্রস্থ হওয়ার কারণ হিসাবে সূত্রগুলি রিফ্রেশ হওয়া পর্যন্ত মূল্যায়ন করবে না বলে মনে হচ্ছে। এই প্রশ্নটি কোষগুলিতে সূত্রগুলি ফেলে দেওয়ার জন্য কোনও অ্যারে ব্যবহার করার পরে কী ঘটে যায় সে সম্পর্কিত আরও বিশদে চলে যায় - এআর ভেরিয়েন্ট অ্যারে ব্যবহার করে লম্বা গল্পের সংক্ষিপ্তসারগুলি সূত্রকে মূল্যায়ন এবং বন্ধ করার কারণ ঘটায়। https://stackoverflow.com/questions/19238844/strange-behavior-when-assigning-a-vba-array-to-formulas-of-an-excel-range

নিম্নলিখিত কোডটি कक्ष A1 পুনরায় গণনা করতে বাধ্য না করা পর্যন্ত কাজ করবে।

Dim MyArray(0 to 0) as String MyArray(0) = "=Sum((B2:B4)" Range("A1").Value = MyArray()

বৈকল্পিক হিসাবে একই অ্যারে পাস করা একটি রানটাইম ত্রুটি তৈরি করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.