プロが教えるわが家の防犯対策術!

こんばんは
変数 shetに「2007年2月」という文字列がはいっております。
これをそれぞれ2007と2に分けるため、いかのようにいたしました。
もうすこしスマートに記載する方法はございませんでしょうか。
(変数や配列などをこのために2つ使っており非常に見にくいと思っているため)

tmps = Split(shet, "年")
qw = tmps(0)
qw1 = tmps(1)
tmps1 = Split(qw1, "月")
qr = tmps1(0)

以上 宜しくおねがいいたします。

A 回答 (4件)

二種類のマクロを提示します。

Basp21 というのは、フリーのPerl ライクの正規表現オブジェクトです。VBAは、Lispのような言語ではないので、それなりの書き方に決まってきてしまいます。

Sub TextConvert()
 Dim text_date As String
 Dim bufDate As Variant
 Dim y As Integer, m As Integer
 text_date = "2007年2月"
 bufDate = DateValue(text_date)
 y = Year(bufDate)
 m = Month(bufDate)
End Sub

'Basp21の利用で、配列に入れる場合
Sub Basp21Test()
'配列に入れるなら、PerlライクのBasp21で切り分けます
 Dim text_date As String
 Dim bufDate As Variant
 Dim y As Integer, m As Integer
 Dim ar
 Dim bobj As Object
 Set bobj = CreateObject("Basp21")
 text_date = "2007年2月"
 ar = bobj.Split("/[年月]/kg", text_date)
 y = ar(0)
 m = ar(1)
End Sub
    • good
    • 0

あ、それでもいけるんだ。


日付変換しなくていいんだね。
勉強になったよ。
ありがとう。
    • good
    • 0

月を年で置き換えてから年でsplitする。


tmps = Split(Replace(shet, "月", "年"), "年")
qw = tmps(0)
qr = tmps(1)

No1の方の方法だと
qw = Year(shet & "1日")
qr = Month(shet & "1日")
なので、1ステップ短くて済みますね。
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございました。
いろいろなやりかたがあるんですね。
NO1のかたの方法も記載いただきありがとうございました。

お礼日時:2017/02/15 05:07

1日をくっつけて、


日付に変換して、
取り出す。
    • good
    • 0
この回答へのお礼

lこんばんは

どうもありがとうございます。

これでなんとかなりました。

Sub Sample2()
shet = "2017年2月"

MsgBox Format(shet, "yyyy")
MsgBox Format(shet, "m")

a = Format(shet, "yyyy")
b = Format(shet, "m")
End Sub

お礼日時:2017/02/13 23:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!