オブジェクト指向って
Range.Offset(1).value
みたいな事でしょうか?

自作関数って基本は引数渡して返り値貰ってみたいな手続きするだけの存在ですが、
それをオブジェクトを作る関数(Rangeオブジェクトみたいなものを生み出せる関数)にして、
その関数から出てきたオブジェクトは
メソッドA、メソッドBが使えて、プロパティA、プロパティBみたいな状態も持っている
みたいな考えの元に組んでいくとオブジェクト指向なプログラミングになるのでしょうか?

それはやはりそういう形式を取った方が、少ない脳みそでも複雑化に対応できるという事なのでしょうか?

同じ機能を持ったプログラミングを後から書き直す事があります。
勉強を進めた結果、「もしかしてこういうルールで書いた方がわかりやすいかも」みたいに思って書き直します。
うまく行くと複雑だと思っていたものがとてもチープで難易度の低いものに見えてきます。

オブジェクト指向はその極致みたいなものですか?