ここから本文です

エクセルVBAのMsgBoxで誰かおしえてください。MsgBoxにデータが取得できません。

kenpou24さん

2011/10/810:56:16

エクセルVBAのMsgBoxで誰かおしえてください。MsgBoxにデータが取得できません。

Private Sub 廃棄登録_Click()

Dim i, lastrow As Long
Dim buf As Variant

i = 5
lastrow = Sheets("台帳").Range("C4").End(xlDown).Row + 3

Do While i <= lastrow

If Cells(i, 11) <> "" Then
Rows(i).Select
Selection.Copy Destination:=Sheets("廃棄台帳").Range("A" & Rows.Count).End(xlUp).Rows.Offset(1, 0)
Rows(i).Delete

lastrow = lastrow - 1


buf = Cells(lastrow, 3)

MsgBox buf & "を廃棄台帳に移動しました。"
Else
i = i + 1

End If

Loop
If 廃棄年月日 = "" Then MsgBox ("廃棄する備品はありません。")
Beep
End Sub

閲覧数:
447
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

ja7awuさん

編集あり2011/10/919:25:49

多分、「台帳シートのK列に何か印しを付けた備品のデータを、行削除するとともに、その都度MsgBoxでその備品名を表示する」ということだと思いますが、そうだとすると提示のコードは、変数bufに備品名を入れる時点が、行を削除した後で値を代入しています。
あと、If 廃棄年月日 = "" Then の「廃棄年月日」は、変数ですが、宣言もしていなくて、何のことか分りません。
VBAの[ツール]-->[オプション]で「変数の宣言を強制する」にチェックを入れておいた方がいいかと思います。
それで、簡潔なコードにして、こんな感じで如何でしょうか。

Private Sub 廃棄登録_Click()
Dim i As Long
Dim lastrow As Long
Dim buf As String
Dim Cnt As Long
With Sheets("台帳")
i = 5
lastrow = .Range("C4").End(xlDown).Row + 3
Do While i <= lastrow
If .Cells(i, 11).Value <> "" Then
.Rows(i).Copy Sheets("廃棄台帳"). _
Range("A" & Rows.Count).End(xlUp).Rows.Offset(1, 0)
buf = .Cells(i, 3).Text
.Rows(i).Delete
Cnt = Cnt + 1
lastrow = lastrow - 1
MsgBox buf & "を廃棄台帳に移動しました。"
Else
i = i + 1
End If
Loop
End With
If Cnt = 0 Then
MsgBox "廃棄する備品はありません。", vbExclamation
Else
MsgBox Cnt & " 点の備品を廃棄台帳に移動しました。", vbExclamation
End If
Beep
End Sub

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

uso8megaさん

2011/10/812:16:44

そりゃ、移動して消してからじゃ取れないかと。

If Cells(i, 11) <> "" Then
buf = Cells(i, 3) ''移動前に取得

Rows(i).Select
Selection.Copy Destination:=Sheets("廃棄台帳").Range( _
"A" & Rows.Count).End(xlUp).Rows.Offset(1, 0)
Rows(i).Delete
lastrow = lastrow - 1

''buf = Cells(lastrow, 3) ''ここじゃ遅い
MsgBox buf & "を廃棄台帳に移動しました。"
Else

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。