Excel VBA質問箱 IV

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

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


6732 / 13644 ツリー ←次へ | 前へ→

【43450】表示方法の変更 kazu 06/10/16(月) 16:37 質問[未読]
【43454】Re:表示方法の変更 立ち寄り 06/10/16(月) 18:06 回答[未読]
【43464】Re:表示方法の変更 kazu 06/10/16(月) 20:04 発言[未読]
【43475】Re:表示方法の変更 立ち寄り 06/10/16(月) 23:47 回答[未読]
【43480】Re:表示方法の変更 kazu 06/10/17(火) 1:48 発言[未読]
【43484】Re:表示方法の変更 ichinose 06/10/17(火) 8:31 発言[未読]
【43485】Re:表示方法の変更 立ち寄り 06/10/17(火) 9:37 回答[未読]
【43455】Re:表示方法の変更 ichinose 06/10/16(月) 18:13 発言[未読]
【43462】Re:表示方法の変更 kazu 06/10/16(月) 19:58 お礼[未読]

【43450】表示方法の変更
質問  kazu  - 06/10/16(月) 16:37 -

引用なし
パスワード
   セルA1に1と入力でセルA1に1月1日と表示
また、セルA1に2と入力でセルA1に2月1日と表示
つまり1と入れたら1月1日、2と入れたら2月1日、3と入れたら3月1日、
・・・・・12と入れたら12月1日と表示するには。
ただし、12月になって1と入れた時は、来年の年月日で表示するように。
で回答をもらいありがとうございました。
Private Sub Worksheet_Change(ByVal Target As Range)
 Const addr = "$a$1"
 Dim rng As Range
 With Application
  .EnableEvents = False
  Set rng = .Intersect(Range(addr), Target)
  If Not rng Is Nothing Then
   With Target
    .NumberFormatLocal = "標準"
     If Val(.Value) >= 1 And Val(.Value) <= 12 Then
    .Value = DateSerial(IIf(Month(Date) = 12 And Val(.Value) <> 12, _
          Year(Date) + 1, Year(Date)), Val(.Value), 1)
       Else
         MsgBox "nogood"
         End If
       End With
     End If
    .EnableEvents = True
    Set rng = Nothing
    End With
End Sub
セルA1に1と入力すると2006/1/1と表示します。
この表示方法を1月1日と表示するにはどのようにすればいいのですか。
よろしくお願いします。

【43454】Re:表示方法の変更
回答  立ち寄り  - 06/10/16(月) 18:06 -

引用なし
パスワード
   このプログラムはあなたが作成されたものですよね?
このプログラム理解した上で質問されていますか?

下記の命令で属性指定しているのですから質問通り
2006/1/1となります。
あとはマクロで記録をとって1月1日と表示するよう
確認してみてはどうですか?

.NumberFormatLocal = "標準"
    

【43455】Re:表示方法の変更
発言  ichinose  - 06/10/16(月) 18:13 -

引用なし
パスワード
   ▼kazu さん:
こんばんは。

Private Sub Worksheet_Change(ByVal Target As Range)
 Const addr = "$a$1"
 Dim rng As Range
 With Application
  .EnableEvents = False
  Set rng = .Intersect(Range(addr), Target)
  If Not rng Is Nothing Then
    With Target
     .NumberFormatLocal = "標準"
     If Val(.Value) >= 1 And Val(.Value) <= 12 Then
       .Value = DateSerial(IIf(Month(Date) = 12 _
           And Val(.Value) <> 12, _
           Year(Date) + 1, Year(Date)), Val(.Value), 1)
       .NumberFormatLocal = "m""月""d""日"""
     Else
       MsgBox "nogood"
       End If
     End With
    End If
  .EnableEvents = True
  Set rng = Nothing
  End With
End Sub

でためしてみてください。
でも、これだと今年と来年1月1日の区別が付かなくなりますけどね!!

【43462】Re:表示方法の変更
お礼  kazu  - 06/10/16(月) 19:58 -

引用なし
パスワード
   ▼ichinose さん:
回答ありがとうございました。
おかげさまで、思ったように出来ました。

   

【43464】Re:表示方法の変更
発言  kazu  - 06/10/16(月) 20:04 -

引用なし
パスワード
   こちらは、VBAは超初心者の為、そんな回答ではわかりません。
このプログラムも教えてもらったものです。
ほかの人の回答で解決しました。

【43475】Re:表示方法の変更
回答  立ち寄り  - 06/10/16(月) 23:47 -

引用なし
パスワード
   >こちらは、VBAは超初心者の為、そんな回答ではわかりません。
>このプログラムも教えてもらったものです。

ここはシステム作成上どうしてもわからない人が
質問する場所です。
努力するかけらもなくて人にプログラム作成してもらって
理解もしていないのに質問してこないで下さい。

【43480】Re:表示方法の変更
発言  kazu  - 06/10/17(火) 1:48 -

引用なし
パスワード
   ▼立ち寄り さん:
>ここはシステム作成上どうしてもわからない人が
>質問する場所です。
>努力するかけらもなくて人にプログラム作成してもらって
>理解もしていないのに質問してこないで下さい。

そう思う考えがあるのでしたら、わざわざ答えなくてもいいと思いますし、
最初から無視していてくれたらいいですのに。
人には色々な人がいます。丸投げとわかっていても、親切な人もいます。

【43484】Re:表示方法の変更
発言  ichinose  - 06/10/17(火) 8:31 -

引用なし
パスワード
   kazu さん、立ち寄り さん、おはようございます。

>そんな回答ではわかりません。
う〜ん、これは、回答投稿(ヒントになる投稿はきちんとされています)を
された方に対してちょっと可哀想な記述ですね!!

私が投稿した直後に立ち寄り さんの投稿には気が付いていましたが、

.NumberFormatLocal = "標準"

という箇所を

.NumberFormatLocal = "m""月""d""日"""

に変更しただけでは正しく作動しないし、
Val関数が日付データに対して返す結果も理解しづらいだろうと判断し、
コードを投稿しましたが、

実際に上記の箇所のみの変更ではどのような結果になるか

を試してみることも決して無駄なことではありませんよ!!

その上で

「上記のように変更してみましたが、結果は、xxxxとなり
うまく作動されませんでした」

という投稿をkazu さんがされることを次回は期待します。


>人には色々な人がいます。丸投げとわかっていても、親切な人もいます。

私は、丸投げだと思っても私の判断で
(殆どは、私もここに勉強しに来ていますから、私自身のためという理由で)
投稿する場合がありますが、このサイトの管理人さんは

http://www.vbalab.net/bbspolicy.html

(VBA質問箱基本ポリシー)

ここで

「していけない質問」と題して、
 丸投げ
   「○○するにはどうすればいいか教えてください」といったような、
   コードを最初から最後まで教えてもらうことを期待するような質問

と記述しています。

この方は、私たちのためにこういう場を提供してくださっています。
管理人さんの意向に沿った掲示板にしていきましょう!!

【43485】Re:表示方法の変更
回答  立ち寄り  - 06/10/17(火) 9:37 -

引用なし
パスワード
   ▼ichinose さん:
フォローありがとうございます。
私は初心者だろうと困った場合に質問する
場だと思います。
私もヒントを提供しただけですぐに解決できる
とは思っていません。
ただ質問者さんには少しでも努力した証がほしかった。
そうすればこちらも一緒に解決していく努力をするために
親身になれるしお互いのスキルアップにもなると思います。

私はこの件に関してはこれ以上コメントしません。
せっかく管理人さんが提供してくれているので
ルールを守って誰でも利用できるような掲示板に
なることを願っています。

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