vb6代码下标越界,请大概指教这段代码错在哪里?

每次运行,即使在相同位置点击,又没有提示错误,但是点击另外位置又会出现错误,下标越界。

请各位大概指教错在哪里?因为我不明白。谢谢

以下是提示错误的代码,标黄错误提示下面这段RaiseEvent ColorClick(Colors(xPs, yPs), Button)

Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
   Dim xPs As Long
   Dim yPs As Long

   xPs = ((x + 1) \ 18) + 1
   yPs = ((y + 1) \ 18) + 1

   RaiseEvent ColorClick(Colors(xPs, yPs), Button)
End Sub

 

建议你首先确定x和y的范围,然后选择除数因子,18太小了,180或者1800合适些~

问题已解决,非常感谢@senolyusan 指点,让我知道怎么解决

下面贴出原因:

问题在于UserControl_MouseUp,当用户按住鼠标拖动生成的块,就会出错

你的Colors的定义是什么?这个提示就是指超出了Colors的下标范围。

以下就是关键的代码,麻烦@senolyusan 再指教一下

Public Event ColorClick(Color As OLE_COLOR, Button As Integer)

Private Colors(0 To 8, 0 To 6) As OLE_COLOR

Private Sub DrawPallete()
   Dim x, y As Integer

   For x = 1 To 8
      For y = 1 To 6
         Call DrawColor(Colors(x, y))
      Next y
   Next x

End Sub

Private Sub UserControl_Resize()
   Call Size(ScaleX((8 * 18), vbPixels, vbTwips), ScaleY((6 * 18), vbPixels, vbTwips))
End Sub