No.3ベストアンサー
- 回答日時:
#01です。
補足ありがとうございましたまず先の回答を理解するために新規のブックにユーザフォームとテキストボックスを1つ配置して、ユーザーフォームのモジュールシート(VBE画面でユーザーフォームをダブルクリックすると開くシート)に#01のVBAを貼り付けて動作を確認してください。
その上で、時刻を入力するテキストボックスが複数あるなら、TextBox_Changeイベントのモジュールも複数になります
Private Sub TextBox9_Change()
ActiveCell.Offset(1,0).Value = TextBox9.Value
End Sub
Private Sub TextBox10_Change()
ActiveCell.Offset(2,0).Value = TextBox10.Value
End Sub
Private Sub TextBox11_Change()
ActiveCell.Offset(3,0).Value = TextBox11.Value
End Sub
Private Sub TextBox12_Change()
ActiveCell.Offset(4,0).Value = TextBox12.Value
End Sub
Private Sub UserForm_Activate()
TextBox9.Value = Format(ActiveCell.Offset(1,0).Value, "h:mm")
TextBox10.Value = Format(ActiveCell.Offset(2,0).Value, "h:mm")
TextBox11.Value = Format(ActiveCell.Offset(3,0).Value, "h:mm")
TextBox12.Value = Format(ActiveCell.Offset(4,0).Value, "h:mm")
End Sub
#01ではUserForm_Initializeイベント使いましたが、複数のシートに繰り返してユーザーフォームで入力を行うようなのでUserForm_Activateイベントに変更しました。
ただアクティブセルを基準にしてセルに値を書き込むのは、トラブルの元のように思えて仕方ないですが、その仕様で大丈夫ですか
この回答への補足
丁寧な回答、有難うございます。
早速、ブックを作り試してみます。
zap35様が、ご心配いただいている、トラブルの元になるのではないかとの、ご指摘有難うございます。
なにぶん、VBA超初心者のため、ご指摘を理解出来ずにいます。
申し訳ありません、アクティブセルは、ある値の変化を基準にしてIF~then
により、指定しています。
zap35様
無事、完成しました。返事が遅くなり申し訳ありませんでした。
#01の回答に、素人が、訳も解らずあれこれ考えた挙句、ただ動いたというだけで、返信してしまいました、#03で、私の拙いコードに丁寧な回答をいただいていたのに、本当に申し訳なくて、コードを理解するため、あれこれ勉強していました今は、#03の回答が、私のこれからの、VBAを勉強するための、バイブルとなっています。
本当に有難うございました。改めまして、気分を害されたのではないかと思い、お許し願います、これからも、解らない所があったら、よろしくお願いします。
No.4
- 回答日時:
#01です。
#01のお礼を読みましたが、何をされたいのかさっぱりわかりません。TextBoxのValueは本来、文字型です。これをVBAでセルに書き込んだときエクセルは「時刻」と判断して自動的に日付型に変換しますが、直接TextBoxのValueを扱うときは文字型のデータですから、Format関数で整形しようとしても無意味です。おそらくこの点が理解できていないように感じました。
どうしてもTextBoxのValueを整形したいなら、DateValue(日付を表す文字列)という関数もありますからヘルプで調べてみてください。
またUserForm_InitializeイベントでTextBox_ChangeイベントのモジュールをCallしていますが、これもよく理解できません。
(仮に動いたとしてもInitializeイベントでは最初にLoadしたときの1回しか動作しませんよ。だから#03ではActivateイベントにしたのですがInitializeイベントに戻したのはなぜでしょうか)
私の回答は既にされています。それを工夫して改良していただくのは大変に喜ばしいことですが、「改造した結果が動かない」と言われてもどうしようもありません。例え初心者であってもそれはご自身でDebugするべきです。
zap35様
丁寧な、ご指導有難うございます。
ご指摘の通り、textboxの、取り扱いが全然理解していなく安易に、
動くかどうかで、喜んで基本が出来ていませんでした。
私の、質問に丁寧に回答していただいたのに、申し訳ありませんでした。
#03の回答を、基本から勉強しなおします。
本当に有難うございました。
No.2
- 回答日時:
この問題は私には難しいな。
下記で正しいか自信ないが。(1)Userform1を作成。
(2)テキストボックスをユーザーフォーム上に作成
(3)その他コントロールをユーザーフォーム上に1つ作成。
(4)(2)のテキストボックスには
ConntrolSourceにA1(例)と設定。
(5)標準モジュールに
Sub test01()
UserForm1.Show vbModeless
End Sub
と入れる。
(6)シートSheet1のイベントに
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
UserForm1.TextBox1.Value = Format(Range("a1"), "hh:mm")
End If
End Sub
をコピペ。
(6)シートSheet1をアクチブにしておいて
(7)標準モジュールの(5)を実行
ーー
テキストボックスを変える(例11:20)ーー>A1に反映
セルA1を変える(例 18:56)-->テキストボックスに反映。
すると思うが。何か問題がありそう。
No.1
- 回答日時:
ConntrolSourceでセルの値と連動させる場合、時刻を表すシリアル値が表示されてしまうみたいなので、ConntrolSourceプロパティは使わず、ユーザフォームイベントで連動させたらいかがでしょう。
もしそのテキストボックスには時刻しか入力されないなら以下でも可能です。Private Sub TextBox1_Change()
Sheets("Sheet1").Range("A1").Value = TextBox1.Value
End Sub
Private Sub UserForm_Initialize()
TextBox1.Value = Format(Sheets("Sheet1").Range("A1").Value, "h:mm")
End Sub
この回答への補足
zap35様、早速の回答ありがとうございます。
私が、書いたコードは、以下のコードですが、
計算させるための、表がいくつかあって、フォームから
それぞれの表に、アクティブセルを切り替え入力しています。
それらの、コードは、省略しています。
Sub 表示データ設定()
'シートと、ユーザーフォームの各作業時間とを、連動させます。
Dim lngrow As Long
lngrow = ActiveCell.row
TextBox8.Value = "b" & lngrow
TextBox9.ControlSource = ActiveCell.Offset(1, 1).Value
TextBox10.ControlSource = ActiveCell.Offset(2, 1).Value
TextBox11.ControlSource = ActiveCell.Offset(3, 1).Value
TextBox12.ControlSource = ActiveCell.Offset(4, 1).Value
End Sub
を、Callで使用しています。
質問ばかりで、申し訳ありませんが、zap35様の、
回答の利用方法が、どう利用してよいのかわかりません
教えてください。
読みにくいコードを、記載したことをお許しください。
よろしくお願いします。
zap35様
回答の利用方法を、自分なりに考え
Private Sub TextBox8_AfterUpdate()
TextBox8.Value = Format(TextBox8.Value, "h:mm")
End Sub
で、テキストボックスの表示方法を設定し
次に
Private Sub UserForm_Initialize()
Call TextBox8_AfterUpdate
...........
と、フォームの初期化時に、
テキストボックスを書き換えさせ表示できないものか試したところ
時間単位で表示することが出来ました。
ただ、12:00の表示が、なぜか0:05又24:00が0:00と表示されてしまいます。
この考え方でよいものか、又なぜ12:00が0:05等に表示されるのか、教えてくださいお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 出退勤管理の遅刻・早退時間について 3 2023/08/10 15:33
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- 仕事術・業務効率化 IF関数で時間指定をして、数値を切り上げたいです 1 2022/05/01 23:37
- Excel(エクセル) 至急 Excel日付表示設定教えてください Excelの日付表示ですが、他者から送られてくるExce 6 2023/02/03 11:01
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
ユーザーフォーム時間表示
Excel(エクセル)
-
ユーザーフォーム上に現在日時と時刻を表示させていますがフォームを実行すると時間が更新されません。それ
Visual Basic(VBA)
-
ユーザーフォームに今の時間を表示
Access(アクセス)
-
-
4
ユーザーフォームのテキストボックスで時間計算
Visual Basic(VBA)
-
5
VBユーザーフォームで時間入力
Visual Basic(VBA)
-
6
excelVBA コンボボックスに時刻で表示したい
Excel(エクセル)
-
7
UserForm1.Showでエラーになります。
工学
-
8
エクセルVBA ユーザーフォームのtextboxの書式設定って?
Excel(エクセル)
-
9
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
10
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
11
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
12
VBAで○○:○○と表示させたいのに小数で0.53125のように表示さ
Access(アクセス)
-
13
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
14
ユーザーフォームチェックボックスの値をセル入力
Visual Basic(VBA)
-
15
エクセルテキストボックスの文字列をセルに引っ張ってくるやり方
Visual Basic(VBA)
-
16
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
17
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
18
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
19
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
20
ユーザーフォーム内のテキストボックス内の書式設定
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報