| 
    
     |  | ▼ichinose さん: >
 >あっ、そういうことですか?
 >
 >即興なので、イマイチ気に入らないのですが・・・。
 >'===========================================================
 >Sub main()
 >  Dim g0 As Long
 >  Dim stt As Long
 >  Dim rng As Range
 >  Set rng = Range("g20")
 >  stt = 1
 >  For g0 = 1 To 20
 >    rng.Value = g0
 >    Set rng = get_rng(rng, stt)
 >    Next
 >End Sub
 >'===========================================================
 >Function get_rng(ByVal rng, stt As Long) As Range
 >  Dim mx
 >  ReDim cnt(1 To 4) As Long
 >  ReDim chk(1 To 4) As Range
 >  ReDim locate(1 To 4) As Long
 >  Dim c As Long
 >  Dim g0 As Long
 >  Dim g1 As Long
 >  Dim g2 As Long
 >  For g0 = stt To (stt + 3)
 >  Select Case g0 Mod 4
 >      Case 1
 >       Set chk(c + 1) = rng.Offset(-1, 0)
 >       locate(c + 1) = 1
 >      Case 2
 >       Set chk(c + 1) = rng.Offset(0, 1)
 >       locate(c + 1) = 2
 >      Case 3
 >       Set chk(c + 1) = rng.Offset(1, 0)
 >       locate(c + 1) = 3
 >      Case 0
 >       Set chk(c + 1) = rng.Offset(0, -1)
 >       locate(c + 1) = 4
 >      End Select
 >    If chk(c + 1).Value = "" Then
 >      For g1 = -1 To 1
 >       For g2 = -1 To 1
 >         If g1 <> 0 Or g2 <> 0 Then
 >          If chk(c + 1).Offset(g1, g2).Value <> "" Then
 >            cnt(c + 1) = cnt(c + 1) + 1
 >            End If
 >          End If
 >         Next
 >       Next
 >      End If
 >    c = c + 1
 >    Next
 >  With Application
 >    g0 = .Match(.Max(cnt()), cnt(), 0)
 >    End With
 >  Set get_rng = chk(g0)
 >  stt = locate(g0)
 >End Function
 
 
 このプログラムの説明、解説をどなたか教えていただけないでしょうか?
 
 
 |  |