Excel VBA質問箱 IV

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

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


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

【54661】計算結果が表記されない yasu 08/3/25(火) 16:20 質問[未読]
【54662】Re:計算結果が表記されない ひげくま 08/3/25(火) 17:08 回答[未読]
【54663】Re:計算結果が表記されない yasu 08/3/25(火) 17:49 お礼[未読]
【54675】Re:計算結果が表記されない VBWASURETA 08/3/25(火) 22:34 発言[未読]
【54677】Re:計算結果が表記されない VBWASURETA 08/3/25(火) 23:02 発言[未読]
【54684】Re:計算結果が表記されない yasu 08/3/26(水) 10:14 お礼[未読]

【54661】計算結果が表記されない
質問  yasu  - 08/3/25(火) 16:20 -

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

現在勤務表を作っており、K列に始業時間(これは変動するので手入力)で
M列に休憩時間をマクロで動かしたいと思っています。

色々、面倒ですが1〜31文の分岐を作ってK列の時間が12時前なら、M列に
1時間。K列が12時以降なら0:00。K列が空白ならM列も空白としたいのですが、
始業時間を全ていれてボタンでマクロを動かすと所々結果が反映されません。

だからといって該当行のみ始業時間を入れてボタンを押すと正常に動作します。
考えられる原因としては構文が長すぎなのでしょうか?
省略するとすればやはり分岐条件の所でしょうか?

原因がもし分かればご教授ください。宜しくお願いいたします。

以下構文↓
――――――――――――――――――――――
Sub 分岐()

Call 条件分岐1
Call 条件分岐2



Call 条件分岐31

End Sub

――――――――――――――――――――――
Sub 条件分岐1()

If Range("K8").Value = "" Then
  Range("M8").Value = ""
ElseIf Range("K8").Value >= "0.5" Then
  Range("M8").Value = "0:00"
Else
  Range("M8").Value = "1:00"
End If

End Sub
――――――――――――――――――――――
Sub 条件分岐2()

If Range("K9").Value = "" Then
  Range("M9").Value = ""
ElseIf Range("K9").Value >= "0.5" Then
  Range("M9").Value = "0:00"
Else
  Range("M9").Value = "1:00"
End If

End Sub
――――――――――――――――――――――



――――――――――――――――――――――
Sub 条件分岐31()

If Range("K38").Value = "" Then
  Range("M38").Value = ""
ElseIf Range("K38").Value >= "0.5" Then
  Range("M38").Value = "0:00"
Else
  Range("M38").Value = "1:00"
End If

End Sub
――――――――――――――――――――――

【54662】Re:計算結果が表記されない
回答  ひげくま  - 08/3/25(火) 17:08 -

引用なし
パスワード
   M8に、
=IF(K8="","",IF(K8>=0.5,"0:00","1:00"))
と書いて、それを下にコピーするだけで、ことは足りると思うのですが、あえてマクロにする理由は何なのでしょうか?

【54663】Re:計算結果が表記されない
お礼  yasu  - 08/3/25(火) 17:49 -

引用なし
パスワード
   ひげくまさん

ご返答ありがとうございました。

表計算 IF(K8="","",IF(K8>=0.5,"0:00","1:00"))
でも同じ結果が取得できるとは…。
別回答ありがとうございます。


わざわざマクロで作っているのは、
ボタンを左から順序よく押してそれで事足りるよう作っていたところ、
所々計算結果が出ないところがあり、なんでかなと疑問になり
ご質問させていただきました。

【54675】Re:計算結果が表記されない
発言  VBWASURETA  - 08/3/25(火) 22:34 -

引用なし
パスワード
   こんばんは。
ちょっと400行ぐらいのソースぐらいで実行されないというのが
気になったので試してみました。
条件がどうであれ全てちゃんと実行されましたよ?

Sub main()
  Call 条件分岐1
  Call 条件分岐2
  Call 条件分岐3
  Call 条件分岐4
  Call 条件分岐5
  Call 条件分岐6
  Call 条件分岐7
  Call 条件分岐8
  Call 条件分岐9
  Call 条件分岐10
  Call 条件分岐11
  Call 条件分岐12
  Call 条件分岐13
  Call 条件分岐14
  Call 条件分岐15
  Call 条件分岐16
  Call 条件分岐17
  Call 条件分岐18
  Call 条件分岐19
  Call 条件分岐20
  Call 条件分岐21
  Call 条件分岐22
  Call 条件分岐23
  Call 条件分岐24
  Call 条件分岐25
  Call 条件分岐26
  Call 条件分岐27
  Call 条件分岐28
  Call 条件分岐29
  Call 条件分岐30
  Call 条件分岐31
End Sub
Sub 条件分岐1()
Debug.Print "条件" & 1
If Range("K8").Value = "" Then
  Range("M8").Value = ""
ElseIf Range("K8").Value >= "0.5" Then
  Range("M8").Value = "0:00"
Else
  Range("M8").Value = "1:00"
End If

End Sub
Sub 条件分岐2()
Debug.Print "条件" & 2
If Range("K9").Value = "" Then
  Range("M9").Value = ""
