এক্সেল ভিবিএতে "! =" এর সমতুল্য কত?


95

সমস্যাটি হল !=এক্সেল ভিবিএতে ফাংশন হিসাবে কাজ করে না।

আমি ব্যবহার করতে সক্ষম হতে চাই

If strTest != "" Then পরিবর্তে If strTest = "" Then

এটি ছাড়াও কি অন্য পদ্ধতি রয়েছে !=?

আমার ফাংশন নকল করা !=হয়

Sub test()

Dim intTest As Integer
Dim strTest As String

intTest = 5

strTest = CStr(intTest) ' convert

Range("A" + strTest) = "5"



    For i = 1 To 10
        Cells(i, 1) = i

        If strTest = "" Then
            Cells(i, 1) = i
        End If

    Next i


End Sub

4
আপনি কি নিশ্চিত যে এটি !=এবং না <>?
সের্গেই কালিনিচেনকো

আপনার প্রশ্ন কি? কেন !=ভিবিএতে কাজ করে না, বা ভিবিএতে অসমতা অপারেটর কী?
জিসার্গ

উত্তর:


154

কারণ ভিবিএতে অসমতার অপারেটর is <>

If strTest <> "" Then
    .....

অপারেটরটি !=সি #, সি ++ এ ব্যবহৃত হয়।


28

ভিবিএতে !=অপারেটর হ'ল Notঅপারেটর:

If Not strTest = "" Then ...

5
এটি ভুল। Notলজিক্যাল ইনভার্সন অপারেটর, যা !সি-স্টাইলের ভাষাগুলির সাথে মিলে।
জেভ স্পিটজ

7

শুধু একটি নোট. আপনি যদি ""আপনার ক্ষেত্রে কোনও স্ট্রিংয়ের সাথে তুলনা করতে চান তবে ব্যবহার করুন

If LEN(str) > 0 Then

বা এমনকি ঠিক

If LEN(str) Then

পরিবর্তে.


6
আমি ভিবিএ-তে কিছুটা নতুন লোককে জানি, এই উত্তরটি অদ্ভুত বলে মনে হতে পারে, তবে এটি বিশ্বাস করুন বা না করুন, এটি বিরুদ্ধে পরীক্ষা করার চেয়ে অনেক বেশি দক্ষ<> ""
LimaNightHawk

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

4
@LimaNightHawk পর্যন্ত আরও দক্ষ? আপনি কি দয়া করে বিস্তারিত বলতে পারেন? আমি অনুমান করি যে বেশিরভাগ আধুনিক সংকলকরা প্যাটার্নটি ধরবে <> ""এবং একই পি-কোড তৈরি করবে Len(str)
রোল্যান্ড

@ রোল্যান্ড এর সাথে সম্পর্কিত হ'ল ভিবিএ কীভাবে মেমরিতে স্ট্রিং সঞ্চয় করে। আমি একটি পূর্ণাঙ্গ ব্যাখ্যা জন্য আপনাকে Google জানাবো কিন্তু সংক্ষেপে, কিভাবে স্ট্রিং সংরক্ষণ করা হয় অংশ যে প্রথম বাইট স্ট্রিং এর দৈর্ঘ্য সংরক্ষণ, তারপর নিম্নলিখিত বাইট অক্ষর সংরক্ষিত হয়: [3][C][A][T]। একটি "খালি" স্ট্রিংটিতে [0]প্রথম বাইটগুলির জন্য একটি রয়েছে Lenএবং কোডগুলি পরীক্ষা করে কোডটি কেবলমাত্র পূর্ণসংখ্যা পরীক্ষা করে তুলনা করতে পারে। অতিরিক্তভাবে, আপনি যখন কোনও = ""দ্বিতীয়টি ""করেন তার প্রথমে মেমরির নিজস্ব স্ট্রিং হিসাবে বরাদ্দ করতে হবে, তারপরে আপনার লক্ষ্যযুক্ত স্ট্রিংয়ের সাথে তুলনা করুন।
LimaNightHawk

@ রোল্যান্ড: এটি একটি সহজ অপ্টিমাইজেশন হতে পারে, তবে দৃশ্যত, ভিবিএ সংকলক এটি করে না। কেউ ফলাফলটি দিয়ে একটি বেঞ্চমার্ক করেছিলেন যা ১০ মিলিয়ন পুনরাবৃত্তির Len(str) > 0চেয়ে দ্বিগুণ দ্রুত str <> ""। তাই বলা হয়, আমরা বলছি চরম , মাইক্রো-অপ্টিমাইজেশান এখানে (10 মিলিয়ন পুনরাবৃত্তিও জন্য 0.36 বনাম 0.72 সেকেন্ড) তাই আমি স্পষ্টভাবে আরো পাঠযোগ্য দিয়ে বিদ্ধ করব str <> ""
হেইনজি

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