Excel VBA質問箱 IV

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

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


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

【35883】サブルーチンについて 山口 06/3/15(水) 13:49 質問[未読]
【35885】Re:サブルーチンについて Blue 06/3/15(水) 14:00 回答[未読]
【35886】Re:サブルーチンについて 小僧 06/3/15(水) 14:11 発言[未読]
【35890】Re:サブルーチンについて 山口 06/3/15(水) 15:23 質問[未読]
【35891】Re:サブルーチンについて Blue 06/3/15(水) 15:28 回答[未読]
【35892】Re:サブルーチンについて Blue 06/3/15(水) 15:36 発言[未読]
【35900】Re:サブルーチンについて 山口 06/3/15(水) 17:06 お礼[未読]

【35883】サブルーチンについて
質問  山口  - 06/3/15(水) 13:49 -

引用なし
パスワード
   ユーザーフォームを表示し
ボタン1をクリックしたら
セルC3の値によりD3に曜日を
ボタン2をクリックしたら
セルC4の値によりD4に曜日を表示させるマクロです。
セルC3、C4にはWEEKDAY関数を使用して曜日のシリアル値(戻り値)
を出しています。

Private sub Commandbutton1_Click()
を実行しても
戻り値=range("C3").value
には戻り値に例えば「4」と値が代入されますが

Select Case 戻り値
には「4」は認識されてないみたいです。
結果的にセルD3に曜日が表示されません。
どこを修正すればよいですか
ご教示ください。


Private sub Commandbutton1_Click()
 戻り値=range("C3").value
 曜日検索
 Range("d3").value=曜日
End sub

Private sub Commandbutton2_Click()
 戻り値=range("C4").value
 曜日検索
 Range("d4").value=曜日
End sub

Sub 曜日検索()
Select Case 戻り値
 Case1
  曜日="日"
 Case2
  曜日="月"
 Case3
  曜日="火"
 Case4
  曜日="水"
 Case5
  曜日="木"
 Case6
  曜日="金"
 Case7
  曜日="土"
 End Select
End sub

【35885】Re:サブルーチンについて
回答  Blue  - 06/3/15(水) 14:00 -

引用なし
パスワード
   引数として渡してあげればよいのでは?

> 曜日検索
曜日検索 戻り値

> Sub 曜日検索()
Sub 曜日検索(ByVal 戻り値)


それと、全体的に変数宣言をしたほうが良いと思いますよ。

【35886】Re:サブルーチンについて
発言  小僧  - 06/3/15(水) 14:11 -

引用なし
パスワード
   ▼山口さん、Blue さん:
こんにちは。

>>セルC3の値によりD3に曜日を

VBAの勉強としてサブルーチンを作っているのでしたら読み飛ばしてください。


Private Sub CommandButton1_Click()
  Range("D3").Value = Format(Range("C3").Value, "aaa")
End Sub

でもできそうですね。

【35890】Re:サブルーチンについて
質問  山口  - 06/3/15(水) 15:23 -

引用なし
パスワード
   ▼Blue さん:
>引数として渡してあげればよいのでは?
>
>> 曜日検索
>曜日検索 戻り値
>
>> Sub 曜日検索()
>Sub 曜日検索(ByVal 戻り値)
>
>
>それと、全体的に変数宣言をしたほうが良いと思いますよ。
Blue様

ありがとうございます。

Select Case文で
曜日に「水」と代入できました。
ただ
Private Sub CommandButton1_Clict1()
に戻って
Range("D3").Value=曜日
の曜日には「水」が認識されていないみたいです。
色々試してみましたが答えが見つかりませんでした。
ご教授願えたらと思います。

【35891】Re:サブルーチンについて
回答  Blue  - 06/3/15(水) 15:28 -

引用なし
パスワード
   Subステートメントはそういうものです。

値を返したいのならば Function にしないといけません。

>  曜日検索 戻り値
曜日 = 曜日検索(戻り値)


> Sub 曜日検索(ByVal 戻り値)
Function 曜日検索(ByVal 戻り値) As String


> End Select
> End sub
  End Select
  曜日検索 = 曜日
End sub

【35892】Re:サブルーチンについて
発言  Blue  - 06/3/15(水) 15:36 -

引用なし
パスワード
   ちなみに、最初の返信で
> それと、全体的に変数宣言をしたほうが良いと思いますよ。
をしたと思いますが、最初のコードに全て変数宣言を入れてみると
なんで最初のコードがダメなのかわかりやすいです。

Private sub Commandbutton1_Click()
 Dim 戻り値 As Integer
 Dim 曜日  As String

 戻り値=range("C3").value
 曜日検索
 Range("d3").value=曜日
End sub

Private sub Commandbutton2_Click()
 Dim 戻り値 As Integer
 Dim 曜日  As String

 戻り値=range("C4").value
 曜日検索
 Range("d4").value=曜日
End sub

Sub 曜日検索()
  Dim 戻り値 As Integer
  Dim 曜日  As String

  Select Case 戻り値
  Case 1
   曜日= "日"
  Case 2
   曜日= "月"
  Case 3
   曜日= "火"
  Case 4
   曜日= "水"
  Case 5
   曜日= "木"
  Case 6
   曜日= "金"
  Case 7
  曜日= "土"
  End Select
End Sub

変数宣言をすると、その変数はそのスコープでしか有効になりません。
(Commandbutton1_Clickなら、その中でしか使えないし、他のところから値を参照することもできない)

参考)
http://mccoy.jp/chie/zaitaku/excel/vba/vba4_1.html

【35900】Re:サブルーチンについて
お礼  山口  - 06/3/15(水) 17:06 -

引用なし
パスワード
   ▼Blue さん:
>ちなみに、最初の返信で
>> それと、全体的に変数宣言をしたほうが良いと思いますよ。
>をしたと思いますが、最初のコードに全て変数宣言を入れてみると
>なんで最初のコードがダメなのかわかりやすいです。
>
>Private sub Commandbutton1_Click()
> Dim 戻り値 As Integer
> Dim 曜日  As String
>
> 戻り値=range("C3").value
> 曜日検索
> Range("d3").value=曜日
>End sub
>
>Private sub Commandbutton2_Click()
> Dim 戻り値 As Integer
> Dim 曜日  As String
>
> 戻り値=range("C4").value
> 曜日検索
> Range("d4").value=曜日
>End sub
>
>Sub 曜日検索()
>  Dim 戻り値 As Integer
>  Dim 曜日  As String
>
>  Select Case 戻り値
>  Case 1
>   曜日= "日"
>  Case 2
>   曜日= "月"
>  Case 3
>   曜日= "火"
>  Case 4
>   曜日= "水"
>  Case 5
>   曜日= "木"
>  Case 6
>   曜日= "金"
>  Case 7
>  曜日= "土"
>  End Select
>End Sub
>
>変数宣言をすると、その変数はそのスコープでしか有効になりません。
>(Commandbutton1_Clickなら、その中でしか使えないし、他のところから値を参照することもできない)
>
>参考)
>http://mccoy.jp/chie/zaitaku/excel/vba/vba4_1.html

Blue様
ありがとうございました。
サブルーチンについては
最近使い始めました。
後々編集が簡単になると教えてもらい、自分でもスッキリとした
コードが書けるような気がします。
Functionプロシージャについて
色々と試して勉強していきたいと思います。
ありがとうございました。

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