Excel VBA में "! =" के बराबर क्या है?


95

समस्या यह है कि !=एक्सेल vba में एक फ़ंक्शन के रूप में काम नहीं करता है।

मैं उपयोग करने में सक्षम होना चाहता हूं

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

1
क्या आपको यकीन है कि यह !=नहीं है <>?
dasblinkenlight

क्या पूछते हैं? !=Vba में काम क्यों नहीं करता है, या vba में असमानता ऑपरेटर क्या है?
जीसर्ज जूल

जवाबों:


154

क्योंकि VBA में असमानता ऑपरेटर है <>

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

ऑपरेटर !=का उपयोग C #, C ++ में किया जाता है।


28

VBA में, !=ऑपरेटर Notइस प्रकार है:

If Not strTest = "" Then ...

5
यह गलत है। Notतार्किक उलटा ऑपरेटर है, जो !सी-शैली भाषाओं में मेल खाता है ।
ज़ेव स्पिट्ज

7

सिर्फ एक नोट। यदि आप किसी स्ट्रिंग की तुलना ""अपने मामले में करना चाहते हैं , तो उपयोग करें

If LEN(str) > 0 Then

या अभी भी

If LEN(str) Then

बजाय।


6
मुझे पता है कि लोग VBA के लिए कुछ नए हैं, यह उत्तर अजीब लग सकता है, लेकिन यह, यह विश्वास है या नहीं, FAR के खिलाफ जाँच करने से अधिक कुशल है<> ""
LimaNightHawk

6
इस उत्तर को वापस करने के लिए मजेदार तथ्य: विज़ुअल बेसिक और पास्कल भाषाएं शुरुआत में अपनी लंबाई और उसके ठीक बाद की सामग्री के साथ तार को स्टोर करती हैं। दूसरी ओर, सी-आधारित और जावा भाषाएं, लंबाई को संग्रहीत नहीं करती हैं और स्ट्रिंग को समाप्त होने का संकेत देने के लिए '\ 0' (शून्य) टर्मिनेटर है। उसके कारण, VBA में लंबाई मिलना तेज़ है - यह सिर्फ मेमोरी से एक पूर्णांक पढ़ रहा है - और जावा में धीमा है - आपको स्ट्रिंग के माध्यम से पुनरावृति करने की आवश्यकता है।
पॉलो आवेलर

1
@LimaNightHawk कहीं अधिक कुशल? क्या आप कृपया उस पर विस्तार कर सकते हैं? मुझे लगता है कि अधिकांश आधुनिक कंपाइलर पैटर्न को पकड़ेंगे <> ""और उसी पी-कोड का उत्पादन करेंगे Len(str)
रोलैंड

@ रोलैंड को यह करना है कि VBA मेमोरी में स्ट्रिंग्स को कैसे स्टोर करता है। मैं आपको एक पूर्ण विवरण के लिए Google को बताऊंगा, लेकिन संक्षेप में, स्ट्रिंग को कैसे संग्रहीत किया जाता है इसका एक हिस्सा यह है कि पहले बाइट्स स्ट्रिंग की लंबाई संग्रहीत करते हैं, फिर निम्नलिखित बाइट्स पात्रों को संग्रहीत करते हैं [3][C][A][T]:। एक "खाली" स्ट्रिंग में [0]पहले बाइट्स के लिए एक है और Lenकोड को केवल इंगरर्स की जांच और तुलना करने की अनुमति देता है। इसके अतिरिक्त, जब आप ऐसा करते हैं तो = ""दूसरे ""को मेमोरी में पहले स्ट्रिंग के रूप में आवंटित किया जाता है, फिर आपके लक्ष्य स्ट्रिंग की तुलना में।
लीमनेथ हॉक

@ रोलैंड: यह एक आसान अनुकूलन होगा, लेकिन, जाहिर है, VBA संकलक ऐसा नहीं करता है। किसी ने परिणाम के साथ एक बेंचमार्क किया जो Len(str) > 0लगभग str <> ""10 मिलियन पुनरावृत्तियों के रूप में तेजी से होता है । उस ने कहा, हम यहां अति सूक्ष्म अनुकूलन के बारे में बात कर रहे हैं (10 मिलियन पुनरावृत्तियों के लिए 0.36 बनाम 0.72 सेकंड), इसलिए मैं निश्चित रूप से अधिक पठनीय के साथ रहूंगा str <> ""
Heinzi

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.