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

いつもお世話になっております。

画像1のようなリストを作業場のタブレットPCで使っています。
現状では画像2のユーザーフォームから日付と名前を入力して使っています。
※コードは最下段のMacro3です

ですが、タブレットPCの画面が小さいため、
ボタンを省略することになり画像3のユーザーフォームに名前を選択すると
画像4のユーザーフォームが表示され、日付をB列に入力すると確認者の名前も
隣のC列に自動的に入力されるようにしたいと思っております。

全体としてうまくプログラミングできなかったのですが、
特に以下の2点について全くわかりませんでした。

1)C列に自動的に確認者の名前入力がされる
2)画像4のユーザーフォームの中に最初に入力した確認者の名前を表示する

という感じです。

すいませんが詳しい方、説明の上手な方、直接、コードで説明できる方、
お手数ですが教えて下さい。よろしくお願いします。

追記
1)画像3のユーザーフォームの代わりにメッセージボックスでもいいと思います。
メッセージボックスを使い慣れていないので、ユーザーフォームを使っただけです。
今、気が付いたので一応、追記しておきます。

2)以下のコードは特に必要ないと思います。
私の実力が今のところこの程度なので、こちらのレベルがわかるように貼り付けておきました。
すいませんが抽象的なアドバイスは理解できないです。

---------------------
標準モジュール
Sub Macro3()
UserForm3.Show vbModeless
End Sub
------
画像2のユーザーフォームのコード
Private Sub CommandButton1_Click()
ActiveCell = Format(Date, "mm/dd")
End Sub

Private Sub CommandButton2_Click()
ActiveCell = "田中"
End Sub

Private Sub CommandButton3_Click()
ActiveCell = "山本"
End Sub

Private Sub CommandButton4_Click()
ActiveCell = "鈴木"
End Sub

Private Sub UserForm_Click()
End Sub

「ユーザーフォームの連続表示について」の質問画像

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

  • 画像2

    「ユーザーフォームの連続表示について」の補足画像1
      補足日時:2016/07/16 08:17
  • 画像3

    「ユーザーフォームの連続表示について」の補足画像2
      補足日時:2016/07/16 08:17
  • 画像4

    「ユーザーフォームの連続表示について」の補足画像3
      補足日時:2016/07/16 08:37
  • ママチャリさんいつもありがとうございます。
    とりあえず頂いたコードを利用して運用します。

    自分自身の勉強もあるので、解決していない部分は引き続き
    1個づつ調べたり、質問したりしていこうと思います。
    機会があればまたよろしくお願いします。
    ありがとうございました。

      補足日時:2016/07/18 18:37

A 回答 (2件)

現在使っている画像1、2のユーザインターフェースですが、画面が小さい以外に、特にクレームは無いのですか?もし私が利用者なら、いくつか注文を付けたいところですが・・・。



とりあえず、ご要望通りのコードを書いてみました。処理概要は以下の通りです。
①アクティブセルのある行のC列に名前を設定する
➁上記①で設定した名前をメッセージボックスで表示する
③上記②でOKが押下された場合、同D列に日付を設定する

Private Sub CommandButton2_Click()
With ActiveCell.EntireRow
.Columns("C") = "田中"
If MsgBox(.Columns("C"), vbOKCancel) = vbOK Then
.Columns("D") = Format(Date, "mm/dd")
End If
End With
End Sub
    • good
    • 0
この回答へのお礼

ご解答ありがとうございます。

いい線をいっているのですが、私の説明が下手なので、
私がイメージしていることとママチャリさんのご解答が少しズレています。

今、ご解答して頂いたアドバイスを自分なりに、アレンジしているところです。
ですが、せっかくなので伝わらなかった、本当にしたかったことを説明しておきますね。

---------

「-タブレットPCの画面が小さいため、ボタンを省略することになり-」
ということで、画像2は本物のユーザーインターフェイスはありません。

画像1のリストも「伝票番号」、「日付」、「確認者」しかありませんが、
本当はもっと多くのチェック項目があります。

具体的にいうとユーザーフォーム上に作業者全員の名前のボタンがあるため、
「ユーザーフォームが大きくなり過ぎて、リストが見にくくなった」、ということです。
そのため2回にわけて処理しようという話になりました。

内容は以下の通りです。

A)先に入力する作業者を決定する = 1個目のユーザーフォーム上に作業者全員の名前(ボタン)を表示して選択する
B)名前ボタンを押すとユーザーフォームが消えて、別のユーザーフォームが表示される
※2個目のユーザーフォームの詳細は以下参照



2個目のユーザーフォームで日付を入力する

A)「日付ボタン」を押すとB列の所定のセルに日付が入力される = Macro3で説明した形式で現在の日付が入力される
ActiveCell = Format(Date, "mm/dd") = 必ず上から処理するわけではありません。「B-005」に先に入力することもあります。

B)、A)の処理と同時に(自動的に)C列の所定の場所に確認者の名前が自動的に入力される
先のActiveCell = Format(Date, "mm/dd")で日付を入力したセルの右隣のセル

C)2個目のユーザーフォームの右上に入力する作業者の名前を表示する
※名前は1個目のユーザーフォームで選択した名前

ということです。


仕事で使っているのですが、アップした当日は自宅からだったので、
質問用に適当に簡略化したのものを作成し、アップしたのがまずかったようですね。

ほぼベストアンサーなのですが、その後の報告もしたいので、しばらく開けておきます。
いつも、ご解答ありがとうございます。

お礼日時:2016/07/17 22:17

C列の一番最後のセルを選択したいのであれば、


Range("C1").End(xlDown).Offset(1,0).Activate

ユーザーフォームのラベルに文字を入力したいのであれば、
dim name as string
ボタンの操作のマクロに
name=田中

別のユーザーフォームに
label1.Caption=name

説明下手ですいません。よかったらやってみてください
    • good
    • 0
この回答へのお礼

解答ありがとうございます。せっかくアドバイスして頂いたのですが、こちらの知識不足でよくわかりませんでした。
やってみたので、一応、書いておきます。

1)>C列の一番最後のセルを選択したいのであれば、
Range("C1").End(xlDown).Offset(1,0).Activate

これは今回使わないと思うのですが、何に使うのでしょうか?

2)>dim name as string
ボタンの操作のマクロに
name=田中

貼り付けてみたのですが、動作しませんでした。
何か方法があると思うのですが、こちらの知識不足でわかりませんでした。

3)>これも同様に貼り付けてみたのですが、動作しませんし、
使い方もわかりませんでした。

せっかくご解答して頂いたのですが、こんな感じです。すいません。

お礼日時:2016/07/17 21:16

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