ElseIf Range("K9").Value >= "0.5" Then
  Range("M9").Value = "0:00"
Else
  Range("M9").Value = "1:00"
End If

End Sub
Sub 条件分岐3()
Debug.Print "条件" & 3
If Range("K10").Value = "" Then
  Range("M10").Value = ""
ElseIf Range("K10").Value >= "0.5" Then
  Range("M10").Value = "0:00"
Else
  Range("M10").Value = "1:00"
End If

End Sub
Sub 条件分岐4()
Debug.Print "条件" & 4
If Range("K11").Value = "" Then
  Range("M11").Value = ""
ElseIf Range("K11").Value >= "0.5" Then
  Range("M11").Value = "0:00"
Else
  Range("M11").Value = "1:00"
End If

End Sub
Sub 条件分岐5()
Debug.Print "条件" & 5
If Range("K12").Value = "" Then
  Range("M12").Value = ""
ElseIf Range("K12").Value >= "0.5" Then
  Range("M12").Value = "0:00"
Else
  Range("M12").Value = "1:00"
End If

End Sub
Sub 条件分岐6()
Debug.Print "条件" & 6
If Range("K13").Value = "" Then
  Range("M13").Value = ""
ElseIf Range("K13").Value >= "0.5" Then
  Range("M13").Value = "0:00"
Else
  Range("M13").Value = "1:00"
End If

End Sub
Sub 条件分岐7()
Debug.Print "条件" & 7
If Range("K14").Value = "" Then
  Range("M14").Value = ""
ElseIf Range("K14").Value >= "0.5" Then
  Range("M14").Value = "0:00"
Else
  Range("M14").Value = "1:00"
End If

End Sub
Sub 条件分岐8()
Debug.Print "条件" & 8
If Range("K15").Value = "" Then
  Range("M15").Value = ""
ElseIf Range("K15").Value >= "0.5" Then
  Range("M15").Value = "0:00"
Else
  Range("M15").Value = "1:00"
End If

End Sub
Sub 条件分岐9()
Debug.Print "条件" & 9
If Range("K16").Value = "" Then
  Range("M16").Value = ""
ElseIf Range("K16").Value >= "0.5" Then
  Range("M16").Value = "0:00"
Else
  Range("M16").Value = "1:00"
End If

End Sub
Sub 条件分岐10()
Debug.Print "条件" & 10
If Range("K17").Value = "" Then
  Range("M17").Value = ""
ElseIf Range("K17").Value >= "0.5" Then
  Range("M17").Value = "0:00"
Else
  Range("M17").Value = "1:00"
End If

End Sub
Sub 条件分岐11()
Debug.Print "条件" & 11
If Range("K18").Value = "" Then
  Range("M18").Value = ""
ElseIf Range("K18").Value >= "0.5" Then
  Range("M18").Value = "0:00"
Else
  Range("M18").Value = "1:00"
End If

End Sub
Sub 条件分岐12()
Debug.Print "条件" & 12
If Range("K19").Value = "" Then
  Range("M19").Value = ""
ElseIf Range("K19").Value >= "0.5" Then
  Range("M19").Value = "0:00"
Else
  Range("M19").Value = "1:00"
End If

End Sub
Sub 条件分岐13()
Debug.Print "条件" & 13
If Range("K20").Value = "" Then
  Range("M20").Value = ""
ElseIf Range("K20").Value >= "0.5" Then
  Range("M20").Value = "0:00"
Else
  Range("M20").Value = "1:00"
End If

End Sub
Sub 条件分岐14()
Debug.Print "条件" & 14
If Range("K21").Value = "" Then
  Range("M21").Value = ""
ElseIf Range("K21").Value >= "0.5" Then
  Range("M21").Value = "0:00"
Else
  Range("M21").Value = "1:00"
End If

End Sub
Sub 条件分岐15()
Debug.Print "条件" & 15
If Range("K22").Value = "" Then
  Range("M22").Value = ""
ElseIf Range("K22").Value >= "0.5" Then
  Range("M22").Value = "0:00"
Else
  Range("M22").Value = "1:00"
End If

End Sub
Sub 条件分岐16()
Debug.Print "条件" & 16
If Range("K23").Value = "" Then
  Range("M23").Value = ""
ElseIf Range("K23").Value >= "0.5" Then
  Range("M23").Value = "0:00"
Else
  Range("M23").Value = "1:00"
End If

End Sub
Sub 条件分岐17()
Debug.Print "条件" & 17
If Range("K24").Value = "" Then
  Range("M24").Value = ""
ElseIf Range("K24").Value >= "0.5" Then
  Range("M24").Value = "0:00"
Else
  Range("M24").Value = "1:00"
End If

End Sub
Sub 条件分岐18()
Debug.Print "条件" & 18
If Range("K25").Value = "" Then
  Range("M25").Value = ""
ElseIf Range("K25").Value >= "0.5" Then
  Range("M25").Value = "0:00"
Else
  Range("M25").Value = "1:00"
