28287


ワンボードマイコンでイルミネーションを点滅させるためのデータをExcelで作成し、動作をシミュレーションで確認しようとしていますが、ExcelVBAが途中でハングアップしてしまい、再起動すると正常に動くといったことが度々あります。  
原因が分かりませんでしょうか？

[![データ入力画面](https://i.stack.imgur.com/En5vo.png)](https://i.stack.imgur.com/En5vo.png)

tはインターバル、データの０は消灯、１で点灯としこのシートをtxt形式で保存したものがデータになる

[![シミュレーション画面](https://i.stack.imgur.com/HXM5L.png)](https://i.stack.imgur.com/HXM5L.png)

Startボタンを押すと、Sheet1の内容に従ってセルを黄色で塗りつぶして動作をシミュレーションする  
Sheet1のデータの場合、a1からa4がA1からD1と、b1からb4がA2からD2に対応し、１秒毎に横に移動し、折り返して３番目当たりでよくハングアップします

on clickのvbaは以下の通りです。

[code]

    Private Sub Start_Click()
    
    Dim maxrow As Integer
    Dim maxcol As Integer
    Dim i As Integer
    Dim j As Integer
    
    maxrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    maxcol = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
    
    For i = 1 To maxrow
        For j = 1 To (maxcol - 1) / 2
            If Sheet1.Cells(i + 1, j + 1) = 1 Then
                Sheet2.Cells(1, j).Interior.Color = RGB(255, 255, 0)
            Else
                Sheet2.Cells(1, j).Interior.ColorIndex = xlNone
            End If
        Next j
    
        For j = (maxcol - 1) / 2 + 1 To maxcol
            If Sheet1.Cells(i + 1, j + 1) = 1 Then
                Sheet2.Cells(2, j - (maxcol - 1) / 2).Interior.Color = RGB(255, 255, 0)
            Else
                Sheet2.Cells(2, j - (maxcol - 1) / 2).Interior.ColorIndex = xlNone
            End If
        Next j
    
        Sleep (Sheet1.Cells(i + 1, 1) * 1000)
    
    Next i
    
    End Sub
    
[/code]


CC BY-SA 3.0
2016-08-15T07:42:41.163
28279
2021-03-25T01:41:11.487
15090
question
excel vba
Excel VBAが度々ハングアップする


質問文の「ハングアップ」が「応答なし」を指しているのであれば、単に`Start_Click`の実行時間が長すぎるのが原因です。この場合`Sleep`付近に`DoEvents`を追加すれば一応動きますが、他イベントの処理も開始されるため、例えばボタンを複数回連打できるようになるなどの弊害があります。


CC BY-SA 3.0
2016-08-15T12:14:10.297
28287
2016-08-15T12:14:10.297
5750
28279
answer