Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '248に一番近い60の倍数を算出します。newXは240になります。 Dim newX As Integer = RoundMultiple(248, 60) '85に一番近い40の倍数を算出します。newYは80になります。 Dim newY As Integer = RoundMultiple(85, 40) MsgBox(newX & "," & newY & " の位置にマウスカーソルを移動します。") End Sub ''' <summary> ''' value に一番近い factor の倍数を算出します。 ''' </summary> ''' <param name="value"></param> ''' <param name="factor"></param> ''' <returns></returns> Private Function RoundMultiple(value As Integer, factor As Integer) As Integer '例 248 ÷ 60 = 4.13… Dim rate As Double = value / factor '例 4.13 を切り捨てて 4 にして、factor(=60) の4倍を求めます。結果は 240 です。 Dim value以下で最も大きい倍数 As Integer = CInt(Math.Floor(rate) * factor) '例 4.13 を切り挙げて 5 にして、factor(=60) の5倍を求めます。結果は 300 です。 Dim value以上で最も小さい倍数 As Integer = CInt(Math.Ceiling(rate) * factor) '求める結果はこのどちらかのはずです。 'valueと近いほうがどちらから比べて、答えを出します。 Dim 差1 As Integer = value - value以下で最も大きい倍数 Dim 差2 As Integer = value以上で最も小さい倍数 - value If 差1 < 差2 Then Return value以下で最も大きい倍数 Else Return value以上で最も小さい倍数 End If End Function