Excel VBA質問箱 IV

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

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


5321 / 13646 ツリー ←次へ | 前へ→

【51504】元の値の記憶方法 アルジ 07/9/21(金) 13:34 質問[未読]
【51509】Re:元の値の記憶方法 ハチ 07/9/21(金) 14:20 発言[未読]
【51512】Re:元の値の記憶方法 アルジ 07/9/21(金) 14:39 質問[未読]
【51521】Re:元の値の記憶方法 ハチ 07/9/21(金) 16:39 発言[未読]
【51527】Re:元の値の記憶方法 アルジ 07/9/21(金) 17:45 お礼[未読]

【51504】元の値の記憶方法
質問  アルジ  - 07/9/21(金) 13:34 -

引用なし
パスワード
   お世話になります。アルジです。
エクセル2000でユーザーフォーム上の話です。
d1のテキストボックスに”特休”と入力すると
h1が-1されるプログラムなんですが
”特休”と書かれた後に特休以外の文字にしたら
h1のデータを元の値に戻したいのですが、
どうしたらいいでしょうか。
下記のプログラムではうまくいきません
ちなみにd1〜d31、h1〜h31(31日分)ありあまり
変数を増やしたくないと思ってます。

Dim hozon as Long

Private Sub d1_Change()

Dim row As Long
  If d1.Value = "特休" Then
    If h1 <> "" Then
      hozon = h1
      h1 = h1 - 1
    End If
  Else
    h1 = hozon
  End If
    row = 1
    While row < 31
      row = row + 1
      If Me.Controls("h" & row) <> "" Then
        Me.Controls("h" & row) = h1
       End If
    Wend
End sub

【51509】Re:元の値の記憶方法
発言  ハチ  - 07/9/21(金) 14:20 -

引用なし
パスワード
   ▼アルジ さん:
>お世話になります。アルジです。
>エクセル2000でユーザーフォーム上の話です。
>d1のテキストボックスに”特休”と入力すると
>h1が-1されるプログラムなんですが
>”特休”と書かれた後に特休以外の文字にしたら
>h1のデータを元の値に戻したいのですが、
>どうしたらいいでしょうか。
>下記のプログラムではうまくいきません
>ちなみにd1〜d31、h1〜h31(31日分)ありあまり
>変数を増やしたくないと思ってます。
>
>Dim hozon as Long
>
>Private Sub d1_Change()
>
>Dim row As Long
>  If d1.Value = "特休" Then
>    If h1 <> "" Then
>      hozon = h1
>      h1 = h1 - 1
>    End If
>  Else
>    h1 = hozon
>  End If
>    row = 1
>    While row < 31
>      row = row + 1
>      If Me.Controls("h" & row) <> "" Then
>        Me.Controls("h" & row) = h1
>       End If
>    Wend
>End sub

どううまくいかないのか? を書かないと
アドバイスは難しいです。

パッと見で・・・
>If Me.Controls("h" & row) <> "" Then
>Me.Controls("h" & row) = h1
このあたりのプロパティを指定してない とかですかね?

もしくは・・・
Dim hozon as Long
の変数を使いまわしていることで、
他のイベントで発生した値が入っているとか。

あとは・・・
row という変数名は辞めたほうが良いです。

【51512】Re:元の値の記憶方法
質問  アルジ  - 07/9/21(金) 14:39 -

引用なし
パスワード
   ▼ハチ さん:
>どううまくいかないのか? を書かないと
>アドバイスは難しいです。
>
>パッと見で・・・
>>If Me.Controls("h" & row) <> "" Then
>>Me.Controls("h" & row) = h1
>このあたりのプロパティを指定してない とかですかね?
>
>もしくは・・・
>Dim hozon as Long
>の変数を使いまわしていることで、
>他のイベントで発生した値が入っているとか。
>
>あとは・・・
>row という変数名は辞めたほうが良いです。

返信ありがとうございます。
よくみてみたらhozonに初期値を入れるの忘れてました。
すいません。
しかし、この方法だとhozon変数を31個も作らないと
(都合により62個)いけなくなり駄々書きになって
しまいます。どうにかできないでしょうか?

【51521】Re:元の値の記憶方法
発言  ハチ  - 07/9/21(金) 16:39 -

引用なし
パスワード
   ▼アルジ さん:

>しかし、この方法だとhozon変数を31個も作らないと
>(都合により62個)いけなくなり駄々書きになって
>しまいます。どうにかできないでしょうか?


別案としては、
WorkSheet上の別のセルに値を保存して置くとか。

変数も配列にできますので、
Dim hozon(1 To 31)

hozon(i)

とすれば、すっきりするとは思いますが、
考え方としては変わりませんよね?^^;

【51527】Re:元の値の記憶方法
お礼  アルジ  - 07/9/21(金) 17:45 -

引用なし
パスワード
   ▼ハチ さん:
>
>別案としては、
>WorkSheet上の別のセルに値を保存して置くとか。
>
>変数も配列にできますので、
>Dim hozon(1 To 31)
>
>hozon(i)
>
>とすれば、すっきりするとは思いますが、
>考え方としては変わりませんよね?^^;

ハチさん返信ありがとうございます。
そんな方法があるんですね。
素人ですいません。参考になりました。

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