Excel VBA質問箱 IV

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

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


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

【26428】If関数で ちい 05/7/5(火) 13:30 質問[未読]
【26429】Re:If関数で Jaka 05/7/5(火) 13:36 発言[未読]
【26431】Re:If関数で ちい 05/7/5(火) 14:05 質問[未読]
【26433】Re:If関数で 小僧 05/7/5(火) 14:40 回答[未読]
【26434】Re:If関数で ちい 05/7/5(火) 15:07 質問[未読]
【26436】Re:If関数で 小僧 05/7/5(火) 15:33 回答[未読]
【26437】Re:If関数で Jaka 05/7/5(火) 15:39 発言[未読]
【26470】Re:If関数で ちい 05/7/6(水) 11:38 質問[未読]
【26473】Re:If関数で Jaka 05/7/6(水) 12:55 回答[未読]
【26479】Re:If関数で ちい 05/7/6(水) 17:13 お礼[未読]
【26480】Re:If関数で Jaka 05/7/6(水) 17:24 発言[未読]
【26482】Re:If関数で ちい 05/7/6(水) 19:09 お礼[未読]
【26469】Re:If関数で ちい 05/7/6(水) 11:30 質問[未読]

【26428】If関数で
質問  ちい  - 05/7/5(火) 13:30 -

引用なし
パスワード
   If構文をダブルで掛けたいのですが、
どのようにすればよろしいでしょうか?
いろいろやってみたのですが、
ダブルにするとそれ以後のNextが
どのForが認識できませんと言われてしまいます。
ダブルにする前はとてもうまくいきました。
宜しくお願いいたします。

【26429】Re:If関数で
発言  Jaka  - 05/7/5(火) 13:36 -

引用なし
パスワード
   こんにちは。
よく解りません。
書いたコードを提示されて説明された方が良いと思います。

なんとなくですが

for i = 1 to 10
  If i = 3 then

  elseif i = 5 then

  elseif i = 7 then

  endif
next

【26431】Re:If関数で
質問  ちい  - 05/7/5(火) 14:05 -

引用なし
パスワード
   ありがとうございます。
修正したところ、Nextのエラーは無くなったのですが、
elseIfがうまく作動してくれません。

構文は

Dim Counter As Integer
  For Counter = 0 To 1
    
    Sheets("A").Select
    Cells(6, 2) = Worksheets("B").Cells(4 + Counter, 1)                         Cells(7, 2) = Worksheets("B").Cells(4 + Counter, 2)                                Cells(8, 2) = Worksheets("B").Cells(4 + Counter, 3)                                                Cells(9, 2) = Worksheets("B").Cells(4 + Counter, 5)                                                Cells(13, 2) = Worksheets("B").Cells(4 + Counter, 6)                                               Cells(6, 5) = Worksheets("B").Cells(4 + Counter, 7)                                                Cells(7, 5) = Worksheets("B").Cells(4 + Counter, 8)     
   
    If Cells(13, 2).Value = "3" Then
      ElseIf Cells(6, 5).Value = "1" Then
      Sheets("C").Select
      Range("C3:C4").Select
      Selection.Interior.ColorIndex = 4
      ElseIf Cells(7, 5).Value = "2" Then
      Sheets("C").Select
      Range("D3:D4").Select
      Selection.Interior.ColorIndex = 4
      ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    End If         
  Next Counter

というように、

Sheets("A")のCells(13, 2)に3が入力されており
かつSheets("A")のCells(6, 5)に1が入力された場合に
Sheets("C")ある部分に色を付けて印刷する。
またはSheets("A")のCells(6, 5)に2が入力された場合に
Sheets("C")ある部分に色を付けて印刷する。
このような構文を組みたいのですが・・・
どうすればよろしいのでしょうか?

(上記のまたはの部分は両方入力された場合は両方のセルに色をつけたいのです)

【26433】Re:If関数で
回答  小僧  - 05/7/5(火) 14:40 -

引用なし
パスワード
   ▼ちい さん、Jaka さん:
こんにちは。

