Excel VBA質問箱 IV

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

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


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

【22488】H17.2.22(火)から(火)を取りたい ponpon 05/2/22(火) 20:34 質問[未読]
【22493】Re:H17.2.22(火)から(火)を取りたい かみちゃん 05/2/22(火) 21:24 発言[未読]
【22494】Re:H17.2.22(火)から(火)を取りたい ponpon 05/2/22(火) 21:42 お礼[未読]
【22495】Re:H17.2.22(火)から(火)を取りたい ponpon 05/2/22(火) 22:16 お礼[未読]
【22496】Re:H17.2.22(火)から(火)を取りたい ponpon 05/2/22(火) 22:21 発言[未読]
【22517】Re:H17.2.22(火)から(火)を取りたい Jaka 05/2/23(水) 11:26 回答[未読]
【22561】Re:H17.2.22(火)から(火)を取りたい ponpon 05/2/23(水) 19:05 発言[未読]

【22488】H17.2.22(火)から(火)を取りたい
質問  ponpon  - 05/2/22(火) 20:34 -

引用なし
パスワード
    ponponです。こんばんは。
 初心者から脱却するために自分のわかるところを積極的に回答しているのですが、表題のことすらできません。

 sheet1のA1にある日付が入力されています。
 そこで、ユーザーフォームのテキストボックスにその次の日を表示させて、
 コマンドボタンをクリックするとその値をsheet2のA1に入力したいのですが、
表示形式がうまくいきません。

sheet1のA1に2005/2/22が入っているとして、
Private Sub UserForm_Initialize()
 TextBox1.text = Format(WorkSheets("sheet1").Range("A1").Value + 1 , _
 "ge.m.d(aaa)")
End sub

Private Sub CommandButton1_Click()
 WorkSheets("sheet2").Range("A1").Value = Format(TextBox1.text,"ge.m.d")
とやっても、

 テキストボックスにはH17.2.22(火)が表示され、
 シート2のA1には、H17.2.22と表示したのですが、H17.2.22(火)と表示されてしまします。

それで今は、

Private Sub UserForm_Initialize()
 TextBox1.text = Format(WorkSheets("sheet1").Range("A1").Value + 1 , _
 "ge.mm.dd(aaa)")
End sub

Private Sub CommandButton1_Click()
 WorkSheets("sheet2").Range("A1").Value = Left(TextBox1.text,9)

とやっていますが、(火)を取る方法は、これしかないですかね?
よろしくお願いします。

【22493】Re:H17.2.22(火)から(火)を取りたい
発言  かみちゃん  - 05/2/22(火) 21:24 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> sheet1のA1にある日付が入力されています。
> そこで、ユーザーフォームのテキストボックスにその次の日を表示させて、
> コマンドボタンをクリックするとその値をsheet2のA1に入力したいのですが、
>表示形式がうまくいきません。

仕様が今ひとつよくわからないのですが、
コマンドボタンをクリックすると、Sheet1のA1にある日付の次の日を表示してはい
けないのでしょうか?
テキストボックスに表示して何か編集するならわかるのですが・・・

> WorkSheets("sheet2").Range("A1").Value = Format(TextBox1.text,"ge.m.d")

TextBox1.Text は、文字列ですから、Format(TextBox1.text,"ge.m.d") は、変換
できません。

>  テキストボックスにはH17.2.22(火)が表示され、
> シート2のA1には、H17.2.22と表示したのですが、H17.2.22(火)と表示されてしまします。

次の日なのだから、「H17.2.23(水)」では?

> WorkSheets("sheet2").Range("A1").Value = Left(TextBox1.text,9)

