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

解決済みの質問

エクセルVBAで

登録ボタンを作りたいのですが
うまくいきません。
応答無しになってしまいます。
仕事でコードを入力して、住所やその他の関連事項を
登録して、検索し、封筒に宛名印刷し、登録内容の修正をしたいと思っています。

登録ボタンは下記のようなものを作りました。
Private Sub CommandButton1_Click()
Dim bk As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim cnt1 As Long

Set bk = ThisWorkbook
Set sh1 = bk.Worksheets("現場登録検索")
Set sh2 = bk.Worksheets("一覧")
cnt1 = 6

Do While sh2.Cells(cnt1, 2).Value <> ""
cnt = cnt1 + 1
Loop

'得意先CD
sh2.Cells(cnt1, 2).Value = sh1.Cells(2, 3).Value

'現場CD
sh2.Cells(cnt1, 3).Value = sh1.Cells(3, 3).Value

'送り方
sh2.Cells(cnt1, 22).Value = sh1.Cells(4, 3).Value

'封筒
sh2.Cells(cnt1, 23).Value = sh1.Cells(5, 3).Value

MsgBox "登録できました。"

End Sub
何が悪いのでしょうか?
よろしくお願い致します。

投稿日時 - 2005-05-29 03:14:10

QNo.1416233

困ってます

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

cnt = cnt1 + 1 ではループが終了しませんね。

cnt1 = cnt1 + 1

B列最終行+1ならループを使わずに下記でも良いと思います。

cnt1 = sh2.Range("B65536").End(xlUp).Row + 1

投稿日時 - 2005-05-29 03:34:49

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

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

回答(2)

ANo.2

無限ループになってしまうのは、No.1さんの回答の通りです。このような場合、コードの一番先頭に
Option Explicit
を入れるといいです。
もしくは、VBEの画面で、「ツール」ー「オプション」で表示される画面の「編集」タブの「変数の宣言を強制する」にチェックを入れた方がいいと思います。

こうすると変数の宣言を強制されますので、cnt1を宣言しながら、コードの中でcntを記述してしまうようなミスを排除できます。

投稿日時 - 2005-05-29 03:41:47

あなたにオススメの質問