• ベストアンサー

VBA 指定の列の最終行を取得

 Excel VBAについて質問します。すいませんが宜しくお願いします。 画像の様に、A列の最終行とF列の最終行が異なった時に、 A列とF列の位置を、メッセージボックスで表示したいのですが、 例えば、画像で説明しますと、"最終列はA11とF9です" こんな感じで表示されると良いですが、 お手数ですが教えて頂けますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

>画像の様に、A列の最終行とF列の最終行が異なった時に 一応、異なった時にメッセージを出力します。 質問を読むと、A列とF列は例のように思えたので、A列を基準に他の列の最終行が異なれば異なった列をすべて表示します。A列からF列まですべて同じ行数ならなにも表示しません。(最後のコメント文を有効にすれば出力します) ご参考に。 Sub Test()   Const maxColumn = 6 '列数 A~Fの6列      Dim LastRow(maxColumn) As Long '各列の最終行   Dim c As Integer       '列カウンタ   Dim msg As String       'メッセージ      '各列の最終行を調べる   For c = 1 To maxColumn     LastRow(c) = Cells(Rows.Count, c).End(xlUp).Row   Next   'A列との違いを調べる   For c = 2 To maxColumn     If LastRow(1) <> LastRow(c) Then       msg = msg & "と" & Cells(LastRow(c), c).Address(0, 0)     End If   Next      'メッセージの出力   If Len(msg) > 0 Then     msg = "最終行は" & Cells(LastRow(1), 1).Address(0, 0) & msg & "です"     MsgBox msg   Else     'MsgBox "最終行は全て " & LastRow(1) & "行目です"   End If End Sub

awmori
質問者

お礼

回答ありがとうございます。 希望した通り、最終行が異なった時に、その列の位置をMsgBoxにて表示する事が来ました。 それプラス各列の位置もMsgBoxで表示できたのが良かったです。 助かりました。 今後ともよろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

sub macro1() msgbox "最終行はA" & cells(rows.count ,"A").end(xlup).row & "とF" & cells(rows.count, "F") & "です" end sub ぐらいで十分です。 #参考 上から落としていく(Ctrl+↓)のでは、データが無い場合など幾つかの状況で意図した結果が計算できないので注意してください。

awmori
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。

すると、全ての回答が全文表示されます。
  • ambriel
  • ベストアンサー率51% (65/127)
回答No.2

Ctrlキーを押下しながら方向キーを押すと、データが不連続な場所までフォーカスが飛びます。 (例えばA65535セルを選択しておいて[Crtl+↑]を押すと、空欄と入力ありの境目である図のA11が選択される) これを利用して、例えば以下のような感じで各列の最下行を取得して、後は各列の値を比較して好きな処理をしてやればよいのではないでしょうか。 Dim YOKO As Long Dim ROW_COUNT() As Long Dim i As Long Cells(1, 1).Select YOKO = Selection.End(xlToRight).Column ReDim ROW_COUNT(YOKO) For i = 0 To YOKO Cells(1, i + 1).Select ROW_COUNT(i) = Selection.End(xlDown).Row MsgBox i + 1 & "列目の行 : " & ROW_COUNT(i) Next

awmori
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! A列・F列だけというコトであれば・・・ Sub Sample1() Dim lastRowA As Long, lastRowF As Long lastRowA = Cells(Rows.Count, "A").End(xlUp).Row lastRowF = Cells(Rows.Count, "F").End(xlUp).Row MsgBox "最終行は" & Cells(lastRowA, "A").Address(False, False) & "と" & _ Cells(lastRowF, "F").Address(False, False) & "です。" End Sub こんな感じではどうでしょうか?m(_ _)m

awmori
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。

すると、全ての回答が全文表示されます。

関連するQ&A