I've prepared a standard module, `MyPath`, which contains a few useful functions. In this case standard module is better for me than a class module.

Much more comfortable to write:

```vb
Dim ext As String
ext = MyPath.getFileExtension("test.docx")   ' returns "docx"

```

Instead of:

```vb
Dim Pth As MyPath
Set Pth = New MyPath

Dim ext As String
ext = Pth.getFileExtension("test.docx")

```

or something like

```vb
Dim ext As String
With New MyPath
    ext = .getFileExtension("test.docx")
End With

```

The only problem with my "pseudo-static-class" module is its scope (and IntelliSense use).

```vb
Dim ext As String
ext = getFileExtension("test.docx")   ' This works, but I don't want it to

```

What I would like to achieve is:

* If one doesn't specify `MyPath` when calling a function, IntelliSense does not suggest the methods from the module and they cannot be used.
* In order to use any methods from the `MyPath` module, one needs to type in `MyPath.`, and after the dot IntelliSense should suggest methods from the module.

I've tried some combinations with `Option Private Module`, `Private` functions, but no one works the way I described.  

I am preparing a lot of classes and similar modules and I would keep everything in order.

edit  

In short, I would like to force the compiler to throw an error if I don't specify the "parent" module for the function or sub. At the same time, if I type the name of my module I would be able to use IntelliSense (no solutions with run/call, just simply type module name, dot and select the member).

[![enter image description here](https://i.stack.imgur.com/kkM8c.png)](https://i.stack.imgur.com/kkM8c.png)