
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も見ています
-
ユーザーフォーム時間表示
Excel(エクセル)
-
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
エクセルVBA ユーザーフォームのtextboxの書式設定って?
Excel(エクセル)
-
-
4
VBユーザーフォームで時間入力
Visual Basic(VBA)
-
5
ユーザーフォームのテキストボックスで時間計算
Visual Basic(VBA)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
8
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
9
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
10
ユーザーフォーム上に現在日時と時刻を表示させていますがフォームを実行すると時間が更新されません。それ
Visual Basic(VBA)
-
11
ユーザーフォーム内のテキストボックス内の書式設定
Excel(エクセル)
-
12
UserForm1.Showでエラーになります。
工学
-
13
エクセルVBAのフォームで日時を入力しやすくしたい
Excel(エクセル)
-
14
任意で選択したセルをテキストボックスに表示
Excel(エクセル)
-
15
EXCEL・VBAフォームの日付(表示形式を変更したい)
Excel(エクセル)
-
16
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
17
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
18
ユーザーフォームに日付を表示させる方法を教えてください。そして、実行したあとでも日付が変わるようなプ
Visual Basic(VBA)
-
19
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
20
TextBoxから数字が文字として入力される?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセル ドロップダウンリスト...
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】列を折りたたみ非表...
-
9月17日でサービス終了らし...
-
【マクロ】アクティブセルの時...
-
ページが変なふうに切れる
-
【条件付き書式】シートの中で...
-
【マクロ】3行に上から下に並...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルの循環参照、?
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報