インストールレスプログラミング( ´ー`)

VBA , JavaScript , HTAなど 365アプリはインストール必要ですが、仕事に無いケースはほぼないから(・_・;)

化学反応式の図示のためのコード とりあえずExcelで

うまくいかなくて悶々としてたので,ここに書きなぐって,お風呂に入って冷静に考えたら,

前回できなかったやつって,ポインタ使って丁寧にやっていくしかないか,と頭が冷えました。

パワーポイントでは VBAいじってても カーソルが見えなくなることが多々あり,うまく行ってない時はそんな細かい事でも

いらいらしますし,エラーが表示されないこともある,でちょっと付き合いにくいヤツなので,Excelでやってみた。

f:id:chemiphys:20181006214256p:plain

めんどうだったので,反応物と生成物で振り分けたりはしていません。

コードはこんな感じ

Sub test()
Dim sht As Worksheet: Set sht = Sheet1
Dim rng As Range: Set rng = sht.Range("h2:r10")
Dim i, j, k, l, x, y
x = 1: y = 1
For i = 3 To 6
    For j = 1 To sht.Cells(i, 2)
        If 11 - x + 1 < sht.Cells(i, 3) Then y = y + 1: x = 1
        For k = 0 To UBound(Split(sht.Cells(i, 4), ",")) Step 2
            For l = 1 To Split(sht.Cells(i, 4), ",")(k)
                rng.Cells(y, x) = Split(sht.Cells(i, 4), ",")(k + 1)
                x = x + 1
            Next
        Next
        If x <> 11 Then x = x + 1
    Next
    y = y + 1: x = 1
Next
        
End Sub

ポインタを置いて丁寧にやったこと。
分子毎に毎回残りの列と分子数を比較して,入らないなら改行としたこと。
分子一個分原子を並べたら,xを一つ増やして空白を入れたこと。
違う物質になるときに改行したこと。

For Nextをがんがん回しただけで解決したようでした。

うまく行かなくなったらお風呂に行くのはいいことだ ( ´ー`)フゥー...