みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAについて

Excel2010使用。
VBA初心者である為、
何度か質問させていただきながら
回答いただいた内容に修正を加えつつ、
思いのものがひと通りできたと
解決していたつもりだったのですが、
動作確認をしたところ、一部不具合が生じました。
自己解決を試みているのですが、解決できず困っております。
どなたかお助けいただけないでしょうか?

Private Sub 登録_Click()

'登録ボタン押下で勤務表にデータを登録

Dim row As Integer
Application.ScreenUpdating = False '画面更新の抑制
row = WorksheetFunction.CountA(Sheets("勤務表").Columns(1)) + 1
myCol = 1
Sheets("勤務表").Cells(row, 1).Value = Range("T2").Value
Sheets("勤務表").Cells(row, 34).Value = Range("T1").Value
For i = 8 To 22 Step 7
For j = 6 To 26 Step 2
If IsEmpty(Cells(j, i)) Then
Exit For
Else
myCol = myCol + 1
With Sheets("勤務表").Cells(row, myCol)
.Value = Cells(j, i).Value
If LenB(StrConv(Cells(j, i).Value, vbFromUnicode)) > 8 Then '(1) ここを修正
.WrapText = True
.Font.Size = 6
End If
End With
End If
Next j
Next i

Sheets("勤務表").Cells(5, 22).Value = Range("P3").Value '月末日を移す
Range("T1").ClearContents '連続入力の為、消去
Range("E6:G25").ClearContents
Range("L6:N25").ClearContents
Range("S6:U27").ClearContents

Application.ScreenUpdating = True '抑制の解除

Range("T1").Select
End Sub

上記コードを作成し、
入力用のシートから勤務表シートに
1人ずつ登録していくようにしております。
入力用のシートのH6:H24、O6:O24、V6:V26
(シートの都合により2行を1行に結合しています)
このマクロを実行したところ、
V24までは転記ができているのですが、
V26だけが転記できない状況となっています。
CellsでいくとCells(22,26)まで範囲に入っていると
思うのですが・・・。
どこがおかしいのでしょうか?

投稿日時 - 2012-08-28 17:56:23

QNo.7668221

すぐに回答ほしいです

質問者が選んだベストアンサー

>For j = 6 To 26 Step 2
この行の下に1行挿入してください。
If i = 22 And j = 26 Then Stop

LoopでV26まできたらコードが途中の Stop で止まります。
その後VBE画面で[F8]キーを押すと1ステップずつマクロが進みます。
このステップ実行で確認してみてください。
ステップ実行はデバッグの基本です。

止まらなかったら途中の Exit For でLoopを抜けています。
データを確認するか、If i = 22 And j = 26 Then Stop の26を24に変えてみてください。

ステップ実行中、例えば If IsEmpty(Cells(j, i)) Then のCells(j, i)にマウスカーソルを合わせると
その時のCells(j, i)に何の値がはいっているかポップアップで知る事ができます。
変数にマウスカーソルを合わせても同様にポップアップで変数の値を知る事ができます。

コード上はV26セルまで処理するようなコードになっています。
まずは質問者さんのシートのデータがどうなっているか、
ご自分で調査してみてください。

#原因がわかれば不要になった
#If i = 22 And j = 26 Then Stop の行は削除してください。



#勤務表シートのAH列が非表示になっている..って事は無い..ですよね?

投稿日時 - 2012-08-28 22:50:17

お礼

end-uさん、ありがとうございます。
回答頂いた内容で、検証していったところ
コードは、正常ということがわかったので
シート側のデータを確認したところ
凡ミスを発見することができました。
言うのも恥ずかしいのですが、
V列は数式にしており、V26だけ
数式が抜けておりました。
(V列を非表示にしてました)
今回、教えていただいた方法は
VBA初心者の自分にとって
すごく勉強になりました。
今後も活用していきたいと思います。
ありがとうございました!

投稿日時 - 2012-08-29 10:47:37

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問