Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2075 / 13645 ツリー ←次へ | 前へ→

【70154】11.9.2を11.09.02に変更するには? ごん 11/10/17(月) 16:25 質問[未読]
【70155】Re:11.9.2を11.09.02に変更する... kanabun 11/10/17(月) 17:24 発言[未読]
【70158】Re:11.9.2を11.09.02に変更する... ごん 11/10/18(火) 9:02 質問[未読]
【70169】Re:11.9.2を11.09.02に変更する... kanabun 11/10/18(火) 12:53 発言[未読]
【70173】Re:11.9.2を11.09.02に変更する... ごん 11/10/18(火) 13:59 お礼[未読]

【70154】11.9.2を11.09.02に変更する...
質問  ごん  - 11/10/17(月) 16:25 -

引用なし
パスワード
   日付を11.09.02の形式で記述してほしいのですが、人によっては、
11.9.2と入力してしまいます。

マクロで一括して正しい記述に変更できませんか?

実際のデーターはG列の3行目から下に入力されています。

また、全角が混ざっているかも知れませんが、数字、ドットともに、
半角が正解です。

【70155】Re:11.9.2を11.09.02に変更す...
発言  kanabun  - 11/10/17(月) 17:24 -

引用なし
パスワード
   ▼ごん さん:
>日付を11.09.02の形式で記述してほしいのですが、人によっては、
>11.9.2と入力してしまいます。

参考です
文字列形式を日付型の値に変更し、書式を[yy.mm.dd]にして表示しています。

Sub Try1()
  Dim r As Range
  Dim v, i As Long
  Set r = [G3:G10]
  v = Application.Substitute(Application.Asc(r), ".", "/")
  r.NumberFormat = "yy.mm.dd"
  For i = 1 To UBound(v)
    v(i, 1) = CDate("20" & v(i, 1))
  Next
  r.Value = v
End Sub

> G列の3行目
範囲は変更してください。

【70158】Re:11.9.2を11.09.02に変更す...
質問  ごん  - 11/10/18(火) 9:02 -

引用なし
パスワード
   ▼kanabun さん:

回答ありがとうございます。

ちょっと教えていただきたいのですが、
どうしてvは2次元の配列になるのでしょうか?

G列のデータなら1次元の配列で良いと思うのですが、
そう思って1次元にしてみたら動きませんでしたが。


>  For i = 1 To UBound(v)
>    v(i, 1) = CDate("20" & v(i, 1))  ← どうしてv(i)ではダメなの?
>  Next


また、申し訳ありませんが、02.03.05などとして入力していたデータが2002.03.05
と、別の値に変わるのも好ましくなりません。

できれば、日付という概念は無しで、
単純に、2桁の数字ドット2桁の数字ドット2桁の数字という記述に変えるという
考えで、お願いできないでしょうか?

【70169】Re:11.9.2を11.09.02に変更す...
発言  kanabun  - 11/10/18(火) 12:53 -

引用なし
パスワード
   ▼ごん さん:

>また、申し訳ありませんが、02.03.05などとして入力していたデータが2002.03.05
>と、別の値に変わるのも好ましくなりません。
>
>できれば、日付という概念は無しで、
>単純に、2桁の数字ドット2桁の数字ドット2桁の数字という記述に変えるという
>考えで、お願いできないでしょうか?

Sub Try2()
  Dim r As Range
  Dim u, v, i As Long, j As Long
  Set r = [G3:G10]
  v = Application.Asc(r)
  For i = 1 To UBound(v)
    u = Split(v(i, 1), ".")
    For j = 0 To UBound(u)
      u(j) = Format$(u(j), "00")
    Next
    v(i, 1) = Join(u, ".")
  Next
  r.Value = v
End Sub


>どうしてvは2次元の配列になるのでしょうか?

セル範囲の値をVariant型の配列に取り込むと、
セルの行番号、列番号と同じ形で格納されます。
一行でも
(1,1) (1,2) (1,3) (1,4) ...
ですし、

1列でも
(1,1)
(2,1)
(3,1)
(4,1)
 :
です。

【70173】Re:11.9.2を11.09.02に変更す...
お礼  ごん  - 11/10/18(火) 13:59 -

引用なし
パスワード
   ▼kanabun さん:
回答ありがとうございました。
配列の件も理解できました。
(たぶん、時間が経つと忘れてしまいそう)

2075 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free