arduino+vb6

Private Sub LEDOn(col As Long)
End Sub                        // this is theoretically correct, but makes no sense
Shape1.FillColor = col      //in this code the error appears   , because VB was told Sub LEDOn has ended already
End Sub

I added a comment as well.
Same for Sub LEDOff below.
This was the reason for RPCoyle's comment "too many End Subs... did this compile?".

  1. i can't understand the what does it means..

It's a feature of VB6 to allow lazy programming. Is

Dim Str as String

clearer to you?
the latter declares a variable and its type, RPCoyle's code implicitly declares it by filling data (An empty sring) in, just to determine its data type.

But besides that, you might benefit a lot by learning a bit VB6 usage ( Stepping through code, etc. )