• ベストアンサー

エクセルのVBAについて

エクセルのVBAである行の最終セルを調べるのと、列を一列消去するような関数はあるのでしょうか?本を読んでものっていませんでした。わかる方よろしくおねがいします。

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

  • ベストアンサー
回答No.4

shishishishiです、こんばんは。 先ほどの質問の続きですね。 先ほどと列と行を入れ替えるとこんな具合になります。 Sub TEST() x = Cells(1, Columns.Count).End(xlUp).End(xlToLeft).Column MsgBox x For n = x To 1 Step -1 If Cells(1, n).Value = Replace(Cells(1, n).Value, "F", "") _ And Cells(1, n).Value = Replace(Cells(1, n).Value, "f", "") _ And Cells(1, n).Value = Replace(Cells(1, n).Value, "G", "") _ And Cells(1, n).Value = Replace(Cells(1, n).Value, "g", "") Then Columns(n).Delete Next End Sub

tttt12345jp
質問者

お礼

ありがとうございます。作ろうとしていたプログラムがほぼ出来上がりました。ありがとうございました。

その他の回答 (3)

  • error123
  • ベストアンサー率21% (54/247)
回答No.3

熱心ですね。ごくろうさま。 これでいかがですか? Sub TEST05() x = Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Columns MsgBox "最終列は" & x & "列目です。削除します。" Columns(x).Delete End Sub もし、1行目でないのであれば、x = Cells(1, の数字を変えてください。

  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

Sub Test() Dim LastCell As Range Dim R As Long Dim C As Integer '3行目の最終セル(最終列のセル) R = 3 Set LastCell = Range("IV" & R).End(xlToLeft) MsgBox LastCell.Address '8列目の削除 C = 8 Cells(1, C).EntireColumn.Delete End Sub 以上。

  • TT_TT
  • ベストアンサー率17% (16/90)
回答No.1

下記のようなので出来ませんか? '行の最終セルに移動 election.End(xlDown).Select 'メッセージボックスで最終行番号表示 msgbox Selection.Row 'A列選択 Columns("A:A").Select '選択列の削除 Selection.Delete Shift:=xlToLeft

関連するQ&A

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • エクセルVBAで

    エクセルのVBAのFor文のような繰り返し処理で、 for i = 1 to 最終行 のように、セルA1からデータが入力されている最終行まで繰り返すために最終行を求めたいのですがどうすれば良いでしょうか?

  • VBA 文字が入力されているセルを表示させたい

    ExcelのVBAで 列番号"A列"に文字を適当に打った時 文字が入っている最終セル(行番号)と その最終セルに入っている文字を "C1"のセルに表示させる というVBAを作成したいのですガ… どなたかわかる方教えて下さい 自分が考えたものはVBAが妙に長くなってしまい; Excelのバージョンが2000と古いので 古いのでも動くVBAだと助かります; 宜しくお願いします

  • エクセルマクロ 横向きのオートフィルについて質問

    VBA初心者です。エクセルでオートフィルのマクロに挑戦しています。 セルA2にすでに入力されている関数を横向きにオートフィルを行い、1行目の入力されている最終列まで行いたいです。1行目の最終列は可変です。 いろいろ調べても、「最終行まで」というものはあるのですが、「最終列まで」というものが見つからないので、どなたか助けてください!よろしくお願いします。

  • エクセルのVBAで

    ある列(仮にA列とします)の最終行がA30であり A25までは空白だとします。 この時に、A30の値をA29~A25=データの入力されていないセルに入力(コピー)するにはVBAでどのように記述すればいいのでしょうか? 最終行から、上にその最終行の値をデータの入力されているセルに達するまで入力(コピー)したいのですが。 分りづらい表現で申し訳ありませんが、よろしくお願い致します。

  • Excel VBAでセルの整列

    Excel VBAでセルの整列 現在、VBAを勉強中の者です。 最近、勉強を始めたばかりですが、この前何とかVBAを用いてセルの塗り潰しが出来る様になりました。 そこで、今度は色が塗り潰されたセルを添付した画像のように整列したいと考えていますが、どんな風にすれば良いのか見当がつきません。 誰か、教えてください。 やりたい事は、A列に結合されているセルがいくつか存在していて、B列を挟んでC列にA列に関連する文字が入力されています。 そして、C列には予めセルが塗り潰されている箇所がありますが、今回、C列において塗り潰されているセルのみを、結合されているセルの最終行に移動させたいのです。

  • ExcelのVBAにおけるLastRowという言葉

     ExcelのVBAにおいて、「最終行」即ち「(その列において)データが存在しているセルの中で最も下にあるセルの行番号」を取得する必要が生じる事が良くあります。  その様な場合には、Cells(Rows.Count,列番号).End(xlUp).Row か Range(列番号 & Rows.Count).End(xlUp).Row を用いて取得するのが主流ですが、多くの場合、最終行の行番号のデータが必要になるたびに取得しなおすのではなく、最初に取得した最終行の行番号を変数に格納しておき、最終行の行番号のデータが必要な場合はその変数を使って最終行の行番号を指定するのが普通です。  その様な最終行の値を格納する変数を使用する場合、私個人の場合は「何に使用するための変数であるのかという事を解りやすい変数名を用いる」という観点から、「LastRow」という変数名を好んで用いております。  この「LastRow」という変数名はあくまでそのVBAマクロ内だけで使用されるその場限りのものに過ぎない筈です。  しかし、このサイトのExcelのVBAに関する質問を眺めていると、例えば Range(”○○")からLastRowまで ○○セルからLastRowまで といった具合に、「LastRow」という言葉があたかも「『最終行の行番号』や『最終行のセル』を表す"一般名詞"」であるかの様に使用されている質問を時々見かける事があります。  これが「last row」であれば「最後の行」という意味の英語の言葉になりますから間違いとは言えません。  それに対し「LastRow」という単語は少なくとも英語には存在しません。  それにもかかわらず、「LastRow」という言葉が前述の様な一般名詞として使われているという事は、ExcelのVBAにおいて「LastRow」という言葉は、Excelのワークシートを使った処理における「作業列」などと同様のテクニカルタームになっているという事なのでしょうか?

  • エクセルVBAについて質問です。初心者です。

    エクセルVBAについて質問です。初心者です。 ユーザーフォームにリストボックスとコマンドボタンを1つずつ配置しています。  A列 B列 りんご 1 みかん 2 (りんご、みかん、1、2を太い罫線で四角に囲んでいます)    リストボックスには「りんご」と「みかん」が入っていて、りんごを選びコマンドボタンを押すと、「りんご」と「1」のセルが消去され、上方向にセルをずらすようにしています。 「みかん」を選びコマンドボタンを押すと「みかん」と「2」のセルが消えるのですが、そのとき「みかん」と「2」のセルの下段に引いている罫線まで消えてしまうのです。これを阻止する方法を教えていただけないでしょうか。 以下はコードです。 Private Sub CommandButton1_Click() Range("A1").Offset(ListBox1.ListIndex).Delete Shift:=xlUp Range("A1").Offset(ListBox1.ListIndex, 1).Delete Shift:=xlUp Unload UserForm1 End Sub おそらくこれに 「もし消去対象のセルが最終行のセルであれば With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlMedium End With これを行いなさい」という感じのコードを作ればいいと思うのですが、『もし消去対象のセルが最終行のセルであれば』の部分がうまく作れません…。 なおA列、B列の文字・値はどんどん増えていく可能性があるので最終行を使っています。 よろしくお願いします。

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • エクセル(vba)で教えてください。

    エクセル(vba)で教えてください。 vbaはほぼ初心者ですので、皆様のお知恵を拝借させてください 現在リストを作成しているのですが、最終更新日時を自動で取得するようにしてみたいのですが、うまくいかないです。 リストは列(項目)固定で、最終行に追加していくというものです。 1カテゴリ=1行での入力になります。 例えば、A,C列の項目のみ記入すると、その行のL列に自動で日時が入力される。 また翌日ブックを開いても、その日時は最終入力日のままだが、追加でD列の項目を 入力すると日時も更新される、というものです。 説明が足りないかもしれませんが、どなたか詳しい方よろしくお願いします。

専門家に質問してみよう