2015-12-17 12 views
9

मैं जांचना चाहता हूं कि चार अलग-अलग चर एक-दूसरे के बराबर हैं या नहीं। मैं निम्नलिखित बयान मिल गया है:यदि चार चर बराबर

If a = b = c = d then 

चर के सभी "2014/06/12" होते हैं, दुर्भाग्य से उत्कृष्टता 'if' बयान में प्रवेश नहीं करता। अब मुझे पता चला है कि अगर यह सही नहीं है तो यह लेख लिखने का एक तरीका हो सकता है। मैं निश्चित रूप से निम्नलिखित की तरह कुछ कर सकता हूं, लेकिन मुझे लगता है कि एक और तरीका होना चाहिए, है ना?

If a=b and b=c and c=d then 

उत्तर

2

आप एक सरणी में तुलना करने के लिए सभी चर डालने का प्रयास कर सकते हैं और फिर फ़ंक्शन का उपयोग कर सकते हैं। एक उदाहरण यहाँ:

Sub MyTest() 
Dim TestArr() As Variant 

a = "06-12-2014" 
b = "06-12-2014" 
c = "06-12-2014" 
d = "06-12-2014" 
TestArr = Array(a, b, c, d) 
If Equal_In_Array(TestArr) Then 
    MsgBox ("All are Equal") 
Else 
    MsgBox ("Something isn't Equal") 
End If 
End Sub 

Public Function Equal_In_Array(mArr() As Variant) As Boolean 
Equal_In_Array = True 
For x = LBound(mArr) To UBound(mArr) 
    If mArr(x) <> mArr(LBound(mArr)) Then 
     Equal_In_Array = False 
     Exit For 
    End If 
Next x 
End Function 

संपादित: तुम भी उपयोग कर सकते हैं ParamArray सीधे मूल्यों पारित करने के लिए और एक नई सरणी घोषित करने से बचने के लिए:

Sub MyTest() 
a = "06-12-2014" 
b = "06-12-2014" 
c = "06-12-2014" 
d = "06-12-2014" 
If Are_Equal(a, b, c, d) Then 
    MsgBox ("All are Equal") 
Else 
    MsgBox ("Something isn't Equal") 
End If 
End Sub 

Public Function Are_Equal(ParamArray mArr() As Variant) As Boolean 
Equal_In_Array = True 
For x = LBound(mArr) To UBound(mArr) 
    If mArr(x) <> mArr(LBound(mArr)) Then 
     Equal_In_Array = False 
     Exit For 
    End If 
Next x 
End Function 
+1

@ ग्राफिट ने एक बेहतर समाधान – genespos

1

a के लिए सब कुछ की तुलना करें?

equal = areSame(a, b, c, d) 

Function areSame(match As String, ParamArray rest()) As Boolean 
    Dim i As Long 
    For i = 0 To UBound(rest) 
     If (match <> rest(i)) Then Exit Function 
    Next 
    areSame = True 
End Function 
8

आप इस तरह से मानकों के चर संख्या के साथ एक लचीला समारोह बना सकते हैं:

Function AllSame(ParamArray ar()) As Boolean 
    AllSame = True : If UBound(ar) < 1 Then Exit Function 
    For Each p In ar 
     If p <> ar(0) Then 
      AllSame = False : Exit Function 
     End If 
    Next 
End Function 

आप चर के किसी भी संख्या के साथ उपयोग कर सकते हैं

If AllSame(a, b, c, d, e, f) Then .... 
+1

का उपयोग किया, मैंने आपके उत्तर को आपके विचार से बेहतर किया: +1;) – genespos

0

मैं जानता हूँ कि यह किया गया है उत्तर दिया, लेकिन मैं एक अलग समाधान प्रदान करना चाहता था जिसके लिए लूप की आवश्यकता नहीं होती है।

a = "06-12-2014" 
b = "06-12-2014" 
c = "06-12-2014" 
d = "06-12-2014" 
TestArr = Array(a, b, c, d) 
If UBound(Filter(TestArr, a)) = 3 Then 
    MsgBox "All match" 
Else 
    MsgBox "Doesnt match" 
End If 
संबंधित मुद्दे