VBA マクロ超初心者です。仕事で作成しなくてはいけなくなったのですが、お手上げ状態です。
同僚で解る人もいるのですが、教えていただいているのですが、何度質問できなくて助けて下さい。
少し前にも同じような質問をしましたが、下記のプログラムを修正して教えていただけると助かります。
UserFormにテキストボックス【実行日】【有効期日】【有効期日周期】を作成し、実行日を入力したら有効期日周期の年によって有効期日が自動でテキストボックスに入力されるプログラムを作成したいです。
Private Sub 実行日_Enter()
Dim dt As Date
Dim dy As Date
Dim s As String
Me.実行日 = dt
Me.有効期日=dy
テキストボックスの実行日に[20200531]と入力したら[2020/05/31]と
変換できるプログラムを作りたい。のですが、
S = "20200531"
dt = CDate(Format(s, "####/##/##"))
のプログラムでもデバックが表示されてどこがわるいのかもわかりません。
If 有効期日周期.Value = "1年" Then
d = DateAdd("yyyy", 1, dt) ' 年
Me.有効期日 = d
End If
End Sub
色々ネットで検索したのですが、どの部分のプログラムを使えばいいのか
検討もつきません。
宜しくお願い致します。
No.5
- 回答日時:
No.1のお礼に対して。
>dt = Me.実行日にして実行したら、デバックがでて黄色になります。
日付型と文字列では = で代入は不可能でしょう。
多分No.1を
Private Sub 実行日_Enter()
Dim dt As Date
Dim dy As Date
Dim s As String
s = Me.実行日.Text ' 文字列型で宣言した変数に文字列を入れる
s = Format(CLng(s), "0000/00/00")
If 有効期日周期.Text = "1年" Then
dt = CDate(s)
dy = DateAdd("yyyy", 1, dt) ' 年
Me.有効期日.Text = CStr(dy)
End If
End Sub
こんな感じじゃないのかな?
If文の意味(”1年")がこれであっているのであればですけど。
No.4
- 回答日時:
No.3です。
Cdate関数を使ってみました。
前回のコードよし少し簡単にできます。
↓に変更してみてください。
Private Sub CommandButton1_Click()
Dim myDate As Date
With 実行日
myDate = CDate(Format(.Value, "0000/00/00"))
.Value = myDate
End With
有効期日 = DateAdd("yyyy", Val(有効期日周期), myDate)
End Sub
これでも前回と同じ動きになると思います。m(_ _)m
tom04さん
回答ありがとうございます。
両方とも試しましたが、
myDate = CDate(Format(.Value, "0000/00/00")) ←がデバックが出て、【型が一致しません】とでます。20200601とエクセルにはこのまま
表示されて、もう一回enterをクリックすると、もう一行下に2020/6/1で
表示されます。
先に回答していただいた方は、
myM = Mid(.Value, 5, 2)←部分が黄色になります。そしてenterをもう一度クリックすると下に2020/6/1で表示されます。
No.3ベストアンサー
- 回答日時:
こんばんは!
もう一つの質問の方に投稿しようと思ったのですが、
締め切り済みだったのでこちらに投稿します。
とりあえずやってみました
↓の画像のようなユーザーフォームになっているとします。
テキストボックス1~テキストボックス3のオブジェクト名はすべて左側のラベル名としています。
そして左側のような入力後 → コマンドボタンをクリックすると右側のようになるようにしています。
Private Sub CommandButton1_Click()
Dim myY As Long, myM As Long, myD As Long
Dim myDate As Date
With 実行日
myY = Left(.Value, 4)
myM = Mid(.Value, 5, 2)
myD = Right(.Value, 2)
myDate = DateSerial(myY, myM, myD)
.Value = myDate
End With
有効期日 = DateAdd("yyyy", Val(有効期日周期), myDate)
End Sub
※ 画像のように、テキストボックスの「有効期日周期」は単に数値のみの入力としています。
※ 今回も細かいエラー処理はしていません。
足りに「有効期日周期」が空白だとエラーになります。
※ CDate関数をお使いのようですが、
当方の認識ではシリアル値に変換可能な文字列だけがシリアル値に変換可能だと思っていますので、
単に数値の羅列ではシリアル値とは認識されないと思います。m(_ _)m
No.2
- 回答日時:
Private Sub 実行日_Enter()
Dim dt As Date
Dim dy As Date
Dim s As String
Me.実行日 = dt
Me.有効期日=dy
テキストボックスの実行日に[20200531]と入力したら[2020/05/31]と
変換できるプログラムを作りたい。のですが、
S = "20200531"
dt = CDate(Format(s, "####/##/##"))
のプログラムでもデバックが表示されてどこがわるいのかもわかりません。
If Me.有効期日周期.Value = "1年" Then <= 有効期日周期の前にMe.がありません。
d = DateAdd("yyyy", 1, dt) ' 年
Me.有効期日 = d
End If
End Sub
No.1
- 回答日時:
質問内容をよく理解できてません(何年たっても初級者ですので)が、多分こういう事なのかな?と回答してみます。
Private Sub 実行日_Enter()
Dim dt As Date
Dim dy As Date
Dim s As String
'Me.実行日 = dt '変数に何も入れていないのですけど?
'Me.有効期日 = dy '上記同様
s = "20200531"
s = Format(CLng(s), "0000/00/00")
Me.実行日.Text = s
If 有効期日周期.Text = "1年" Then
dt = CDate(s)
dy = DateAdd("yyyy", 1, dt) ' 年
Me.有効期日.Text = CStr(dy)
End If
End Sub
もし違うようでしたらベテランさんの回答を待っててください。
めぐみんさん
ありがとうございました。
全然詳しいです!!
『'Me.実行日 = dt '変数に何も入れていないのですけど?
'Me.有効期日 = dy '上記同様 』
をdt = Me.実行日 に変えたら変数を入れたことになるのでしょうか?
(わからなくて、すみません。)
dt = Me.実行日にして実行したら、デバックがでて黄色になります。
dt = Me.実行日は、プログラムの中で実行日を入力する代わりに、dtをいれるのかと思っていました。(dt=実行日)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excel実行時エラー-2146959355?
IT・エンジニアリング
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PC版のMinecraftが応答なしにな...
-
Excel実行時エラー-2146959355?
-
パソコンに何かが勝手にダウン...
-
Pythonについて
-
chatGPTで次々と質問をしていく...
-
VBA 作成中のプログラムを使っ...
-
たまにマクロを実行できないと...
-
エクセルVBA、ステップモードと...
-
VB.NETでボタンのクリックイベ...
-
latexでのエラー
-
プロパティの値が不正ですって...
-
COBOLで集団項目から符号...
-
初めてパソコンを買いました。
-
管理者として実行を毎回すると...
-
【HTML】INPUTの値を引数にBAT起動
-
centos6.5にGUI関連をインスト...
-
A-oneのラベル屋さんについて
-
pdfファイルを閲覧しようとする...
-
VisualStudioからVScodeへの移植
-
Craving Explorerのバージョン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンに何かが勝手にダウン...
-
Excel実行時エラー-2146959355?
-
PC版のMinecraftが応答なしにな...
-
管理者として実行を毎回すると...
-
VB.NETでボタンのクリックイベ...
-
パソコンのスクリーンセーバー...
-
Windows10 で青鬼を遊びたいの...
-
エクセルVBA、ステップモードと...
-
latexでのエラー
-
プログラム実行中に強制停止さ...
-
eclipseで、「ポート番号が使用...
-
COBOLで集団項目から符号...
-
EXCEL-VBAでコマンド...
-
ATOMは何の略ですか
-
実行中のVBSをタスクバーに非表...
-
起動したアプリケーションを最...
-
VBA コントロールパネルの機能...
-
VBA中断モードの解除
-
chatGPTで次々と質問をしていく...
-
pythonで他のアプリを操作する...
おすすめ情報