[[20040506114452]] 『B2から横にその日付が横に並ぶように』(pink) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『B2から横にその日付が横に並ぶように』(pink)

[初心者です・・・。フォームを作ってテキストBOXに○月○日〜○月□日と書いて実行ボタン(コマンドボタン)を押すと、エクセルの方(B2)から横にその日付が横に並ぶように表示出来るようにしたいのですができますか?教えてください。]


 テキストボックスやコマンドボタンですと自動的にVBAで、という話になりますが、
通常機能で十分対応できます。
○月○日をB1、〜をC1、○月□日をD1へ入力するとします。
つまり、B1とD1へ日付を入力するような形です。
B2
=IF(B1,B1,"")
C2
=IF(OR(B2="",$D$1=B2),"",B2+1)

 C2の式を列方向へコピーして必要数確保します。
2行目の日付が入るセルの書式設定を日付にしておけば完成。
(もしかしたらVBAのコードを教えてほしかったんでしょうか?)
(KAMIYA)


説明が不十分ですみません。それとはちょっと違うんです・・・。
例えば「4月10日〜4月15日」と入れて実行をすると、エクセルの方にB1には4月10日、C1には4月11日、D1には4月12日・・・と言うふうに表示されるようにしたいのですがその方法があれば教えてほしいです。(pink)


 そのようになっていますが?
>エクセルの方(B2)から横にその日付が横に並ぶように
とあったので、B2からの数式入力になっています。
それとも、フォームというのはシートに作成する定型フォームのようなものではなくて、
「ユーザーフォーム」のことでしょうか。
(KAMIYA)


フォームというのは、ユーザーフォームのことです。エクセルにボタンを作り、押すとユーザーフォームが出てきてそこに「4月10日〜4月15日」と書いてボタンを押すと表示されるようにしたいのですが・・・
(pink)


 ユーザーフォームのひとつのテキストボックスへ「4月10日〜4月15日」を
「手入力」ですか? あまりお勧めできませんが・・・。
 Private Sub CommandButton1_Click()
 Dim SDate As Date
 Dim Edate As Date
 Dim MyVar As Variant
 Dim MyDays As Integer
 Dim MyRng As Range

     With ActiveSheet
         Set MyRng = .Range("B1")
         If MyRng.Value <> "" Then
             .Range(MyRng, MyRng.End(xlToRight)).ClearContents
         End If
     End With
     MyVar = Split(Me.TextBox1.Value, "〜")
     SDate = MyVar(0)
     Edate = MyVar(1)
     MyDays = Edate - SDate
     For i = MyRng.Column To MyDays + MyRng.Column
         MyRng.Offset(, i - MyRng.Column) = SDate + i - MyRng.Column
     Next i
 End Sub
 
全半角数字お構いなし、m月d日、m/dのどちらでも入力はOKですが、
「〜」だけは固定です。入力された日付は当年の日付として認識されます。
(KAMIYA)


KAMIYAさん何回もすいません。
では、テキストBOXを一つではなく、月で一つ、日にちで一つ、ラベルで〜、月で一つ、日にちで一つ、と言うのはできますか?
(pink)


 Dim MyVar As Variant
 MyVar = Split(Me.TextBox1.Value, "〜")
以上は不用。
     SDate = MyVar(0)
     Edate = MyVar(1)
この部分で、MyVar(0)、MyVar(1)の部分を、
テキストボックスで入力した月日から作成した日付の文字列へ
置き換えればよいのです。
(KAMIYA)

テキストボックスで入力した月日から作成した日付の文字列へ
置き換えると言うのはどうやったらいいですか?
(pink)

 月と日のテキストボックスの値と文字列"/"を文字列演算子&で結合して
日付形式の文字列を作成し、それぞれSdate、EDateへ代入します。
具体的なコントロール名までわからないので、そちらで変更する必要が
あるかもしれませんが、Sdate(開始日)の場合は
     SDate = Me.TextBox1.Value & "/" & Me.TextBox2.Value
コンナ感じでしょう。もうかたっぽはこれを手本に作ってみておくんなさいまし。
 
Sdate、EDateはそれぞれ日付型の変数なので、日付形式の文字列代入で
自動的に日付データとして代入してくれます。
 
日付型のデータはワークシートの値として入力することでエクセル側でシリ
アル値に変換されます。
ちなみに、年をまたぐ場合は「年」のテキストボックスも必要です。
(KAMIYA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.