Excel VBA質問箱 IV

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

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


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

【67836】繰り返しのコードをシンプルにしたい あゆ 11/1/12(水) 14:25 質問[未読]
【67837】Re:繰り返しのコードをシンプルにしたい kanabun 11/1/12(水) 15:01 発言[未読]
【67840】Re:繰り返しのコードをシンプルにしたい あゆ 11/1/12(水) 15:32 お礼[未読]
【67838】Re:繰り返しのコードをシンプルにしたい Jaka 11/1/12(水) 15:03 発言[未読]
【67841】Re:繰り返しのコードをシンプルにしたい あゆ 11/1/12(水) 15:34 お礼[未読]
【67839】Re:繰り返しのコードをシンプルにしたい UO3 11/1/12(水) 15:25 回答[未読]
【67842】Re:繰り返しのコードをシンプルにしたい あゆ 11/1/12(水) 15:35 お礼[未読]

【67836】繰り返しのコードをシンプルにしたい
質問  あゆ  - 11/1/12(水) 14:25 -

引用なし
パスワード
   以下のように、最初は”本”について繰り返し処理を行っています。  
続けて、”花”や””野菜”についても同様の処理を行う時に、コードをシンプルにする方法を教えて下さい。


For Each C In ACELL
    
    data = "本"
    
    なんらかの処理
Next C

For Each C In ACELL
    
    data = "花"
    
    なんらかの処理
Next C

For Each C In ACELL
    
    data = "野菜"
    
    なんらかの処理
Next C

【67837】Re:繰り返しのコードをシンプルにしたい
発言  kanabun  - 11/1/12(水) 15:01 -

引用なし
パスワード
   ▼あゆ さん:こんにちは〜

> 以下のように、最初は”本”について繰り返し処理を行っています。  
> 続けて、”花”や””野菜”についても同様の処理を行う時に、
> コードをシンプルにする方法を教えて下さい。


コード例ですが、以下のように配列に入れておくとか?

Dim c As Range
Dim ACELL As Range
Dim data As Variant
Dim dat As Variant

data = Array("本","花","野菜")
Set ACELL = .......
For Each c in ACELL
  For Each dat in data
    dat に対する何らかの処理
  Next
Next

(注意)変数は必ず宣言して使うようにしてください。
   (モジュールの先頭に Option Explicit を宣言する)

【67838】Re:繰り返しのコードをシンプルにしたい
発言  Jaka  - 11/1/12(水) 15:03 -

引用なし
パスワード
   シンプルって言うか詳細がわかりませんが、こういうのじゃダメなの?

>For Each C In ACELL
>    
>    data = "本"
>    
>    なんらかの処理
>    
>    data = "花"
>    
>    なんらかの処理
>    
>    data = "野菜"
>    
>    なんらかの処理
>Next C

【67839】Re:繰り返しのコードをシンプルにしたい
回答  UO3  - 11/1/12(水) 15:25 -

引用なし
パスワード
   ▼あゆ さん:

こんにちは

ACELL や C が何であるのか、data は 取得したCの何なのかが不明ですが
もし、ACELL が セル領域、Cはその中のセル、dataは取得したCの値だとすれば

Option Explicit

Sub Sample()
  Dim ACELL As Range
  Dim c As Range
  
  Set ACELL = Range("A1:A20") '<== 例
  
  For Each c In ACELL
    Select Case c.Value
      Case "本"
        
        '"本"の場合の何らかの処理
      
      Case "花"
      
        '"花"の場合の何らかの処理
      
      Case "野菜"
      
        '"野菜"の場合の何らかの処理
      
    End Select
  Next
  
  Set ACELL = Nothing
  
End Sub

【67840】Re:繰り返しのコードをシンプルにしたい
お礼  あゆ  - 11/1/12(水) 15:32 -

引用なし
パスワード
   ▼kanabun さん:こんにちは〜

回答ありがとうございます
うまくいきました○

【67841】Re:繰り返しのコードをシンプルにしたい
お礼  あゆ  - 11/1/12(水) 15:34 -

引用なし
パスワード
   ▼Jaka さん:回答ありがとうございます

kanabunのような答えを期待していました。 

【67842】Re:繰り返しのコードをシンプルにしたい
お礼  あゆ  - 11/1/12(水) 15:35 -

引用なし
パスワード
   ▼UO3 さん:
回答ありがとうございます

kanabunのような答えを期待していました。 

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