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

解決済みの質問

VBAで修正ボタンを作成

先ほどは登録ボタンを作成したのでが、
修正ボタンもあれば便利だと思い作りたいのですが
一向にできません。
一覧表より、番号を検索して一致するセルの場所に
上書き?保存をするようにしたいのですが

どのようにすればよいでしょうか?

先ほどから新たに訂正を加えたのですが、
やはりダメでした。

Private Sub CommandButton2_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


'マッチ

Range("F2").Select
n = ActiveCell.FormulaR1C1 = "=MATCH(RC[-1],一覧!C[-5],0)"

cnt1 = n


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

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



MsgBox "修正できました。"

End Sub

よろしくお願い致します。

投稿日時 - 2005-05-29 14:54:40

QNo.1416914

困ってます

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

NO.4間違えました。ごめんなさい。
n = ActiveCell.FormulaR1C1 = "=MATCH(RC[-1],一覧!C[-5],0)"
のところを
ActiveCell.FormulaR1C1 = "=MATCH(RC[-1],一覧!C[-5],0)"
n = ActiveCell.Value
にしてみるとどうでしょうか?
ActiveCellがだめな場合はRange("F2")とか、
Cells(2,6)(F2のセル位置)にしてみたりしてください。

投稿日時 - 2005-05-31 22:48:53

お礼

ありがとうございました!!とっても感動です!!
すごいです。\(^o^)/
これで楽になります。
ほんとうに感謝です。
<m(__)m>

投稿日時 - 2005-06-04 21:07:01

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

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

回答(5)

ANo.4

セルの関数の結果が取得できていないようですね。
n = ActiveCell.FormulaR1C1 = "=MATCH(RC[-1],一覧!C[-5],0)"

cnt1 = n
のところを
ActiveCell.FormulaR1C1 = "=MATCH(RC[-1],一覧!C[-5],0)"
cnt1 = ActiveCell.Value
にしてみるとどうでしょうか?

投稿日時 - 2005-05-31 22:34:25

ANo.3

簡単な処理の概要としては、

一度、現場登録検索のシートのF2セルに
=MATCH(RC[-1],一覧!C[-5],0)
の結果を表示し、
その結果によってセルに値を入れる

ということでよいでしょうか。
この場合、F2セルに正しい値が出ているでしょうか?
自分の期待した数値?が出ていなければ、
1.関数が実行できていない(セルの書式設定が文字列など)
2.関数の結果が出ていない(値が出ない、関数が間違っている)
3.セルの指定が間違っている(rangeの指定法が違う、シートが違う)
などのことが考えられますし、
逆に、値が正しければ、
最後に値を設定するところがおかしい
ということになりますよね。

うまくいっていない場所のあたりをつけるところからやってみてはどうでしょうか。

投稿日時 - 2005-05-30 23:09:43

補足

'マッチ関数で探す
Range("F2").Select
ActiveCell.FormulaR1C1 = "=MATCH(RC[-1],一覧!R[-1]C[-5]:R[1998]C[-5],0)"

=MATCH(E2,一覧!A1:A2000,0)の意味です。
関数はうまく動いているように思います。
値もしっかりでています。

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

         ↑
       ここの部分がおかしい。

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

MsgBox "修正できました。"

End Sub

結局、シート一覧は
検索CD得意先CD現場CD得意先名検索1よみがな現場名検索2よみがな郵便番号住所1住所2TELFAX宛名1宛名2郵便番号住所1住所2TELFAX送り方封筒営業担当営業担当締め日NK請求伝票類継続指定Excel表紙注意書き終了日5月6月7月8月9月10月11月12月1月2月3月4月5月6月7月8月9月10月11月12月


A5~BB5まで横にずらずらと上記の項目があり
入力しずらいので、シート2に現場登録などという
縦に項目を並べて1シート内でバーを動かさないで
すむようにしたいのです。
現場のコードが2000件ぐらいになります。
日々変更と更新があるので困っています。
アクセスがいいのはわかっていますが
会社にはありません。
又、登録ボタンと検索ボタンはできたので
検索で表示させた内容から、修正して
一覧に(入力)登録できればとっても便利なので
がんばってなんとかしたいのです。
助けて下さい。

投稿日時 - 2005-05-31 21:46:56

ANo.2

実行する際に、VBEの画面から「デバック」「ステップイン」で実行してみて、cnt1 = nの部分でnにカーソルをあてて、nの値を確認してみてください。nには値が設定されているでしょうか?

nに値が設定されていれば、代入はされるはずです。

投稿日時 - 2005-05-30 23:03:37

補足

"ステップイン"やってみました。
: n : エラー 2042 : Variant/Error
でした。(>_<)
だめと言うことですね。
nをはずすと、関数としてF2にしっかりと値は入るのですが・・・。
代入のが変なのでしょうか?

投稿日時 - 2005-05-31 21:49:26

ANo.1

初めて見るのでちょっとよくわかりませんが、

Range("F2").Select

のところが少し違和感があります。
どのシートなのか?
範囲指定の方法はこれであっているか?
的外れだったらすみません。

投稿日時 - 2005-05-29 15:10:00

補足

説明が悪くてすみません。

Range("F2").Select は現場登録検索のシートです。

とりあえず、=MATCH(E2,一覧!A:A,0) で一覧のどのセル番地か調べて、nに代入すると言うのを考えたのですが、
sh2.Cells(n, 22).Value = sh1.Cells(4, 3).Value
上記がデバックになります。
どうしたらいいのでしょうか?

投稿日時 - 2005-05-29 20:34:42

あなたにオススメの質問