Excel VBA質問箱 IV

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

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


20748 / 76738 ←次へ | 前へ→

【61403】Re:同じ処理の簡略化
発言  たけ  - 09/5/6(水) 0:38 -

引用なし
パスワード
   neptune 様
お世話になります.

AccessVBAについては,IfやSelectCaseの構文を改変した程度として
捉えてください.

あと,補足になります.
朝昼夜の後,列の追加で合計点を出します.
この辺は,VBAのfanctionを当てることになるかとおもいますが…

悩みの部分は2つ(現在までに)
1.行が変わったときにそれぞれセルを変更しなければならないため,
対応が出来ない(後の私が考えた構文を参照してください)

2.毎回,セルを固定した条件文となり,ダラダラと続いて
スマートな構文にならない.


とりあえず,ダラダラとなってしまう構文ですが.
(知識が少ないため,変数や型の宣言などで間違いがあるかと思いますが,
お許しください)

--------------------------------------------

Dim b1 As Integer
Dim b2 As Integer
Dim b3 As Integer

Dim l1 As Integer
Dim l2 As Integer
Dim l3 As Integer

Dim d1 As Integer
Dim d2 As Integer
Dim d3 As Integer


'朝食を食べる(回答が1)なら10,食べない(回答が2)なら0
If Cells(3, 2) = 1 Then
    b1 = 10
  ElseIf Cells(3, 2) = 2 Then
    b1 = 0
  Else
    b1 = Null
  

End If

'朝食を2人以上で食べるなら10,1人なら0
If Cells(3, 3) = 1 Then
  b2 = 0
  ElseIf Cells(3, 3) >= 2 Then
  b2 = 10
  Else
  b2 = Null
  
End If
  
'時間が20分以上なら10,10分以上20分未満なら5,10分未満なら0
Select Case Cells(3, 4)

  Case Is >= 20
    b3 = 10
  
  Case Is < 20
    b3 = 5
  
  Case Is < 10
    b3 = 0
  
  Case Else
    b3 = Null
    
End Select

'この後に,l1 l2 l3とd1 d2 d3の構文が続きます

'(省略)

'合計点を求めます
Dim total As Integer
Dim totalB As Integer
Dim totalL As Integer
Dim totalD As Integer

totalB = b1 + b2 + b3
totalL = l1 + l2 + l3
totalD = d1 + d2 + d3

total = totalB + totalL + totalD

--------------------------------------------

こんなイメージです.
b1〜b3とl1〜l3,d1〜d3が同じ規則での処理となるため,
この辺がスッキリ出来たらという思いと,対象者が変わったときにも
対応できるような状態にしたいと考えております.

不備な点がありましたら,ご指摘ください.

1 hits

【61398】同じ処理の簡略化 たけ 09/5/5(火) 23:07 質問
【61401】Re:同じ処理の簡略化 neptune 09/5/5(火) 23:42 発言
【61403】Re:同じ処理の簡略化 たけ 09/5/6(水) 0:38 発言
【61405】Re:同じ処理の簡略化 ゆみこん 09/5/6(水) 7:10 発言
【61408】Re:同じ処理の簡略化 りん 09/5/6(水) 7:42 発言
【61411】Re:同じ処理の簡略化 neptune 09/5/6(水) 11:17 回答
【61412】Re:同じ処理の簡略化 たけ 09/5/7(木) 6:27 お礼

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