シート操作について教えてください。
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
というコードを作成しましたがうまくいきません。
どこが駄目なのか教えてください。よろしくお願いします。
No.5ベストアンサー
- 回答日時:
以下のようにしてください。
マクロ名を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
-----------------------------------
いつもありがとうございます。
もっと勉強してレベルアップしたいと思うのですがなかなか思うようにいきません。
少しずつでも覚えるように頑張ります。
No.4
- 回答日時:
こんにちは
ご質問文からだけでは何をなさりたいのかよくわかりませんし、ご提示のコードを見てもやりたいことが不明です。
できることとして、ご提示のコードの意味するところを以下に記しておくことにします。
(多分)意図なさっている内容とは違う部分があるのでしょうから、その発見のヒントにでもなれば・・・
' 変数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がブランクのシートがあると、そこで全ての処理は打ち切られるようになっています。(それ以後のシートは処理されない)
※ 何をなさりたいのかよくわかりませんが、書式に折り返しを設定したいのであれば、わざわざマクロを利用する必要もなく、事前に書式を設定しておくだけで済む話のようにも思えるのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAの天才来てください
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
エクセルのマクロでアクティブ...
-
VBA 存在しないシートを選...
-
同じ作業を複数のシートに実行...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
【VBA】シート名に特定文字が入...
-
【VBA】色のついたシート名を取得
-
ExcelVBA:複数の特定のグラフ...
-
ExcelVBA シート名を複数セルか...
-
XL:BeforeDoubleClickが動かない
-
VBAを用いて繰り返し自動的...
-
excelのマクロで該当処理できな...
-
VBA ユーザーフォーム上のチェ...
-
Excel マクロについての相談
-
特定の文字を含むシートだけマ...
-
エクセル・マクロ シートの非...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報
シートは6番目からで大丈夫です。
B17にもデータが入るのですが、ない場合は抜けるようにしています。
シート6からシート10の間で、
B17が空欄ならばそのシートは何もせず、
B17に入力されていれば折り返して表示させたいのです。