End If

End Sub
Sub 条件分岐19()
Debug.Print "条件" & 19
If Range("K26").Value = "" Then
  Range("M26").Value = ""
ElseIf Range("K26").Value >= "0.5" Then
  Range("M26").Value = "0:00"
Else
  Range("M26").Value = "1:00"
End If

End Sub
Sub 条件分岐20()
Debug.Print "条件" & 20
If Range("K27").Value = "" Then
  Range("M27").Value = ""
ElseIf Range("K27").Value >= "0.5" Then
  Range("M27").Value = "0:00"
Else
  Range("M27").Value = "1:00"
End If

End Sub
Sub 条件分岐21()
Debug.Print "条件" & 21
If Range("K28").Value = "" Then
  Range("M28").Value = ""
ElseIf Range("K28").Value >= "0.5" Then
  Range("M28").Value = "0:00"
Else
  Range("M28").Value = "1:00"
End If

End Sub
Sub 条件分岐22()
Debug.Print "条件" & 22
If Range("K29").Value = "" Then
  Range("M29").Value = ""
ElseIf Range("K29").Value >= "0.5" Then
  Range("M29").Value = "0:00"
Else
  Range("M29").Value = "1:00"
End If

End Sub
Sub 条件分岐23()
Debug.Print "条件" & 23
If Range("K30").Value = "" Then
  Range("M30").Value = ""
ElseIf Range("K30").Value >= "0.5" Then
  Range("M30").Value = "0:00"
Else
  Range("M30").Value = "1:00"
End If

End Sub
Sub 条件分岐24()
Debug.Print "条件" & 24
If Range("K31").Value = "" Then
  Range("M31").Value = ""
ElseIf Range("K31").Value >= "0.5" Then
  Range("M31").Value = "0:00"
Else
  Range("M31").Value = "1:00"
End If

End Sub
Sub 条件分岐25()
Debug.Print "条件" & 25
If Range("K32").Value = "" Then
  Range("M32").Value = ""
ElseIf Range("K32").Value >= "0.5" Then
  Range("M32").Value = "0:00"
Else
  Range("M32").Value = "1:00"
End If

End Sub
Sub 条件分岐26()
Debug.Print "条件" & 26
If Range("K33").Value = "" Then
  Range("M33").Value = ""
ElseIf Range("K33").Value >= "0.5" Then
  Range("M33").Value = "0:00"
Else
  Range("M33").Value = "1:00"
End If

End Sub
Sub 条件分岐27()
Debug.Print "条件" & 27
If Range("K34").Value = "" Then
  Range("M34").Value = ""
ElseIf Range("K34").Value >= "0.5" Then
  Range("M34").Value = "0:00"
Else
  Range("M34").Value = "1:00"
End If

End Sub
Sub 条件分岐28()
Debug.Print "条件" & 28
If Range("K35").Value = "" Then
  Range("M35").Value = ""
ElseIf Range("K35").Value >= "0.5" Then
  Range("M35").Value = "0:00"
Else
  Range("M35").Value = "1:00"
End If

End Sub
Sub 条件分岐29()
Debug.Print "条件" & 29
If Range("K36").Value = "" Then
  Range("M36").Value = ""
ElseIf Range("K36").Value >= "0.5" Then
  Range("M36").Value = "0:00"
Else
  Range("M36").Value = "1:00"
End If

End Sub
Sub 条件分岐30()
Debug.Print "条件" & 30
If Range("K37").Value = "" Then
  Range("M37").Value = ""
ElseIf Range("K37").Value >= "0.5" Then
  Range("M37").Value = "0:00"
Else
  Range("M37").Value = "1:00"
End If

End Sub
Sub 条件分岐31()
Debug.Print "条件" & 31
If Range("K38").Value = "" Then
  Range("M38").Value = ""
ElseIf Range("K38").Value >= "0.5" Then
  Range("M38").Value = "0:00"
Else
  Range("M38").Value = "1:00"
End If

End Sub

【54677】Re:計算結果が表記されない
発言  VBWASURETA  - 08/3/25(火) 23:02 -

引用なし
パスワード
   ちょっとソースが長いのでスレッドを別けました。

多分ですが、単体だと計算され一括だと結果が異なるということは
メソッド処理のいずれかが書き込むセルが重複しているように見えます。
一度重複セルがないか確認してみてください。
因みに書いたソースは重複していません。
ソースをセルに貼り付けてフィル機能で作りました。

【54684】Re:計算結果が表記されない
お礼  yasu  - 08/3/26(水) 10:14 -

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

わざわざご確認ありがとうございます。

重複を確認しましたがセルの割り当ては問題なかったです。
しかし、ある共通点で、6,16,26日の条件分岐が表示されていないです。
そこを見直しましたが特に問題なかったです。

VBWASURETAさんので試すと正常に表記されたので何かが悪そう
なのでもう一回組みなおしてみたら、正常動作しました。

皆様、ご協力ありがとうございました。


上書きで対応せずに、ファイルコピーしてdiffすればよかった。。。

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