[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォームからの入力』(よし)
エクセルシートへユーザーフォムを利用しデータを入力できるようにしています。 データの入力については、1カ月ごとで削除を行っていますが、削除についても マクロを利用して行っています。 しかし、削除後ユーザーフォームよりデータを入力した場合、削除後の行より データが入力されてしまいます。削除後のデータについては3行目よりスタート したいのですが、上手くいきません。下記コードを掲載いたしますので、修正箇所 のご教示をお願いできたらと思います。現在勉強中でマクロについてもほぼ素人で ございます。どうぞよろしくお願いいたします。
(ユーザーフォームコード) Private Sub CommandButton1_Click()
Dim lastRow As Long Dim lastCol As Long
If MsgBox("入力データを転記しますか?", vbYesNo, "確認") = vbYes Then
With Sheets("入力データ")
With .UsedRange lastRow = .Cells(.Count).Row lastCol = .Cells(.Count).Column End With
If .Cells(lastRow, 1).Interior.ColorIndex = xlNone Then .Rows(lastRow + 1).Resize(, lastCol).Interior.ColorIndex = 39 End If
.Cells(lastRow + 1, 1).Value = lastRow - 1
.Cells(lastRow + 1, 1).Value = ComboBox1.Value .Cells(lastRow + 1, 2).Value = TextBox1.Value .Cells(lastRow + 1, 3).Value = TextBox2.Value .Cells(lastRow + 1, 4).Value = TextBox3.Value .Cells(lastRow + 1, 5).Value = TextBox4.Value .Cells(lastRow + 1, 6).Value = TextBox5.Value .Cells(lastRow + 1, 7).Value = TextBox6.Value .Cells(lastRow + 1, 8).Value = TextBox7.Value .Cells(lastRow + 1, 9).Value = TextBox8.Value .Cells(lastRow + 1, 10).Value = TextBox9.Value .Cells(lastRow + 1, 11).Value = TextBox10.Value End With
End If
End Sub
(削除ボダンコード) Private Sub CommandButton2_Click()
Worksheets("入力データ").Activate Worksheets("入力データ").Range(Cells(3, 1), Cells(5000, 11)).Clear Worksheets("入力データ").Range("A3:K5000").ClearFormats Application.Goto reference:=Worksheets("入力データ").Range("A3") End Sub
以上内容となります。よろしくお願いいたします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
よくわかりませんが・・・ CommandButton2のコードは、もう少し書き方も工夫できるかとは思いますが、さておき。
このシートはどんなレイアウトなんですか? 1行目、2行目がタイトル行なんでしょうか? いずれにしても、削除で、3行目から下がクリアされますから、次に登録すると、3行目からになりますけど? 削除前に3000行目まであったとして、そこから転記されているのですか?
もしそうなっているなら、考えられることは、
With .UsedRange lastRow = .Cells(.Count).Row lastCol = .Cells(.Count).Column End With
ここで、データの最終場所を求めているんですが、もし、K列より右側に何か「ゴミ」のようなものがあれば 削除でクリアされていませんので、そこが最終セルとなり、次に登録するとそこからになります。
以下で試してみてください。
Private Sub CommandButton2_Click() With Sheets("入力データ") With .Range("A1", .UsedRange).Offset(2) .Clear .ClearFormats End With Application.Goto .Range("A3") End With End Sub
(β) 2015/05/14(木) 11:30
2013 だということですから、大丈夫だとは思いますが、かって、一度書き込みがあった領域は クリアしても、そこが UsedRange に含まれるという不具合(割と有名な不具合)がありました。 今は、そういうことはないはずですが。
もし提示したコードでも思わしくなければ、念のため
With Sheets("入力データ") の下に
.UsedRange
という「おまじない」をいれてみてください。
(β) 2015/05/14(木) 12:00
ご回答ありがとうございます。
上記コードに修正後、実行してみましたが、データ削除後は入力があった最終行の3行下から入力が 開始されます。
たびたびのご回答のついでに、再度ご教示いただけれな幸いです。 (よし) 2015/05/14(木) 12:09
おまじないは Private Sub CommandButton1_Click の With Sheets("入力データ") の下 ですけど それをいれてもダメだったということですか?
(β) 2015/05/14(木) 12:24
度重なるご回答ありがとうございます。
Private Sub CommandButton1_Clickの箇所に入力をしても同じ結果でした。
(よし) 2015/05/14(木) 12:36
不思議ですねぇ。こちらでは、数十行入力 -> CommadbButton2 -> 数十行入力 -> CommandButton2 -> ・・・
と、何十回繰り返しても3行目から転記されますが?
一度、新規ブックで試してみてはいかがでしょう。
(β) 2015/05/14(木) 13:43
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.