アプリ版:「スタンプのみでお礼する」機能のリリースについて

シート操作について教えてください。

sheet1~sheet10において
sheet3~sheet10までの名前を変更しています。

sheet3 Aランク
sheet4 Bランク
sheet5 Cランク

sheet10 Jランク


各シートの2列目、17行目から下の表示を折り返して表示とするため


Dim i As Integer

For i = 6 To Worksheets.count
 
 j = Worksheets(i).Cells(Worksheets(i).Rows.count, 2).End(xlUp).row

 If Worksheets(i).range("B17") = "" Then

Exit For

End If

Worksheets(i).Cells(j, 2).WrapText = True

Next


というコードを作成しましたがうまくいきません。

どこが駄目なのか教えてください。よろしくお願いします。

質問者からの補足コメント

  • シートは6番目からで大丈夫です。
    B17にもデータが入るのですが、ない場合は抜けるようにしています。

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/07/26 08:35
  • シート6からシート10の間で、
    B17が空欄ならばそのシートは何もせず、
    B17に入力されていれば折り返して表示させたいのです。

    No.3の回答に寄せられた補足コメントです。 補足日時:2016/07/26 09:41

A 回答 (4件)

以下のようにしてください。


マクロ名をMacro1としています。
-----------------------------------
Sub Macro1()
Dim i As Long
Dim j As Long
Dim rowmax As Long

For i = 6 To Worksheets.Count
rowmax = Worksheets(i).Cells(Worksheets(i).Rows.Count, 2).End(xlUp).Row
For j = 17 To rowmax
If Worksheets(i).Cells(17, 2).Value = "" Then
Exit For
End If
Worksheets(i).Cells(j, 2).WrapText = True
Next
Next
End Sub
-----------------------------------
    • good
    • 0
この回答へのお礼

いつもありがとうございます。

もっと勉強してレベルアップしたいと思うのですがなかなか思うようにいきません。
少しずつでも覚えるように頑張ります。

お礼日時:2016/07/27 00:26

こんにちは



ご質問文からだけでは何をなさりたいのかよくわかりませんし、ご提示のコードを見てもやりたいことが不明です。
できることとして、ご提示のコードの意味するところを以下に記しておくことにします。
(多分)意図なさっている内容とは違う部分があるのでしょうから、その発見のヒントにでもなれば・・・


' 変数iの型宣言(整数型)
Dim i As Integer

' シート6以降の全シートに対して順次ループ
For i = 6 To Worksheets.count

' 対象シートのB列の最終行を取得
'(通常はrowでなくエディタがRowに変えると思いますが、なぜrowのままなのか不明)
'(変数jは未宣言なのでバリアント型になる) 
 j = Worksheets(i).Cells(Worksheets(i).Rows.count, 2).End(xlUp).row

'現在のシートのB17がブランクだったらループを抜ける
'(例えばシート6のB17がブランクなら、何もせずにマクロは終了)
 If Worksheets(i).range("B17") = "" Then
  Exit For
 End If

'現在のシートのi行2列のセル表示を「文字列を折り返す」に設定
 Worksheets(i).Cells(j, 2).WrapText = True

' ループの終わり(次のシートを処理)
Next


※ ご提示のコードは上記のような内容です。
全てのシートで処理が行われたとしても、実質的な処理としてはシート内の各一ヶ所のセルの書式設定に「文字列の折り返し」を設定するというものです。
一ヶ所のセルとは、シート6のB6、シート7のB7、シート8のB8…という順で位置がかわります。
もしも、途中のシートでセルB17がブランクのシートがあると、そこで全ての処理は打ち切られるようになっています。(それ以後のシートは処理されない)

※ 何をなさりたいのかよくわかりませんが、書式に折り返しを設定したいのであれば、わざわざマクロを利用する必要もなく、事前に書式を設定しておくだけで済む話のようにも思えるのですが。
    • good
    • 0

うまくいきませんって、どういう事?


6番目のシートのB17が空白なら何も起こらないよね。
で、あってますよね。
この回答への補足あり
    • good
    • 0

まず、シート6番目からでOK?


「B17」は何? ループ抜けるけど。

※文法あってるかは調べてくれ。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!