ਐਕਸਲ UDF ਕੰਮ ਨਹੀਂ ਕਰ ਰਿਹਾ: ਸਮੱਸਿਆਵਾਂ ਅਤੇ ਹੱਲ

  • ਇਸ ਨੂੰ ਸਾਂਝਾ ਕਰੋ
Michael Brown

ਇਸ ਲੇਖ ਵਿੱਚ, ਅਸੀਂ ਉਹਨਾਂ ਮੁੱਦਿਆਂ 'ਤੇ ਇੱਕ ਨਜ਼ਰ ਮਾਰਾਂਗੇ ਜੋ ਤੁਹਾਡੀਆਂ ਵਰਕਬੁੱਕਾਂ ਵਿੱਚ ਕਸਟਮ ਫੰਕਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਤੁਹਾਨੂੰ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈ ਸਕਦਾ ਹੈ। ਮੈਂ ਤੁਹਾਨੂੰ ਇਹ ਦਿਖਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਾਂਗਾ ਕਿ ਉਹਨਾਂ ਦਾ ਕੀ ਕਾਰਨ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਕਿੰਨੀ ਆਸਾਨੀ ਨਾਲ ਹੱਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਇੱਥੇ ਅਸੀਂ ਇਸ ਬਾਰੇ ਗੱਲ ਕਰਾਂਗੇ:

    ਪਹਿਲਾਂ ਅਸੀਂ ਇਸ ਬਾਰੇ ਗੱਲ ਕੀਤੀ ਸੀ ਕਿ ਕਸਟਮ ਫੰਕਸ਼ਨ ਹੈ, ਇਸਨੂੰ ਕਿਵੇਂ ਬਣਾਉਣਾ ਅਤੇ ਵਰਤਣਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਮਹਿਸੂਸ ਕਰਦੇ ਹੋ ਕਿ ਤੁਹਾਨੂੰ UDF ਦੇ ਮੁੱਢਲੇ ਗਿਆਨ ਨੂੰ ਪਹਿਲਾਂ ਤੋਂ ਤਾਜ਼ਾ ਕਰਨ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਇੱਕ ਵਿਰਾਮ ਲਓ ਅਤੇ ਮੇਰੇ ਪਿਛਲੇ ਲੇਖ ਨੂੰ ਦੇਖੋ।

    Excel UDF ਮੁੜ ਗਣਨਾ ਕਿਉਂ ਨਹੀਂ ਕਰ ਰਿਹਾ ਹੈ?

    ਜਦੋਂ ਤੁਸੀਂ ਇਸ ਵਿੱਚ ਕੋਈ ਬਦਲਾਅ ਕਰਦੇ ਹੋ ਤੁਹਾਡੀ ਵਰਕਬੁੱਕ, ਐਕਸਲ ਤੁਹਾਡੇ ਕੋਲ ਮੌਜੂਦ ਹਰੇਕ ਫਾਰਮੂਲੇ ਦੀ ਮੁੜ ਗਣਨਾ ਨਹੀਂ ਕਰੇਗਾ। ਇਹ ਉਹਨਾਂ ਫਾਰਮੂਲਿਆਂ ਦੇ ਨਤੀਜਿਆਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰੇਗਾ ਜੋ ਸਿਰਫ਼ ਬਦਲੇ ਹੋਏ ਸੈੱਲਾਂ ਨਾਲ ਜੁੜੇ ਹੋਏ ਹਨ।

    ਪਰ ਇਹ ਮਿਆਰੀ ਐਕਸਲ ਫੰਕਸ਼ਨਾਂ ਨਾਲ ਸਬੰਧਤ ਹੈ। ਕਸਟਮ ਲੋਕਾਂ ਲਈ, ਐਕਸਲ VBA ਕੋਡ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਹੋਰ ਸੈੱਲਾਂ ਦੀ ਪਛਾਣ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ ਜੋ ਕਸਟਮ ਫੰਕਸ਼ਨ ਦੇ ਨਤੀਜੇ ਨੂੰ ਵੀ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੇ ਹਨ। ਇਸ ਲਈ, ਜਦੋਂ ਤੁਸੀਂ ਵਰਕਬੁੱਕ ਵਿੱਚ ਬਦਲਾਅ ਕਰਦੇ ਹੋ ਤਾਂ ਤੁਹਾਡਾ ਕਸਟਮ ਫਾਰਮੂਲਾ ਨਹੀਂ ਬਦਲ ਸਕਦਾ ਹੈ।

    ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਸਿਰਫ਼ Application.Volatile ਸਟੇਟਮੈਂਟ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ। ਇਸਨੂੰ ਕਿਵੇਂ ਲਾਗੂ ਕਰਨਾ ਹੈ ਇਸ ਬਾਰੇ ਕਦਮ-ਦਰ-ਕਦਮ ਨਿਰਦੇਸ਼ਾਂ ਨੂੰ ਸਿੱਖਣ ਲਈ ਅਗਲਾ ਅਧਿਆਇ ਦੇਖੋ।

    ਅਸਥਿਰ ਬਨਾਮ ਗੈਰ-ਅਸਥਿਰ ਕਸਟਮ ਫੰਕਸ਼ਨ

    ਮੂਲ ਰੂਪ ਵਿੱਚ, ਐਕਸਲ ਵਿੱਚ ਕਸਟਮ ਫੰਕਸ਼ਨ ਅਸਥਿਰ ਨਹੀਂ ਹੁੰਦੇ ਹਨ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ UDF ਦੀ ਮੁੜ ਗਣਨਾ ਤਾਂ ਹੀ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜੇਕਰ ਕਿਸੇ ਵੀ ਸੈੱਲ ਦਾ ਮੁੱਲ ਬਦਲਦਾ ਹੈ। ਪਰ ਜੇ ਸੈੱਲਾਂ ਦਾ ਫਾਰਮੈਟ, ਦਾ ਨਾਮਵਰਕਸ਼ੀਟ, ਫਾਈਲ ਦਾ ਨਾਮ ਬਦਲਦਾ ਹੈ, ਫਿਰ UDF ਵਿੱਚ ਕੋਈ ਬਦਲਾਅ ਨਹੀਂ ਹੋਵੇਗਾ।

    ਆਓ ਸ਼ਬਦਾਂ ਤੋਂ ਉਦਾਹਰਣਾਂ ਵਿੱਚ ਬਦਲੀਏ। ਉਦਾਹਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਕ ਸੈੱਲ ਵਿੱਚ ਆਪਣੀ ਵਰਕਬੁੱਕ ਦਾ ਨਾਮ ਲਿਖਣ ਦੀ ਲੋੜ ਹੈ। ਅਜਿਹਾ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਇੱਕ ਕਸਟਮ ਫੰਕਸ਼ਨ ਬਣਾਉਂਦੇ ਹੋ:

    ਫੰਕਸ਼ਨ ਵਰਕਬੁੱਕ ਨਾਮ() ਸਟ੍ਰਿੰਗ ਵਰਕਬੁੱਕ ਨਾਮ = ThisWorkbook.Name ਐਂਡ ਫੰਕਸ਼ਨ

    ਹੁਣ ਹੇਠਾਂ ਦਿੱਤੇ ਕੇਸ ਦੀ ਕਲਪਨਾ ਕਰੋ। ਤੁਸੀਂ ਸੈੱਲ ਵਿੱਚ ਕਸਟਮ ਫਾਰਮੂਲਾ =WorkbookName() ਲਿਖਿਆ ਹੈ ਅਤੇ ਉੱਥੇ ਫਾਈਲ ਦਾ ਨਾਮ ਪ੍ਰਾਪਤ ਕੀਤਾ ਹੈ। ਕੁਝ ਸਮੇਂ ਵਿੱਚ, ਤੁਸੀਂ ਫਾਈਲ ਦਾ ਨਾਮ ਬਦਲਣ ਦਾ ਫੈਸਲਾ ਕੀਤਾ ਅਤੇ ਇਸਨੂੰ ਇੱਕ ਵੱਖਰੇ ਨਾਮ ਨਾਲ ਸੁਰੱਖਿਅਤ ਕੀਤਾ। ਪਰ ਤੁਸੀਂ ਸੈੱਲ ਵਿੱਚ ਮੁੱਲ ਨੂੰ ਦੇਖਦੇ ਹੋ ਅਤੇ ਦੇਖਦੇ ਹੋ ਕਿ ਇਹ ਬਦਲਿਆ ਨਹੀਂ ਹੈ। ਅਜੇ ਵੀ ਇੱਕ ਪੁਰਾਣਾ ਫਾਈਲ ਨਾਮ ਹੈ ਜੋ ਹੁਣ ਸਹੀ ਨਹੀਂ ਹੈ।

    ਕਿਉਂਕਿ ਇਸ ਫੰਕਸ਼ਨ ਵਿੱਚ ਕੋਈ ਆਰਗੂਮੈਂਟ ਨਹੀਂ ਹੈ, ਫੰਕਸ਼ਨ ਦੀ ਮੁੜ ਗਣਨਾ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ (ਭਾਵੇਂ ਤੁਸੀਂ ਵਰਕਬੁੱਕ ਦਾ ਨਾਮ ਬਦਲਦੇ ਹੋ, ਇਸਨੂੰ ਬੰਦ ਕਰੋ, ਅਤੇ ਫਿਰ ਦੁਬਾਰਾ ਖੋਲ੍ਹੋ ਇਹ)।

    ਨੋਟ। ਤੁਹਾਡੀ ਫਾਈਲ ਵਿੱਚ ਸਾਰੇ ਫੰਕਸ਼ਨਾਂ ਦੀ ਮੁੜ ਗਣਨਾ ਕਰਨ ਲਈ, ਤੁਸੀਂ Ctrl + Alt + F9 ਸ਼ਾਰਟਕੱਟ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।

    ਕੀ ਕੋਈ ਸੌਖਾ ਤਰੀਕਾ ਹੈ? ਜਦੋਂ ਵੀ ਵਰਕਸ਼ੀਟ ਬਦਲਦੀ ਹੈ ਤਾਂ ਫਾਰਮੂਲੇ ਦੀ ਮੁੜ ਗਣਨਾ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਕੋਡ ਦੀ ਇੱਕ ਵਾਧੂ ਲਾਈਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਆਪਣੇ ਫੰਕਸ਼ਨ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਕੋਡ ਦੇ ਹੇਠਾਂ ਦਿੱਤੇ ਟੁਕੜੇ ਨੂੰ ਚਿਪਕਾਓ:

    ਐਪਲੀਕੇਸ਼ਨ.ਵੋਲਾਟਾਈਲ

    ਇਸ ਲਈ, ਤੁਹਾਡਾ ਕੋਡ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦੇਵੇਗਾ:

    ਫੰਕਸ਼ਨ WorkbookName() As String Application.Volatile WorkbookName = ThisWorkbook.Name End ਫੰਕਸ਼ਨ

    ਹੁਣ ਤੁਹਾਡਾ UDF ਅਸਥਿਰ ਹੈ, ਇਸਲਈ ਇਹ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਮੁੜ ਗਣਨਾ ਕੀਤਾ ਜਾਵੇਗਾ ਜੇਕਰ ਵਰਕਸ਼ੀਟ ਵਿੱਚ ਕੋਈ ਸੈੱਲਦੀ ਮੁੜ ਗਣਨਾ ਕੀਤੀ ਗਈ ਹੈ ਜਾਂ ਵਰਕਬੁੱਕ ਵਿੱਚ ਕੋਈ ਤਬਦੀਲੀ ਆਈ ਹੈ। ਜਿਵੇਂ ਹੀ ਤੁਸੀਂ ਫਾਈਲ ਦਾ ਨਾਮ ਬਦਲਦੇ ਹੋ, ਤੁਹਾਨੂੰ ਉਹ ਅਪਡੇਟ ਤੁਰੰਤ ਦਿਖਾਈ ਦੇਵੇਗਾ।

    ਨੋਟ ਕਰੋ। ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਬਹੁਤ ਸਾਰੇ ਅਸਥਿਰ ਫੰਕਸ਼ਨ ਤੁਹਾਡੇ ਐਕਸਲ ਨੂੰ ਹੌਲੀ ਕਰ ਸਕਦੇ ਹਨ। ਆਖ਼ਰਕਾਰ, ਇੱਥੇ ਬਹੁਤ ਸਾਰੇ ਕਸਟਮ ਫੰਕਸ਼ਨ ਹਨ ਜੋ ਗੁੰਝਲਦਾਰ ਗਣਨਾ ਕਰਦੇ ਹਨ ਅਤੇ ਲਗਾਤਾਰ ਵੱਡੀਆਂ ਡਾਟਾ ਰੇਂਜਾਂ 'ਤੇ ਕੰਮ ਕਰਦੇ ਹਨ।

    ਇਸ ਲਈ, ਮੈਂ ਸਿਰਫ ਅਸਥਿਰਤਾ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦਾ ਹਾਂ ਜਿੱਥੇ ਇਸਦੀ ਅਸਲ ਵਿੱਚ ਲੋੜ ਹੋਵੇ।

    ਕਸਟਮ ਫੰਕਸ਼ਨ ਉਪਲਬਧ ਕਿਉਂ ਨਹੀਂ ਹਨ

    ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਕਸਟਮ ਫੰਕਸ਼ਨ ਦੇ ਨਾਮ ਦੇ ਪਹਿਲੇ ਅੱਖਰ ਦਾਖਲ ਕਰਦੇ ਹੋ, ਤਾਂ ਇਹ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ ਇੰਪੁੱਟ ਸੈੱਲ ਦੇ ਅੱਗੇ ਡ੍ਰੌਪ-ਡਾਉਨ ਸੂਚੀ ਵਿੱਚ, ਜਿਵੇਂ ਕਿ ਸਟੈਂਡਰਡ ਐਕਸਲ ਫੰਕਸ਼ਨਾਂ ਦੀ ਤਰ੍ਹਾਂ।

    ਹਾਲਾਂਕਿ, ਅਜਿਹਾ ਹਮੇਸ਼ਾ ਨਹੀਂ ਹੁੰਦਾ ਹੈ। ਕਿਹੜੀਆਂ ਗਲਤੀਆਂ ਇਸ ਸਥਿਤੀ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੀਆਂ ਹਨ?

    ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਐਕਸਲ 2003-2007 ਹੈ, ਤਾਂ UDF ਕਦੇ ਵੀ ਡਰਾਪਡਾਊਨ ਸੂਚੀ ਵਿੱਚ ਦਿਖਾਈ ਨਹੀਂ ਦਿੰਦਾ। ਉੱਥੇ ਤੁਸੀਂ ਸਿਰਫ਼ ਮਿਆਰੀ ਫੰਕਸ਼ਨ ਦੇਖ ਸਕਦੇ ਹੋ।

    ਪਰ ਭਾਵੇਂ ਤੁਸੀਂ ਐਕਸਲ ਦੇ ਨਵੇਂ ਸੰਸਕਰਣ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ, ਇੱਕ ਹੋਰ ਗਲਤੀ ਹੈ ਜੋ ਤੁਸੀਂ ਗਲਤੀ ਨਾਲ ਕਰ ਸਕਦੇ ਹੋ।

    ਤੁਸੀਂ ਦੇਖੋਗੇ, ਕਸਟਮ ਫੰਕਸ਼ਨ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇੱਕ ਮਿਆਰੀ VBA ਮੋਡੀਊਲ ਜਿਸਨੂੰ ਮੋਡੀਊਲ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਫੰਕਸ਼ਨ ਕੋਡ ਲਿਖਣ ਲਈ ਇੱਕ ਨਵਾਂ ਮੋਡੀਊਲ ਜੋੜਦੇ ਹੋ, ਤਾਂ ਇੱਕ ਮੋਡੀਊਲ ਫੋਲਡਰ ਆਪਣੇ ਆਪ ਬਣ ਜਾਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਸਾਰੇ ਮੋਡੀਊਲ ਲਿਖੇ ਹੁੰਦੇ ਹਨ।

    ਪਰ ਕਈ ਵਾਰ ਅਜਿਹਾ ਹੁੰਦਾ ਹੈ ਕਿ ਨਵਾਂ ਮੋਡੀਊਲ ਨਹੀਂ ਹੁੰਦਾ। ਬਣਾਇਆ ਜਾ ਰਿਹਾ ਹੈ. ਅਗਲੇ ਸਕਰੀਨਸ਼ਾਟ 'ਤੇ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਕਸਟਮ ਫੰਕਸ਼ਨ ਕੋਡ “Microsoft Excel Objects” ਮੋਡੀਊਲ ਵਿੱਚ ਹੈਇਹ ਵਰਕਬੁੱਕ।

    ਬਿੰਦੂ ਇਹ ਹੈ ਕਿ ਤੁਸੀਂ ਵਰਕਸ਼ੀਟ ਜਾਂ ਵਰਕਬੁੱਕ ਦੇ ਕੋਡ ਖੇਤਰ ਵਿੱਚ ਇੱਕ ਕਸਟਮ ਫੰਕਸ਼ਨ ਨਹੀਂ ਰੱਖ ਸਕਦੇ ਹੋ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਫੰਕਸ਼ਨ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਇਹ ਫੰਕਸ਼ਨਾਂ ਦੀ ਡ੍ਰੌਪਡਾਉਨ ਸੂਚੀ ਵਿੱਚ ਦਿਖਾਈ ਨਹੀਂ ਦੇਵੇਗਾ। ਇਸਲਈ, ਕੋਡ ਹਮੇਸ਼ਾ ਮੋਡਿਊਲ ਫੋਲਡਰ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।

    ਐਕਸਲ ਕਸਟਮ ਫੰਕਸ਼ਨ ਹੈਲਪ ਟੈਕਸਟ ਡਿਸਪਲੇ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ

    ਇੱਕ ਹੋਰ ਸਮੱਸਿਆ ਹੋ ਸਕਦੀ ਹੈ ਉਹ ਸੰਕੇਤ ਜੋ ਤੁਸੀਂ ਪੇਸਟ ਕਰਦੇ ਸਮੇਂ ਦੇਖਦੇ ਹੋ। ਇੱਕ ਕਸਟਮ ਫੰਕਸ਼ਨ. ਜੇਕਰ ਤੁਸੀਂ ਇੱਕ ਸਟੈਂਡਰਡ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਹਮੇਸ਼ਾ ਫੰਕਸ਼ਨ ਅਤੇ ਇਸਦੇ ਆਰਗੂਮੈਂਟਾਂ ਲਈ ਇੱਕ ਟੂਲਟਿਪ ਵੇਖੋਗੇ। ਪਰ UDFs ਬਾਰੇ ਕੀ?

    ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਬਹੁਤ ਸਾਰੇ ਕਸਟਮ ਫੰਕਸ਼ਨ ਹਨ, ਤਾਂ ਤੁਹਾਡੇ ਲਈ ਇਹ ਯਾਦ ਰੱਖਣਾ ਬਹੁਤ ਮੁਸ਼ਕਲ ਹੋਵੇਗਾ ਕਿ ਉਹਨਾਂ ਵਿੱਚੋਂ ਹਰੇਕ ਕੀ ਗਣਨਾ ਕਰਦਾ ਹੈ। ਇਹ ਯਾਦ ਰੱਖਣਾ ਹੋਰ ਵੀ ਮੁਸ਼ਕਲ ਹੋਵੇਗਾ ਕਿ ਕਿਹੜੀਆਂ ਦਲੀਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਹੈ। ਮੈਨੂੰ ਲੱਗਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਕਸਟਮ ਫੰਕਸ਼ਨਾਂ ਦਾ ਇੱਕ ਰੀਮਾਈਂਡਰ ਦੇ ਰੂਪ ਵਿੱਚ ਵਰਣਨ ਕਰਨਾ ਇੱਕ ਚੰਗਾ ਵਿਚਾਰ ਹੋਵੇਗਾ।

    ਇਸਦੇ ਲਈ, ਮੈਂ Application.MacroOptions ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਸੁਝਾਅ ਦੇਵਾਂਗਾ। ਇਹ ਤੁਹਾਨੂੰ ਫੰਕਸ਼ਨ ਵਿਜ਼ਾਰਡ ਵਿੰਡੋ ਵਿੱਚ ਨਾ ਸਿਰਫ ਫੰਕਸ਼ਨ, ਬਲਕਿ ਇਸਦੇ ਹਰੇਕ ਆਰਗੂਮੈਂਟ ਦਾ ਵੇਰਵਾ ਦਿਖਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰੇਗਾ। ਜਦੋਂ ਤੁਸੀਂ ਫਾਰਮੂਲਾ ਬਾਰ ਵਿੱਚ Fx ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰਦੇ ਹੋ ਤਾਂ ਤੁਹਾਨੂੰ ਇਹ ਵਿੰਡੋ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ।

    ਆਓ ਦੇਖੀਏ ਕਿ ਤੁਹਾਡੇ UDF ਵਿੱਚ ਅਜਿਹਾ ਸੰਕੇਤ ਕਿਵੇਂ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ। ਪਿਛਲੇ ਲੇਖ ਵਿੱਚ ਅਸੀਂ GetMaxBetween ਕਸਟਮ ਫੰਕਸ਼ਨ ਨੂੰ ਦੇਖਿਆ ਸੀ। ਇਹ ਨਿਰਧਾਰਤ ਰੇਂਜ ਵਿੱਚ ਅਧਿਕਤਮ ਸੰਖਿਆ ਲੱਭਦਾ ਹੈ ਅਤੇ ਤਿੰਨ ਆਰਗੂਮੈਂਟਾਂ ਲੈਂਦਾ ਹੈ: ਸੰਖਿਆਤਮਕ ਮੁੱਲਾਂ ਦੀ ਇੱਕ ਰੇਂਜ, ਅਤੇ ਇੱਕ ਅਧਿਕਤਮ ਅਤੇ ਨਿਊਨਤਮ ਮੁੱਲਲਈ ਖੋਜ ਕਰੋ।

    ਹੁਣ ਅਸੀਂ ਇਸ ਕਸਟਮ ਫੰਕਸ਼ਨ ਲਈ ਵੇਰਵਾ ਜੋੜਾਂਗੇ। ਅਜਿਹਾ ਕਰਨ ਲਈ, Application.MacroOptions ਕਮਾਂਡ ਬਣਾਓ ਅਤੇ ਚਲਾਓ। GetMaxBetween ਫੰਕਸ਼ਨ ਲਈ, ਤੁਸੀਂ ਹੇਠ ਲਿਖੀ ਕਮਾਂਡ ਚਲਾ ਸਕਦੇ ਹੋ:

    Sub RegisterUDF () Dim strFuncName As String 'ਫੰਕਸ਼ਨ ਦਾ ਨਾਮ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਡਿਮ strDescr ਨੂੰ ਸਟ੍ਰਿੰਗ ਵਜੋਂ ਰਜਿਸਟਰ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ' ਫੰਕਸ਼ਨ ਦਾ ਵੇਰਵਾ ਖੁਦ ਡਿਮ strArgs () As String 'description of function arguments' ਰਜਿਸਟਰ GetMaxBetween ਫੰਕਸ਼ਨ ReDim strArgs (1 ਤੋਂ 3) 'ਤੁਹਾਡੇ ਫੰਕਸ਼ਨ ਵਿੱਚ ਆਰਗੂਮੈਂਟਾਂ ਦੀ ਸੰਖਿਆ strFuncName = "GetMaxBetween" strDescr = "ਨਿਸ਼ਚਿਤ ਰੇਂਜ ਵਿੱਚ ਅਧਿਕਤਮ ਸੰਖਿਆ = strArgs" (1) "ਸੰਖਿਆਤਮਕ ਮੁੱਲਾਂ ਦੀ ਰੇਂਜ" strArgs (2) = "ਲੋਅਰ ਇੰਟਰਵਲ ਬਾਰਡਰ" strArgs (3) = "ਅੱਪਰ ਇੰਟਰਵਲ ਬਾਰਡਰ" ਐਪਲੀਕੇਸ਼ਨ।MacroOptions ਮੈਕਰੋ: = strFuncName, _ ਵਰਣਨ: = strDescr, _ ArgumentDescriptions: = strArgs, = _ Ca "ਮੇਰੇ ਕਸਟਮ ਫੰਕਸ਼ਨ" ਅੰਤ ਸਬ

    ਜਾਂ

    ਸਬ ਰਜਿਸਟਰ ਯੂਡੀਐਫ () ਐਪਲੀਕੇਸ਼ਨ।MacroOptions ਮੈਕਰੋ: = "GetMaxBetween" , _ ਵਰਣਨ: = "ਨਿਰਧਾਰਤ ਰੇਂਜ ਵਿੱਚ ਅਧਿਕਤਮ ਸੰਖਿਆ" , _ ਸ਼੍ਰੇਣੀ: = "ਮੇਰੀ ਕਸਟਮ ਫੰਕਸ਼ਨ" , _ ਆਰਗੂਮੈਂਟ ਵਰਣਨ: = ਐਰੇ (_ "ਸੰਖਿਆਤਮਕ ਮੁੱਲਾਂ ਦੀ ਰੇਂਜ" , _ "ਲੋਅਰ ਇੰਟਰਵਲ ਬੋਰ der" , _ "ਅੱਪਰ ਇੰਟਰਵਲ ਬਾਰਡਰ" ) ਐਂਡ ਸਬ

    ਵੇਰੀਏਬਲ str FuncName ਫੰਕਸ਼ਨ ਦਾ ਨਾਮ ਹੈ। strDescr - ਫੰਕਸ਼ਨ ਵੇਰਵਾ। strArgs ਵੇਰੀਏਬਲ ਵਿੱਚ ਹਰੇਕ ਆਰਗੂਮੈਂਟ ਲਈ ਸੰਕੇਤ ਹੁੰਦੇ ਹਨ।

    ਤੁਸੀਂ ਹੈਰਾਨ ਹੋ ਸਕਦੇ ਹੋ ਕਿ ਚੌਥੀ ਆਰਗੂਮੈਂਟ ਕੀ ਹੈਐਪਲੀਕੇਸ਼ਨ।MacroOptions। ਇਸ ਵਿਕਲਪਿਕ ਆਰਗੂਮੈਂਟ ਨੂੰ ਸ਼੍ਰੇਣੀ ਨਾਮ ਦਿੱਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਹ ਐਕਸਲ ਫੰਕਸ਼ਨਾਂ ਦੀ ਸ਼੍ਰੇਣੀ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਸਾਡਾ ਕਸਟਮ GetMaxBetween () ਫੰਕਸ਼ਨ ਰੱਖਿਆ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਇਸਨੂੰ ਮੌਜੂਦਾ ਸ਼੍ਰੇਣੀਆਂ ਵਿੱਚੋਂ ਕਿਸੇ ਦੇ ਬਾਅਦ ਨਾਮ ਦੇ ਸਕਦੇ ਹੋ: Math & ; ਟ੍ਰਿਗ, ਸਟੈਟਿਸਟੀਕਲ, ਲਾਜ਼ੀਕਲ, ਆਦਿ। ਤੁਸੀਂ ਨਵੀਂ ਸ਼੍ਰੇਣੀ ਲਈ ਇੱਕ ਨਾਮ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹੋ ਜਿਸ ਵਿੱਚ ਤੁਸੀਂ ਆਪਣੇ ਬਣਾਏ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਰੱਖੋਗੇ। ਜੇਕਰ ਤੁਸੀਂ ਸ਼੍ਰੇਣੀ ਆਰਗੂਮੈਂਟ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਕਸਟਮ ਫੰਕਸ਼ਨ ਆਪਣੇ ਆਪ "ਯੂਜ਼ਰ ਡਿਫਾਈਨਡ" ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਰੱਖਿਆ ਜਾਵੇਗਾ।

    ਫੰਕਸ਼ਨ ਕੋਡ ਨੂੰ ਮੋਡੀਊਲ ਵਿੰਡੋ ਵਿੱਚ ਪੇਸਟ ਕਰੋ:

    ਫਿਰ "ਚਲਾਓ" ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰੋ। ਕਮਾਂਡ ਤੁਹਾਡੇ GetMaxBetween() ਫੰਕਸ਼ਨ ਨਾਲ Fx ਬਟਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਸਾਰੀਆਂ ਸੈਟਿੰਗਾਂ ਕਰੇਗੀ।

    ਜੇਕਰ ਤੁਸੀਂ Insert Function ਟੂਲ, ਤੁਸੀਂ ਦੇਖੋਗੇ ਕਿ ਤੁਹਾਡਾ GetMaxBetween ਫੰਕਸ਼ਨ "My Custom Functions" ਸ਼੍ਰੇਣੀ ਵਿੱਚ ਹੈ:

    ਤੁਸੀਂ ਸੈੱਲ ਵਿੱਚ ਫੰਕਸ਼ਨ ਦਾ ਨਾਮ ਟਾਈਪ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਤੁਸੀਂ ਫੰਕਸ਼ਨਾਂ ਦੀ ਡ੍ਰੌਪਡਾਉਨ ਸੂਚੀ ਵਿੱਚ ਆਪਣਾ ਕਸਟਮ ਫੰਕਸ਼ਨ ਦੇਖੋਗੇ ਜਿਸ ਵਿੱਚੋਂ ਚੁਣਨਾ ਹੈ।

    ਫਿਰ ਫੰਕਸ਼ਨ ਵਿਜ਼ਾਰਡ ਨੂੰ ਕਾਲ ਕਰੋ Fx ਬਟਨ ਨਾਲ।

    ਟਿਪ। ਤੁਸੀਂ ਫੰਕਸ਼ਨ ਵਿਜ਼ਾਰਡ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਮੁੱਖ ਸੁਮੇਲ CRTL + A ਦੀ ਵਰਤੋਂ ਵੀ ਕਰ ਸਕਦੇ ਹੋ।

    ਫੰਕਸ਼ਨ ਵਿਜ਼ਾਰਡ ਵਿੰਡੋ ਵਿੱਚ ਤੁਸੀਂ ਆਪਣੇ ਫੰਕਸ਼ਨ ਦਾ ਵੇਰਵਾ ਵੇਖੋਗੇ, ਨਾਲ ਹੀ ਪਹਿਲੀ ਆਰਗੂਮੈਂਟ ਲਈ ਇੱਕ ਸੰਕੇਤ। ਜੇਕਰ ਤੁਸੀਂ ਆਪਣੇ ਕਰਸਰ ਨੂੰ ਉੱਪਰ ਰੱਖਦੇ ਹੋਦੂਜੀ ਜਾਂ ਤੀਜੀ ਦਲੀਲ, ਤੁਸੀਂ ਉਹਨਾਂ ਲਈ ਸੰਕੇਤ ਵੀ ਦੇਖੋਗੇ।

    ਜੇਕਰ ਤੁਸੀਂ ਇਹਨਾਂ ਸੰਕੇਤਾਂ ਦੇ ਟੈਕਸਟ ਨੂੰ ਬਦਲਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ strDescr ਅਤੇ strArgs<ਦੇ ਮੁੱਲ ਬਦਲੋ। 7> ਰਜਿਸਟਰਯੂਡੀਐਫ () ਕੋਡ ਵਿੱਚ ਵੇਰੀਏਬਲ। ਫਿਰ RegisterUDF () ਕਮਾਂਡ ਨੂੰ ਦੁਬਾਰਾ ਚਲਾਓ।

    ਜੇਕਰ ਤੁਸੀਂ ਸਾਰੀਆਂ ਸੈਟਿੰਗਾਂ ਨੂੰ ਅਨਡੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਅਤੇ ਫੰਕਸ਼ਨ ਵਰਣਨ ਨੂੰ ਸਾਫ਼ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਇਹ ਕੋਡ ਚਲਾਓ:

    ਸਬ ਅਨਰਜਿਸਟਰ ਯੂਡੀਐਫ () Application.MacroOptions ਮੈਕਰੋ: = "GetMaxBetween" , _ ਵਰਣਨ: = ਖਾਲੀ , ਆਰਗੂਮੈਂਟ ਵਰਣਨ: = ਖਾਲੀ , ਸ਼੍ਰੇਣੀ: = ਖਾਲੀ ਅੰਤ ਸਬ

    ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਕਸਟਮ ਫੰਕਸ਼ਨ ਦਾਖਲ ਕਰਦੇ ਹੋ ਤਾਂ ਇੱਕ ਸੰਕੇਤ ਪ੍ਰਾਪਤ ਕਰਨ ਦਾ ਇੱਕ ਹੋਰ ਤਰੀਕਾ ਹੈ। ਫੰਕਸ਼ਨ ਦਾ ਨਾਮ ਦਰਜ ਕਰੋ ਅਤੇ ਫਿਰ ਦਬਾਓ Ctrl + Shift + A :

    =GetMaxBetween( + Ctrl + Shift + A

    ਤੁਸੀਂ ਸਾਰੇ ਫੰਕਸ਼ਨ ਦੇ ਆਰਗੂਮੈਂਟਾਂ ਦੀ ਸੂਚੀ ਦੇਖੋਗੇ:

    ਬਦਕਿਸਮਤੀ ਨਾਲ, ਇੱਥੇ ਤੁਸੀਂ ਫੰਕਸ਼ਨ ਅਤੇ ਇਸਦੇ ਆਰਗੂਮੈਂਟਾਂ ਦਾ ਵੇਰਵਾ ਨਹੀਂ ਦੇਖ ਸਕੋਗੇ। ਪਰ ਜੇ ਦਲੀਲਾਂ ਦੇ ਨਾਮ ਕਾਫ਼ੀ ਜਾਣਕਾਰੀ ਭਰਪੂਰ ਹਨ, ਤਾਂ ਉਹ ਵੀ ਮਦਦਗਾਰ ਹੋ ਸਕਦੇ ਹਨ। ਫਿਰ ਵੀ, ਇਹ ਕੁਝ ਵੀ ਨਾ ਕਰਨ ਨਾਲੋਂ ਬਿਹਤਰ ਹੈ :)

    ਇਹ UDF ਲਈ ਇੰਟਲੀਸੈਂਸ ਬਣਾਉਣ ਲਈ ਥੋੜਾ ਹੋਰ ਕੰਮ ਲਵੇਗਾ ਜੋ ਸਟੈਂਡਰਡ ਐਕਸਲ ਫੰਕਸ਼ਨਾਂ ਵਾਂਗ ਕੰਮ ਕਰਦੇ ਹਨ। ਬਦਕਿਸਮਤੀ ਨਾਲ, ਮਾਈਕ੍ਰੋਸਾਫਟ ਕੋਈ ਵਿਕਲਪ ਪ੍ਰਦਾਨ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਵਰਤਮਾਨ ਵਿੱਚ ਉਪਲਬਧ ਇੱਕੋ ਇੱਕ ਹੱਲ ਇੱਕ ਐਕਸਲ-ਡੀਐਨਏ ਇੰਟੈਲੀਸੈਂਸ ਐਕਸਟੈਂਸ਼ਨ ਹੈ। ਤੁਸੀਂ ਡਿਵੈਲਪਰ ਦੀ ਵੈੱਬਸਾਈਟ 'ਤੇ ਹੋਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ।

    ਉਮੀਦ ਹੈ, ਇਹ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ ਤੁਹਾਡੀਆਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਨਗੇ ਜਦੋਂ ਤੁਹਾਡਾ ਕਸਟਮ ਫੰਕਸ਼ਨ ਕੰਮ ਨਹੀਂ ਕਰਦਾ ਜਾਂ ਨਹੀਂ ਕਰਦਾ।ਜਿਵੇਂ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕੰਮ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ, ਤੁਹਾਡਾ UDF ਅਜੇ ਵੀ ਕੰਮ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਹਿੰਦਾ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਟਿੱਪਣੀ ਭਾਗ ਵਿੱਚ ਆਪਣੀ ਸਮੱਸਿਆ ਦਾ ਸਹੀ ਵਰਣਨ ਕਰੋ। ਅਸੀਂ ਇਸਦਾ ਪਤਾ ਲਗਾਉਣ ਅਤੇ ਤੁਹਾਡੇ ਲਈ ਹੱਲ ਲੱਭਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਾਂਗੇ ;)

    ਮਾਈਕਲ ਬ੍ਰਾਊਨ ਸੌਫਟਵੇਅਰ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਗੁੰਝਲਦਾਰ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਸਰਲ ਬਣਾਉਣ ਦੇ ਜਨੂੰਨ ਨਾਲ ਇੱਕ ਸਮਰਪਿਤ ਤਕਨਾਲੋਜੀ ਉਤਸ਼ਾਹੀ ਹੈ। ਤਕਨੀਕੀ ਉਦਯੋਗ ਵਿੱਚ ਇੱਕ ਦਹਾਕੇ ਤੋਂ ਵੱਧ ਤਜ਼ਰਬੇ ਦੇ ਨਾਲ, ਉਸਨੇ ਮਾਈਕ੍ਰੋਸਾਫਟ ਐਕਸਲ ਅਤੇ ਆਉਟਲੁੱਕ ਦੇ ਨਾਲ-ਨਾਲ ਗੂਗਲ ਸ਼ੀਟਸ ਅਤੇ ਡੌਕਸ ਵਿੱਚ ਆਪਣੇ ਹੁਨਰ ਨੂੰ ਨਿਖਾਰਿਆ ਹੈ। ਮਾਈਕਲ ਦਾ ਬਲੌਗ ਆਪਣੇ ਗਿਆਨ ਅਤੇ ਮੁਹਾਰਤ ਨੂੰ ਦੂਜਿਆਂ ਨਾਲ ਸਾਂਝਾ ਕਰਨ ਲਈ ਸਮਰਪਿਤ ਹੈ, ਉਤਪਾਦਕਤਾ ਅਤੇ ਕੁਸ਼ਲਤਾ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਆਸਾਨ-ਅਧਾਰਿਤ ਸੁਝਾਅ ਅਤੇ ਟਿਊਟੋਰਿਅਲ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਭਾਵੇਂ ਤੁਸੀਂ ਇੱਕ ਤਜਰਬੇਕਾਰ ਪੇਸ਼ੇਵਰ ਹੋ ਜਾਂ ਇੱਕ ਸ਼ੁਰੂਆਤੀ ਹੋ, ਮਾਈਕਲ ਦਾ ਬਲੌਗ ਇਹਨਾਂ ਜ਼ਰੂਰੀ ਸੌਫਟਵੇਅਰ ਟੂਲਾਂ ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਲਾਭ ਲੈਣ ਲਈ ਕੀਮਤੀ ਸੂਝ ਅਤੇ ਵਿਹਾਰਕ ਸਲਾਹ ਪੇਸ਼ ਕਰਦਾ ਹੈ।