アプリ版:「スタンプのみでお礼する」機能のリリースについて

excel2007 Winndows2007です。
添付表例、A5セル「客先名:い」を選択しコマンドボタンで「行呼出し」をクリックしたらA5~D5の
セル連動した行のレコードデータをユーザーフォームで呼び出しC5セルの価格20を30に変更入力しユーザーフォームの「更新ボタン」をクリックし更新を終了させたいのです。
本屋で参考書を何冊も読みましたが最終行から1つ下の行に新規入力するというのはありましたが入力済み行をユーザーフォームで呼び出しある箇所を修正し更新するのがなく宜しく御願いします。

「入力済み、選択したセルに連動した行のデー」の質問画像

質問者からの補足コメント

  • 後学の為に教えていただけたらと思うのですが、UserFormはわかりやすい名前に変更していいものと思っていましたがだめなんでしょうか?
    そういう物と覚える物なのでしょうか?

    No.6の回答に寄せられた補足コメントです。 補足日時:2017/03/08 08:04

A 回答 (7件)

こんな感じではいかがでしょうか?


--------------------------------------------------------------------------
Sub 行呼出し()
UserForm1.Show
End Sub
--------------------------------------------------------------------------
Private Sub UserForm_Activate()
客先名.Value = Cells(Selection.Row, 1).Value
製品名.Value = Cells(Selection.Row, 2).Value
価格.Value = Cells(Selection.Row, 3).Value
数量.Value = Cells(Selection.Row, 4).Value
End Sub

Private Sub キャンセル_Click()
UserForm1.Hide
End Sub

Private Sub 更新_Click()
Cells(Selection.Row, 1).Value = 客先名.Value
Cells(Selection.Row, 2).Value = 製品名.Value
Cells(Selection.Row, 3).Value = 価格.Value
Cells(Selection.Row, 4).Value = 数量.Value
UserForm1.Hide
End Sub
--------------------------------------------------------------------------
※「Sub 行呼出し()」は「行呼出し」のボタンに登録してください。
※ テキストボックスのオブジェクト名は「客先名」「製品名」「価格」「数量」にしてあります。
※ ボタンのオブジェクト名は「キャンセル」「更新」にしてあります。
※ ユーザーフォームのオブジェクト名は「UserForm1」のままです。
    • good
    • 1
この回答へのお礼

回答有難う御座います。いただいたコード試してみました。
フォームから入力し更新クリックするとセルに反映されるのですが、「行呼出し」ボタンをクリックしても既に入力されているセルの値を呼び出す事が出来ませんでした。

お礼日時:2017/03/06 23:42

補足コメントについて



もちろん変更してもOKです。呼び出すときにそのオブジェクト名で呼び出せば良いだけです。
「入力表」でしたら「UserForm1」を「入力表」に全て変えるだけです。
    • good
    • 1

以下はどこに登録されていますか?


----------------------------------------------------------
Private Sub UserForm_Activate()
客先名.Value = Cells(Selection.Row, 1).Value
製品名.Value = Cells(Selection.Row, 2).Value
価格.Value = Cells(Selection.Row, 3).Value
数量.Value = Cells(Selection.Row, 4).Value
End Sub
----------------------------------------------------------
「キャンセル_Click()」と「Sub 更新_Click()」と同じユーザーフォームのモジュールに書き込まれていないといけないのですが、標準モジュールに書き込まれていたりしませんよね。
この回答への補足あり
    • good
    • 0
この回答へのお礼

表示されるようになりました。
原因は「UserForm」の記述を自分でわかりやすいようにと「入力表」と書き換えていたためでした。
こんな所でつまづくなんて未熟者です。いろいろお手数お掛けして申し訳御座いませんでした。

お礼日時:2017/03/07 22:32

No.4 追補



何らかの方法で「ユーザーフォーム」が先に表示されてしまうがやめ方が判らなくて、いちいち「キャンセル」ボタンを押すのが面倒とか言うことならば「行呼出し」ボタンを押したときに一度閉じるようにしましょうか?以下のように「UserForm1.Hide」を1行足すだけで出来ます。
--------------------------------------------------------------------------
Sub 行呼出し()
UserForm1.Hide
UserForm1.Show
End Sub
--------------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

・「行呼出し」ボタンに「行呼出し」マクロはチャント登録されていますか?
 ⇒標準モジュールに登録されています。

・「ユーザーフォーム」が先に表示された状態で「行呼出し」ボタンをクリックしていませんか?
(先に表示されないようにするか「キャンセル」ボタンで一度消してください)
 ⇒先に表示はされてはいません。
  「行呼出し」ボタンクリックしてから「ユーザーフォーム」が表示されますがテキストBoxは空白になっています。そこに入力して「更新」すればセルに表示されます。
しかし別の行のセルを選択しても先程フォームに入力したデータが表示されてしまいます。

お礼日時:2017/03/07 17:03

No.2 へのお礼について



・「行呼出し」ボタンに「行呼出し」マクロはチャント登録されていますか?
・「ユーザーフォーム」が先に表示された状態で「行呼出し」ボタンをクリックしていませんか?
(先に表示されないようにするか「キャンセル」ボタンで一度消してください)
    • good
    • 0

    • good
    • 0
この回答へのお礼

回答有難う御座います。文字の書き込みが数行になりセル幅調整したりも有る為、VBAでやれればと思っています。
動画の回答いただいたのは初めてでわかりやすいですね。

お礼日時:2017/03/06 23:56

「excel2007 Winndows2007」とは「Excel2007 Windows7」でしょうか?


ユーザーフォームにはテキストボックスが4つと「更新ボタン」がとりあえず有るということでしょうか?
    • good
    • 0
この回答へのお礼

有難う御座います。
スペル間違いました「Excel2007 Windows7」です。
ユーザーフォームにはテキストボックスが4つと「更新ボタン」です。今思いましたが「閉じる」ボタンも必要かと。

お礼日時:2017/03/05 23:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A