>    If Cells(13, 2).Value = "3" Then
>      ElseIf Cells(6, 5).Value = "1" Then
>      Sheets("C").Select
>      Range("C3:C4").Select
>      Selection.Interior.ColorIndex = 4
>      ElseIf Cells(7, 5).Value = "2" Then
>      Sheets("C").Select
>      Range("D3:D4").Select
>      Selection.Interior.ColorIndex = 4
>      ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
>    End If         

    If Cells(13, 2).Value = 3 And Cells(6, 5).Value = 1 Then
      Worksheets("C").Range("C3:C4").Interior.ColorIndex = 4
    End If
    
    If Cells(7, 5).Value = 2 Then
      Worksheets("C").Range("D3:D4").Interior.ColorIndex = 4
    End If

こんな感じでしょうか。
1つ気になったのが If 文以下の処理に変数:Counter を使った式が
出てこないのですが、この部分は「For 〜 Next」の間に挟む必要があるのでしょうか?

【26434】Re:If関数で
質問  ちい  - 05/7/5(火) 15:07 -

引用なし
パスワード
   ご返信ありがとうございます。m(__)m
    
>
>    If Cells(13, 2).Value = 3 And Cells(6, 5).Value = 1 Then
>      Worksheets("C").Range("C3:C4").Interior.ColorIndex = 4
>    End If
>    
>    If Cells(7, 5).Value = 2 Then
>      Worksheets("C").Range("D3:D4").Interior.ColorIndex = 4
>    End If
>
>こんな感じでしょうか。

これでやると、 Cells(6, 5)とCells(7, 5)同時にデータが入力された場合に片方のデータしか拾わないのではないでしょうか?

>1つ気になったのが If 文以下の処理に変数:Counter を使った式が
>出てこないのですが、この部分は「For 〜 Next」の間に挟む必要があるのでしょうか?
If文の処理を行った後に、Next counterとしたいのです。おかしいでしょうか?

宜しくお願いいたします。

【26436】Re:If関数で
回答  小僧  - 05/7/5(火) 15:33 -

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

>>1つ気になったのが If 文以下の処理に変数:Counter を使った式が
>>出てこないのですが、この部分は「For 〜 Next」の間に挟む必要があるのでしょうか?

Cells(6, 5) と Cells(7, 5)の値を途中で変えていたのですね。
気がつかないですみませんでした。

>これでやると、 Cells(6, 5)とCells(7, 5)同時にデータが入力された場合に
>片方のデータしか拾わないのではないでしょうか?

「同時にデータが入力された場合に」というのが良く解らないのですが、

シートAの (13,2) = 3 かつ (6,5) = 1 ⇒ シートCの(C3:C4)の色変更
シートAの (7, 5) = 2           ⇒ シートCの(D3:D4)の色変更

と別の処理にしたのですが、そういった意味ではないのでしょうか?

【26437】Re:If関数で
発言  Jaka  - 05/7/5(火) 15:39 -

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

1、
>Sheets("A")のCells(13, 2)に3が入力されており
>かつSheets("A")のCells(6, 5)に1が入力された場合

2、
>またはSheets("A")のCells(6, 5)に2が入力された場合
これは、Cells(7, 5)の書き間違いだと思いますが

1、2が真だった場合の処理はどうするのでしょうか?

>If文の処理を行った後に、Next counterとしたいのです。おかしいでしょうか?
シートAを印刷用シートとして、シートBの値をシートAに引っ張ってきてから判定していると思うので、結果としてはおかしくは無いですが、直接シートBの値を判定してからの方が良いですし、余計な転送処理がない分早く終わると思います。

【26469】Re:If関数で
質問  ちい  - 05/7/6(水) 11:30 -

引用なし
パスワード
   おはようございます。

>Cells(6, 5) と Cells(7, 5)の値を途中で変えていたのですね。
>気がつかないですみませんでした。
さらには
Cells(6, 2) = Worksheets("B").Cells(4 + Counter, 1)                         Cells(7, 2) = Worksheets("B").Cells(4 + Counter, 2)                                Cells(8, 2) = Worksheets("B").Cells(4 + Counter, 3)                                                Cells(9, 2) = Worksheets("B").Cells(4 + Counter, 5)                                                Cells(13, 2) = Worksheets("B").Cells(4 + Counter, 6)                                               Cells(6, 5) = Worksheets("B").Cells(4 + Counter, 7)                                                Cells(7, 5) = Worksheets("B").Cells(4 + Counter, 8) 
も変数なのです。紛らわしく申し訳ありません。


