Excel VBA質問箱 IV

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

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


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

【21123】不連続なセル範囲の指定の仕方 ラータ 05/1/12(水) 16:15 質問[未読]
【21124】Re:不連続なセル範囲の指定の仕方 ラータ 05/1/12(水) 16:32 質問[未読]
【21127】Re:不連続なセル範囲の指定の仕方 Jaka 05/1/12(水) 16:52 回答[未読]
【21130】Re:不連続なセル範囲の指定の仕方 ラータ 05/1/12(水) 17:13 質問[未読]
【21131】Re:不連続なセル範囲の指定の仕方 Jaka 05/1/12(水) 17:34 回答[未読]
【21159】Re:不連続なセル範囲の指定の仕方 ラータ 05/1/13(木) 16:07 お礼[未読]
【21129】Re:不連続なセル範囲の指定の仕方 無名 05/1/12(水) 17:04 回答[未読]

【21123】不連続なセル範囲の指定の仕方
質問  ラータ  - 05/1/12(水) 16:15 -

引用なし
パスワード
   はじめまして。
見様見真似でエクセルのマクロを書いています。
簡単なことだと思うのですが、どなたかご教示ください.

定期的なデータ処理用のエクセルマクロを作成していますが、
不連続なセル範囲の指定の仕方がわかりません。

例えば列:A〜Z、行:1〜N(その時々で列数は確定していますが、行数は変動します)
のデータのうち、A列、K列のフォントを設定する場合、
今までは以下のように表現していました。

最終列 = Columns("A:A").Specialcells(xlconstants).Count
With Range("A1:A" & NO数).Font
    .Name = "MS ゴシック"
    .Size = 10
End With
With Range("K1:K" & NO数).Font
    .Name = "MS ゴシック"
    .Size = 10
End With

ただしこの方法ですと、指定したい列が多くなると
With〜End Withの記述がその分だけ増えてしまい、あんまり
よろしくないと感じています。
できれば一回の記述ですませたいのですが、このような
不連続かつ最終行数が不確定なセル番地の、Rangeオブジェクトの
引数表示はどのように記述すればいいのでしょうか。

以上よろしくお願い致します。

【21124】Re:不連続なセル範囲の指定の仕方
質問  ラータ  - 05/1/12(水) 16:32 -

引用なし
パスワード
   自己レスです。
記述が間違ってました。申し訳ありません・・・。
>
>最終列 = Columns("A:A").Specialcells(xlconstants).Count
>With Range("A1:A" & 最終列).Font
>    .Name = "MS ゴシック"
>    .Size = 10
>End With
>With Range("K1:K" & 最終列).Font
>    .Name = "MS ゴシック"
>    .Size = 10
>End With
>

【21127】Re:不連続なセル範囲の指定の仕方
回答  Jaka  - 05/1/12(水) 16:52 -

引用なし
パスワード
   ▼ラータ さん:
>>最終列 = Columns("A:A").Specialcells(xlconstants).Count
  ↑列でいいの?

>>With Range("A1:A" & 最終列).Font
>>    .Name = "MS ゴシック"
>>    .Size = 10
>>End With
>>With Range("K1:K" & 最終列).Font
>>    .Name = "MS ゴシック"
>>    .Size = 10
>>End With

いまいち空白で無いセルの個数と列のかかわり具合がわかりませんが...。
こんな感じでしょうか?

For i = 1 To 11 Step 10
  With Range(Cells(1, i), Cells(NO数, i)).Font
    .Name = "MS ゴシック"
    .Size = 10
  End With
Next

【21129】Re:不連続なセル範囲の指定の仕方
回答  無名  - 05/1/12(水) 17:04 -

引用なし
パスワード
   ▼ラータ さん:

参考ということで、

Sub test()
  For i = 1 To Cells.SpecialCells(xlCellTypeLastCell).Column
    NO数 = Columns(i).SpecialCells(xlCellTypeConstants).Row
    Range(Cells(1, i), Cells(NO数, i)).Select
    With Range(Cells(1, i), Cells(NO数, i)).Font
        .Name = "MS ゴシック"
        .Size = 10
    End With
  Next
End Sub

【21130】Re:不連続なセル範囲の指定の仕方
質問  ラータ  - 05/1/12(水) 17:13 -

引用なし
パスワード
   ▼Jaka 様:早速の返信ありがとうございました。
 ご好意に甘えて、もう一度返信の内容について教えて下さいませんか?

>>>最終列 = Columns("A:A").Specialcells(xlconstants).Count
>  ↑列でいいの?

行でした・・・。重ね重ね失礼しました・・。

>
>いまいち空白で無いセルの個数と列のかかわり具合がわかりませんが...。
>こんな感じでしょうか?
>
>For i = 1 To 11 Step 10
>  With Range(Cells(1, i), Cells(NO数, i)).Font
>    .Name = "MS ゴシック"
>    .Size = 10
>  End With
>Next

私のつたない知識を総動員して読ませて頂いたところ、
これは多分A列とさらに10列加算したK列に対して
1行目から順にフォントを設定していく繰り返しの処理だと
理解しました。
では、指定したい列が(A,K,R,U)の場合はどのような
記述になるのでしょうか?
(カウンタ変数を増減させる加算値が一定でない場合、
と表現すればいいのでしょうか)

【21131】Re:不連続なセル範囲の指定の仕方
回答  Jaka  - 05/1/12(水) 17:34 -

引用なし
パスワード
   数字でなくアルファベットにしました。
これで判断してください。

For Each cc In Array("A", "K", "R", "U")
  i = i + 1
  Range(Cells(1, cc), Cells(5, cc)) = i
Next

【21159】Re:不連続なセル範囲の指定の仕方
お礼  ラータ  - 05/1/13(木) 16:07 -

引用なし
パスワード
   ▼Jaka 様、またお名前はわかりませんが回答下さった方

いろいろご親切にありがとうございました。
何とか「For Each...Next」を使って、思い通りの処理を
することができました!
これまで繰り返しの構文はうまく書けず逃げていたのですが、
今回思い切って質問させて頂き、皆様のアドバイスのおかげで
何とかうまく動かせました。
こういう記述をすると(内容は簡単でも)なんとなくマクロ的な
処理ができたような気がして感激しています。

本当にありがとうございました<m(__)m>

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