VBAのプログラムでうまく動かなくて困っています。
VBA初心者です。
エクセルのVBAのプログラムでうまく動かなくて困っています。教えていただける方がいらしたら、ぜひ教えて下さい!よろしくお願いします。エクセルの内容は以下のとおりです。
(内容)
セル
E H J L N P R・・・
8行目100 200 50 40 30 80
9行目130 350 10 50 60 120 110
・
・
(1)列Hの値が列Eの値より大きい場合その下に行を追加します。
(2)セルJ+セルL+セルN+・・をしてセルEの値を超えたセル以降の値を追加した行のセルJ列から順にコピペする処理です。
上のセルの1行目の内容でいいますと、
(1)列Hの値「200」が列Eの値「100」より大きいのでその下に行追加
(2)セルJ、L、N「50」+「40」+「30」でセルEの値「100」より大きいので、追加した行のセルJ列にセルN、Pの値をコピペするです。
以下が私が書いたプログラムです。
Sub test()
Dim x As Integer
Dim s As Integer
Dim t As Integer
x = Range("B8").End(xlDown).Row
r = Range("J8").End(xlToRight).Column
'8行目から最終行までループ
For i = x To 9 Step -1
If Cells(i, 5) < Cells(i, 8) Then
☆【For r = y To 11 Step -2
Cells(s, t).Value = Cells(i, r) + Cells(i, r + 2)
If Cells(i, 5).Value < Cells(s, t).Value Then Exit For
Next】
Rows(i + 1).Insert Shift:=xlDown
'超えたセルをコピーして、1行下の"J列以降"に代入
★
x = x + 1
End If
Next i
End Sub
上記プログラムで★の部分がうまく書けません。☆の部分も間違っているような気がします。よろしくお願いします。
お礼
以下のプログラムを使ってどうなるか確認してみました。 表示する文字:数字:10文字(0~9)、アルファベット(大文字と小文字合わせて52文字)および「$」記号の計64文字 LCD:表示シフト機能を使って初期化 void ioport(void); void main(void) { char str[64]="$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; ioport(); lcd_init(); while(1) { lcd_clear(); lcd_goto(0); lcd_puts(str); __delay_ms(1000); } } void ioport(void) { OSCCON=0x60; TRISA=0x00; ANSEL=0x00; PORTA=0x00; TRISB=0x00; PORTB=0x00; } その結果、LCDには小文字のbつまり40文字目までしか表示されませんでした。つまり40文字目までは「表示シフト機能を使って表示」でき、41文字目以降は「表示されない」ということがわかりました。 上記のことにより「AsarKingChang 」さんがおっしゃっていた実装の有無については「未実装」であるということがわかりました。 回答ありがとうございました。