> シートAの (13,2) = 3 かつ (6,5) = 1 ⇒ シートCの(C3:C4)の色変更
> シートAの (7, 5) = 2           ⇒ シートCの(D3:D4)の色変更
>
>と別の処理にしたのですが、そういった意味ではないのでしょうか?

シートAの (13,2) = 3 かつ (6,5) = 1 ⇒ シートCの(C3:C4)の色変更
シートAの (13,2) = 3 かつ (7,5) = 2 ⇒ シートCの(D3:D4)の色変更
シートAの (13,2) = 3 かつ (6,5) = 1かつ(7,5) = 2 
⇒ シートCの(C3:C4)の色変更、およびシートCの(D3:D4)の色変更
としたいのです。宜しくお願いいたします。

【26470】Re:If関数で
質問  ちい  - 05/7/6(水) 11:38 -

引用なし
パスワード
   おはようございます。

>1、
>>Sheets("A")のCells(13, 2)に3が入力されており
>>かつSheets("A")のCells(6, 5)に1が入力された場合
>
>2、
>>またはSheets("A")のCells(6, 5)に2が入力された場合
>これは、Cells(7, 5)の書き間違いだと思いますが
書き間違いでした。
>
>1、2が真だった場合の処理はどうするのでしょうか?

1,2が真の場合は
Sheets("C")にRange("C3:C4")とRange("D3:D4")に色を付けてプリントアウトしたいのです。


>>If文の処理を行った後に、Next counterとしたいのです。おかしいでしょうか?
>シートAを印刷用シートとして、シートBの値をシートAに引っ張ってきてから判定していると思うので、結果としてはおかしくは無いですが、直接シートBの値を判定してからの方が良いですし、余計な転送処理がない分早く終わると思います。
毎回350枚ぐらいのプリントアウトしますので、転送処理よりもプリント処理の方が遅いので、時間的な問題は大丈夫です。そしてまたマクロを組みなおす能力が私にあるかがまた問題なのです。すいません。

申し訳ありませんが、宜しくお願いいたします。

【26473】Re:If関数で
回答  Jaka  - 05/7/6(水) 12:55 -

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

▼ちい さん:
>1,2が真の場合は
>Sheets("C")にRange("C3:C4")とRange("D3:D4")に色を付けてプリントアウトしたいのです。
それなら、小僧さんのコードに色を消すコードをこんな感じに追加すれば良いです。
最初にC3:C4、D3:D4の色を消してから判定しても良いですし....。

    If Cells(13, 2).Value = 3 And Cells(6, 5).Value = 1 Then
      Worksheets("C").Range("C3:C4").Interior.ColorIndex = 4
    Else
      Worksheets("C").Range("C3:C4").Interior.ColorIndex = xlNone
    End If
    If Cells(13, 2).Value = 3 And Cells(7, 5).Value = 2 Then
      Worksheets("C").Range("D3:D4").Interior.ColorIndex = 4
    Else
      Worksheets("C").Range("D3:D4").Interior.ColorIndex = xlNone
    End If
    
他   
    Worksheets("C").Range("C3:C4").Interior.ColorIndex = xlNone
    If Cells(13, 2).Value = 3 Then
      If Cells(6, 5).Value = 1 Then
       Worksheets("C").Range("C3:C4").Interior.ColorIndex = 4
      End If
      If Cells(7, 5).Value = 2 Then
       Worksheets("C").Range("D3:D4").Interior.ColorIndex = 4
      End If
    End If

【26479】Re:If関数で
お礼  ちい  - 05/7/6(水) 17:13 -

引用なし
パスワード
   jakaさん、小僧さん

いろいろとありがとうございました。
とてもうまくいきました(^^)
あとは同じことの繰り返しなので何とかなると思います。

またの機会に宜しくお願いいたしますm(__)m

【26480】Re:If関数で
発言  Jaka  - 05/7/6(水) 17:24 -

引用なし
パスワード
   すみません。
間違えてました。

>他   
>    Worksheets("C").Range("C3:C4").Interior.ColorIndex = xlNone
                 ↓
               ("C3:D4")
>    If Cells(13, 2).Value = 3 Then
>      If Cells(6, 5).Value = 1 Then

【26482】Re:If関数で
お礼  ちい  - 05/7/6(水) 19:09 -

引用なし
パスワード
   最後までどうもすいません。
本当に助かりました(^^)ありがとうございます。

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