プロが教えるわが家の防犯対策術!

 Excel VBAについて質問します。すいませんが宜しくお願いします。

画像の様に、A列の最終行とF列の最終行が異なった時に、
A列とF列の位置を、メッセージボックスで表示したいのですが、

例えば、画像で説明しますと、"最終列はA11とF9です"
こんな感じで表示されると良いですが、
お手数ですが教えて頂けますか?

「VBA 指定の列の最終行を取得」の質問画像

A 回答 (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
    • good
    • 1
この回答へのお礼

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

お礼日時:2014/07/02 16:05

sub macro1()


msgbox "最終行はA" & cells(rows.count ,"A").end(xlup).row & "とF" & cells(rows.count, "F") & "です"
end sub

ぐらいで十分です。


#参考
上から落としていく(Ctrl+↓)のでは、データが無い場合など幾つかの状況で意図した結果が計算できないので注意してください。
    • good
    • 1
この回答へのお礼

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

お礼日時:2014/07/02 15:57

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/07/02 15:57

こんにちは!


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
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/07/02 15:56

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