「H17.2.23(」になりませんか?
WorkSheets("sheet2").Range("A1").Value = Left(TextBox1.text,8)
としたとき「H17.11.12」などは対応できませんから、別の方法を考えないといけないでしょう。

たとえば、こんな感じ。
Worksheets("sheet2").Range("A1").Value = Replace(TextBox1.Text, Right(TextBox1.Text, 3), "")

【22494】Re:H17.2.22(火)から(火)を取りたい
お礼  ponpon  - 05/2/22(火) 21:42 -

引用なし
パスワード
   ▼かみちゃん さん:
いつもお世話になってます。
>仕様が今ひとつよくわからないのですが、
>コマンドボタンをクリックすると、Sheet1のA1にある日付の次の日を表示してはい
>けないのでしょうか?
>テキストボックスに表示して何か編集するならわかるのですが・・・
 はい、実際は、スピンボタンを用いて・・・・うん?
 できるかも・・・・・
 後でやってみます。
>
>> WorkSheets("sheet2").Range("A1").Value = Format(TextBox1.text,"ge.m.d")
>
>TextBox1.Text は、文字列ですから、Format(TextBox1.text,"ge.m.d") は、変換
>できません。
やっぱり、そうですよね。
datevalueを用いてやってみましたが、だめでした。

>>  テキストボックスにはH17.2.22(火)が表示され、
>> シート2のA1には、H17.2.22と表示したのですが、H17.2.22(火)と表示されてしまします。
>
>次の日なのだから、「H17.2.23(水)」では?
はい、間違いです。すみません。

>> WorkSheets("sheet2").Range("A1").Value = Left(TextBox1.text,9)
>
>「H17.2.23(」になりませんか?
>WorkSheets("sheet2").Range("A1").Value = Left(TextBox1.text,8)
>としたとき「H17.11.12」などは対応できませんから、別の方法を考えないといけないでしょう。
>
>たとえば、こんな感じ。
>Worksheets("sheet2").Range("A1").Value = Replace(TextBox1.Text, Right(TextBox1.Text, 3), "")
Replace関数は使ったことがないので、ヘルプで調べてやってみます。
まずは、お礼まで。

【22495】Re:H17.2.22(火)から(火)を取りたい
お礼  ponpon  - 05/2/22(火) 22:16 -

引用なし
パスワード
   かみちゃんさんへ

>>コマンドボタンをクリックすると、Sheet1のA1にある日付の次の日を表示してはい
>>けないのでしょうか?
>>テキストボックスに表示して何か編集するならわかるのですが・・・
> はい、実際は、スピンボタンを用いて・・・・うん?
> できるかも・・・・・
> 後でやってみます。

このヒントでできました。
(元の日付+1)にスピンボタンのvalueを加えたものを表示することで解決しました。
テキストボックスに表示されている値を何とかしてシートに表示しようとしたことが、失敗の元でした。テキストボックスに何を表示させているかということに気づけば、解決できたと思います。

>たとえば、こんな感じ。
>Worksheets("sheet2").Range("A1").Value = Replace(TextBox1.Text, Right(TextBox1.Text, 3), "")
についてはについても、ヘルプで調べて納得しました。
Replace 置き換えですね。
後ろ3文字(火)を""に。
こちらの方を採用させていただきます。ありがとうございました。

【22496】Re:H17.2.22(火)から(火)を取りたい
発言  ponpon  - 05/2/22(火) 22:21 -

引用なし
パスワード
   >後ろ3文字(火)を""に。

右からですね。

【22517】Re:H17.2.22(火)から(火)を取りたい
回答  Jaka  - 05/2/23(水) 11:26 -

引用なし
パスワード
   こんにちは。

もしかしてこれのこと?
Range("A1").NumberFormatLocal = "ge.m.d"

【22561】Re:H17.2.22(火)から(火)を取りたい
発言  ponpon  - 05/2/23(水) 19:05 -

引用なし
パスワード
   ▼Jaka さん:
>こんにちは。
ponponです。こんばんは。
解決済みですが、
>もしかしてこれのこと?
>Range("A1").NumberFormatLocal = "ge.m.d"

試しに↓しましたが、(火)は、とれませんでした。

Private Sub UserForm_Initialize()
  TextBox1.Text = Format(Range("B1").Value, "ge.m.d(aaa)")
End Sub

Private Sub CommandButton1_Click()
  With Range("A1")
    .NumberFormatLocal = "ge.m.d"
    .Value = TextBox1.Text
  End With
End Sub

1、日付入力済みのセルの値を
  ユーザーフォームのテキストボックスに"ge.m.d(aaa)"で取り込む。

2、スピンボタンで日付を調整して、コマンドボタンクリックで
   セルに、"ge.m.d"で表示する。
  と、まあこうゆうことなのです。
これができなかったのですが、かみちゃんの指摘で解決できました。

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