
No.4ベストアンサー
- 回答日時:
また、違う内容が出てきてしまっています。
実際に、私の書いた内容は、どこに行ってしまっているのか、本当に、初歩的な問題なのに、一向に解決する目処が立ちません。そちらのご事情はあるかと思いますが、肝心な話は、堂々巡りしています。
>修正する時はセルのダブルクリックでセルの値を読み込み編集用のコマンドボタン2で、セルに書き込む様になっています。
そのような仕様なら、もはやTextBox のControlSource は不要のようです。ControlSource が、問題をややこしくしているようです。Activecell.Text をインポートして、修正したものを、そのまま貼り付ければ良いだけのことです。凝ったやり方がうまくありません。そもそもUserForm 自体が不要か、使いこなせないのではないかとも考えます。
でも、経験的なことですが、掲示板で、情報の付け足しを繰り返すのでは、特に今回のようなケースでは、とても最後の完成までは行き着くことはありえないと思います。私は、根気よくお話を聞いて差し上げるだけの余裕がありません。
残念ですが、これ以上、細かい内容を後出しで言葉で説明されても、どうしようもありません。もう一度、VBAの基本的なことから勉強されて、それで、はじめから作り直したほうが早いかと思います。
VBAマクロは、コードで成り立っていますから、そのような言葉による説明ではラチが開かないのです。こちらの説明の仕組みも理解を示しているようには思えません。
一応、これで、私のほうからはお終いにさせていただきたく思います。申し訳ありません。
私の知識不足また、質問マナーが悪く、わざわざ時間をさいていただき本当に申し訳ありませんでした。これからは、質問内容を理解して、VBAマクロも勉強していかなければと・・・本当にすみません、全然わからなかったので、安易に質問してしまいました。気分を害してしまい、本当に回答をしていただき有り難うございました。
No.3
- 回答日時:
#1の回答者です。
申し訳ないのですが、よく理解できていません。
ただ、#1の回答は、
>>テキストボックスとセルとを、ControlSource でつなげているということでしょうか。
>>もし、そうなら、ControlSource を直接つなげては、無理だと思います。
TextBox1 つまり、表示する側のControlSource は、なし(空白)にしないと、時間値で表示しません。
TextBox2 (隠しコントロール Visible=False)側で、シリアル値(数字)を取得して、それを、TextBox1 側に表示させるという仕組みです。
ただし、これは表示だけで、一方通行です。入力が必要な場合は、別のマクロが必要です。TextBox2 は、ControlSource は、繋いだままです。
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode <> 13 Then Exit Sub
TextBox2.Text = TextBox1.Text
End Sub
また、
CommandButton1_Click()
おそらく、ここにControlSource を書き換えるプログラムがあるはずですから、それを書き換える必要もあるかもしれません。
No.2
- 回答日時:
テキストボックスのコントロールソースでリンクするのではなく、イベントプロシージャでそのセルに書き込んではどうでしょうか。
例えば、テキストボックスのChangeイベントで書き込む場合は以下のようになります。
Private Sub TextBox1_Change()
On Error GoTo timeError
timestring = TimeValue(TextBox1.Value)
On Error GoTo 0
Worksheets("Sheet1").Range("A1").Value = timestring
timeError:
End Sub
実際にはユーザフォームにOKボタンなどを追加して、そのClickイベントで、テキストボックスに入力された文字列が時間に変換できるかチェックしてから書き込むというようにするほうがいいでしょうね。
No.1
- 回答日時:
テキストボックスとセルとを、ControlSource でつなげているということでしょうか。
もし、そうなら、ControlSource を直接つなげては、無理だと思います。
ひとつ、隠しコントロールを置いておいて、そこからを元のテキストボックスに出すようにしないといけません。
例えば、このようになります。
TextBox2 を隠しコントロールとして、Visible =False にしておきます。
TextBox2 ControlSource は、セルのアドレス
'//
Private Sub TextBox2_Change()
If IsNumeric(TextBox2.Value) Then
'取得したデータを、TextBox1に送る。
TextBox1.Text = Format$(TextBox2.Value, "HH:MM")
End If
End Sub
'UserForm 起動時(起動時には、TextBox2のChangeイベントが利かない)
Private Sub UserForm_Initialize()
If IsNumeric(TextBox2.Value) Then
TextBox1.Text = Format$(TextBox2.Value, "HH:MM")
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォームテキストボックスの表示設定
Excel(エクセル)
-
VBユーザーフォームで時間入力
Visual Basic(VBA)
-
ユーザーフォーム上に現在日時と時刻を表示させていますがフォームを実行すると時間が更新されません。それ
Visual Basic(VBA)
-
-
4
エクセルVBAのフォームで日時を入力しやすくしたい
Excel(エクセル)
-
5
ユーザーフォームのラベルに時間を表示させてずっと時間がちゃんと動くような方法はありますか?コード書い
Visual Basic(VBA)
-
6
ユーザーフォームのテキストボックスで時間計算
Visual Basic(VBA)
-
7
ユーザーフォームに今の時間を表示
Access(アクセス)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
excelVBA コンボボックスに時刻で表示したい
Excel(エクセル)
-
10
VBA入力フォームで労働時間の計算をしたい
Visual Basic(VBA)
-
11
vba 時間の引き算 例えば 15:00から16:15の間の時間は1時間15分ですが、vbaのコード
Visual Basic(VBA)
-
12
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
エクセルの一つのセルに複数の...
-
Excel 例A(1+9) のように番地の...
-
エクセルで指定したセルのどれ...
-
数式を残したまま、別のセルに...
-
貼り付けで複数セルに貼り付けたい
-
エクセルのセルの枠を超えて文...
-
Excelで教えてください。 バー...
-
(Excel)数字記入セルの数値の後...
-
エクセル オートフィルタで絞...
-
Excelについて(セル内の文字を...
-
EXCELで右詰の数値でセルを(左...
-
エクセルのセル交点に丸印をつ...
-
エクセルで住所と建物名を分け...
-
【Excel】 セルの色での判断は...
-
エクセルで縦に1112223...
-
公共建築工事 共通仮設費率 エ...
-
ハイパーリンクの参照セルのズ...
-
エクセルの関数VLOOKUP...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
vba テキストボックスとリフト...
-
セルをクリック⇒そのセルに入力...
-
枠に収まらない文字を非表示に...
-
Excel for Mac使用中ポインタが...
-
数式を残したまま、別のセルに...
-
Excel 例A(1+9) のように番地の...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルの書式設定の表示形式...
-
(Excel)数字記入セルの数値の後...
-
エクセルのセルの枠を超えて文...
-
Excelで数式内の文字色を一部だ...
-
Excelでのコメント表示位置
-
【エクセル】IF関数 Aまたは...
-
エクセルの一つのセルに複数の...
-
excelの特定のセルの隣のセル指...
-
【Excel】 セルの色での判断は...
-
対象セル内(複数)が埋まった...
おすすめ情報
早速の回答有り難うございます
最初から書いていたら良かったのですが、TextBox1は下に500行あるのです。
次に移動する時は CommandButton1_Click()したら最終行を調べてセルの下へ
500行まで下がっていくのです。ControlSourceでセルの値を入力したらそのしたの
セルからまたシリアル値が帰ってくるのですが、、、たびたびすみません
ちなみに Win10 Excel2013です
WindFallerさま
何度も書き込みいただいて有り難うございます。このユーザーフォームはやめた前任者が作りかけていた物を少しのマクロしかわからない私が引き継ぐ事になったので、これを入力するのは女性社員で(Excelの知識がない)わかりやすく入力出来るようにしてほしいと言うことで前任者が作っていた物を私が引き継いだのです。知識が無く説明不足で申し訳ありません。まずフォームを立ち上げ任意のセル(その行ならどこでも)をダブルクリックしてセルのデーターを読み込ませてから入力する様になっています。新規の場合は、何も読み込まれていないフォームから新規入力のコマンドボタン1で、修正する時はセルのダブルクリックでセルの値を読み込み編集用のコマンドボタン2で、セルに書き込む様になっています。その読み込んだ時のセルの値をフォームでHH:MMで表示・修正したいのです。何とかお知恵をお貸し下さいすみません。
貴重なお時間を頂き有り難うございました。あれから、まともの見なかった本や、他の方の内容をネットで調べ、何とか作ることが出来ました。「Activecell.Text をインポートして、修正したものを、そのまま貼り付ければ良いだけのことです」これがヒントになり助かりました色々ご迷惑をおかけして本当にすみませんでした。これから、もっともっと勉強していきたいなぁと思いました。有り難うございました。<m(__)m>