Rodolfo,
If the code you posted is followed somewhere by a READ EVENTS then the declaration of PUBLIC is NOT needed. Private variables are visible to the routine that creates them and all routines below that one in the calling stack, which is exactly what you want for a global variable (regardless as to whether that is a memvar or object reference).
The ONLY reason to declare a variable PUBLIC is to have it outlive the code that creates it, meaning that after the creating code is ended and returned from the var will continue to exist (which is a very bad design issue with serious potential side effects that will be very problematic to debug).