質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

738閲覧

VBA 指定したフォーマット以外入力を許可しない

peCopeCo

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/12/19 12:57

編集2021/12/19 12:58

前提・実現したいこと

VBAにて指定したフォーマット以外入力のを禁止したいです。
下記のコード書きましたが。
上手く動作しませんどうすれば希望通り動くようになるでしょうか?
ご教授お願い致します。

環境 Excel2010
Windows10

###希望しているフォーマット
00:00:00(時:分:秒) 数字と[:]のみを半角のみ許可したいです

###現状起きている問題
00:0001のように打ち間違いを入力した際や
00:00:90等時刻としてあり得ない数値を入力した際
00:00:00002334 と言ったようなハッシュ値?として処理されてしまい
思うように動作していません。

該当のソースコード

VBA

1If CheckFormat(Format(Range("A1").Value,"Long Time")) Fale Then 2MsBox("フォーマットが違います") 3End If 4 5Public Function CheckFormat(mozi As String) As Blooean 6 7 8If mozi = "" Then 9CheckFormat = False 10Exit Function 11End If 12 13If IsDate(mozi) = True Then 14CheckFormat = True 15Else 16CheckFormat = False 17 18End If 19 20End Function 21 22 23 24 25 26 27 28

試したこと

セルの書式設定に00:00:00,00:00:00@,ユーザー定義で書式を設定しても同様の結果となりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とりあえず、[データ]-[データの入力]で下記のように設定する。

イメージ説明

セルの書式設定の表示書式を「時刻」にする。

上記の設定で、25:00:00 というような入力は拒否してくれます。

しかし、00:00:90 というような入力は 00:01:30 と変換してくれます。

これではダメ、00:00:90 も拒否してほしいとなると、セルの表示書式は「文字列」にしておいて、
シートのChangeイベントでチェックすることになりそうです。

vba

1Private Sub Worksheet_Change(ByVal Target As Range) 2 If Target.Cells.Count = 1 And Target.Column = 1 Then 3 If Not CheckFormat(Target.Value) Then 4 Target.Select 5 MsgBox ("フォーマットが違います") 6 End If 7 End If 8End Sub 9 10Function CheckFormat(mozi As String) As Boolean 11 If mozi = "" Then 12 CheckFormat = True 13 ElseIf IsDate(mozi) Then 14 If DateValue(mozi) = 0 Then CheckFormat = True 15 End If 16End Function

投稿2021/12/19 14:31

編集2021/12/19 15:25
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

peCopeCo

2021/12/24 12:36

ご回答ありがとうございます。 数字だから数字でやらないとと固定概念があり文字列でやる事は思いつきませんでした。 一先ず入力さえクリア出来れば、後は変換したり色々試せるのでそれで希望のモノを作成出来るか挑戦したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問