Excel VBA質問箱 IV

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

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


10082 / 76734 ←次へ | 前へ→

【72205】Re:空ファイル作成マクロ
発言  UO3  - 12/6/20(水) 9:29 -

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

おはようございます

どう、うまくいかないのかがわからないのですがドカさんが試して見られた結果はOKということなので
具体的に、どこが思ったようにいかないのかを説明されてはいかがでしょう。

ですので、回答ではなく気が付いた点のみ。

おそらく Option Explicit を指定しておられないのでエラーにはなっていないのでしょうけど
vblnformation の 3ケタ目、小文字のエルですかね? vbInformation が正しいスペル。
あとは、cnsTITLE この定義が見当たらないのですが、これはモジュールレベルのコンスタントなんでしょうか?

  GYOMAX = Cells.SpecialCells(xlCellTypeLastCell).Row

SpecialCellsに指定する定数のなかで、このxlCellTypeLastCellは、ちょっとマギレがあるというか
厄介なことがあります。実行時にはデータがなく空白でも、かってデータがあったところは、ここで認識されてしまいます。

Do While Cells(GYOMAX, 2).Value = ""
    GYOMAX = GYOMAX - 1
Loop

あるセルから上に、空白ではないセルを取得するコードでしょうし、この形のコードはよく見かけます。
ただ、もう少し別のコードが一般的かなとも思います。

要は、B2からB列のデータ最終行までのループでしょうから、通常は以下のいずれかのコードを書くことが多いのでは?
(以下では式があり、空白のセルも対象になります。式があって空白のものは空白とみなすなら、それはそれで書き方はあります)

Sub Sample1()
  Dim z As Long
  Dim i As Long
  
  z = Range("B" & Rows.Count).End(xlUp).Row
  
  For i = 2 To z
    MsgBox Cells(i, 2).Value
  Next
  
End Sub

Sub Sample2()
  Dim c As Range
  
  For Each c In Range("B2", Range("B" & Rows.Count).End(xlUp))
    MsgBox c.Value
  Next
  
End Sub

4 hits

【72202】空ファイル作成マクロ chantaro 12/6/19(火) 22:02 質問
【72203】Re:空ファイル作成マクロ ドカ 12/6/20(水) 8:09 発言
【72204】Re:空ファイル作成マクロ chan taro 12/6/20(水) 9:13 発言
【72206】Re:空ファイル作成マクロ UO3 12/6/20(水) 9:34 発言
【72207】Re:空ファイル作成マクロ chan taro 12/6/20(水) 11:13 お礼
【72205】Re:空ファイル作成マクロ UO3 12/6/20(水) 9:29 発言
【72208】Re:空ファイル作成マクロ chan taro 12/6/20(水) 11:17 お礼

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