• 締切済み

ページ追加方法 について VBA

watabe007さま 何度も何度も申し訳ありません エクセルVBAてお世話になっております 前回教えて頂いてから、理想通りに出来たのですが先方の要望が変わりました困っております 何も指定のないシート名の中で、何が何列何行くるかもわからない 空白列、空白行もある可能性もある、だがその中で一番長い行を探した上でその最終列の一行目にページ番号が追加されるようにしたい、という要望です シート内全ての最終列を取得した上で、一番上に入れる方法はございますでしょうか? 何度も何度も申し訳ありません どうかご教授頂けますと有難いです

みんなの回答

noname#252888
noname#252888
回答No.4

No.1,2です。 No.3さんが答えだしてくれたので 私は組みませんね。

  • HohoPapa
  • ベストアンサー率65% (454/691)
回答No.3

https://okwave.jp/qa/q9643009.html これの延長にある話なんでしょうか。 求めている内容がよくわかりませんが 以下のコードでいかがでしょうか。 特にコードの説明はしませんので 読み取ってみてください。 期待と違うとか、よくわからなければ 聞いてください。   Sub Sample()  Dim Keys() As Variant  'シートの特定の部分文字列の羅列  Dim KeysCount As Long '部分文字列の数  Dim KeyCounter As Long '部分文字列のカウンター  Dim ShCounter As Long 'シートカウンター  Dim PageNum As Long 'ページ番号  Dim MaxColNum As Long '最右列番号    With ThisWorkbook   Keys = Array("*XXX*", "*YY*", "*Z*", "*123*")   KeysCount = UBound(Keys) + 1     PageNum = 0   For ShCounter = 1 To .Sheets.Count    For KeyCounter = 1 To KeysCount     If .Sheets(ShCounter).Name Like Keys(KeyCounter - 1) Then      PageNum = PageNum + 1      MaxColNum = .Sheets(ShCounter).UsedRange.Column      .Sheets(ShCounter).Cells(1, MaxColNum + 1).Value = PageNum      Exit For     End If    Next KeyCounter   Next ShCounter  End With End Sub

noname#252888
noname#252888
回答No.2

なるほど。 じゃあ今日の夜にちょっと家で組んでみますかね。 夜回答します。 それでは遅いならその旨回答下さい。

noname#252888
noname#252888
回答No.1

VBAでやりたい事なんてググれば大抵出て来ますよ。 貴方がしたいのは このサイトの中盤に有る「特殊な表の場合」のケースですね。 https://excel-ubara.com/excelvba4/EXCEL222.html

beeeeyan
質問者

お礼

回答ありがとうございます。 そちらのサイトは存じております。 私の説明が悪く分かりづらくて申し訳ありませんが、調べても分からないので聞いております 最終列を取得する、used~などネットにあるものは色々試しているのですが細かいところが理解できないのでお尋ねした次第です

関連するQ&A

  • エクセルのVBAで

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

  • VBA 一つのシートにまとめる

    下記の条件でVBAではどうすればいいのか、教えて頂けませんでしょうか・ TEST1.xls TEST2.xls TEST3.xls ・上記には、それぞれDATA1シートとDATA2シートがあります。 ・このうち、3つのブックのDATA1シートのB列からT列の2行目から最終行までを、matome.xlsのmatomeシートの最終行から追加していきたいのです。 仮に、matome.xlsのmatomeシートの最終行(データがある行)が50行目だった場合、 TEST1.xlsのB列からT列の2行目から最終行を51行目に貼り付け、それが75行目までだったとすると、TEST2.xlsのB列からT列の2行目から最終行のデータは76行目からといった感じです。 わかりづらくて申し訳ありませんが、よろしくお願い致します。

  • vbaで・・・

    vba初心者でよろしくお願いします。 vbaで別のシートにある、条件に一致したデータの入っているセルの一つ下のセルから横方向に空白のひとつ前までを選択し、コピーをしたいのですが・・・具体的には 別のシートにある、 あ あ あ あ 空白 い い い い 空白 1 2 3 4 空白 5 6 7 8 空白 の、最初の"い"の下のセル(つまり"5"のセル)から横に空白のセルまでをコピーして、さらに、列と行を入れ替えて別のシートにコピーしたいのですが、ちんぷんかんぷんです。 どなたか力を貸して下さい。お願いします。

  • 不規則エリアの連続計算方法(VBA)

    度々お世話になっております。 エクセルVBA勉強中の初心者です。 現在、下記のような数値データが入力されています。 処理したいのは、 A列・・・・・・・・・・・・処理後B列 1行目 空白・・・・・・空白 2行目 1・・・・・・・・・・・1 3行目 2・・・・・・・・・・・2 4行目 3・・・・・・・・・・・3 5行目 4・・・・・・・・・・・4 6行目 5・・・・・・・・・・・5 7行目 空白・・・・・・空白 8行目 1・・・・・・・・・・・6→第一エリア目の最終行と足し算 9行目 3・・・・・・・・・・・8→同上 10行目 4・・・・・・・・・・・9→同上 11行目 6・・・・・・・・・・・11→同上 12行目 空白・・・・・・空白 13行目 2・・・・・・・・・・・13 →第二エリア目の最終行と足し算 14行目 4・・・・・・・・・・・15 →同上 15行目 7・・・・・・・・・・・18 →同上  ・                ・  ・                ・ 各エリアは、各1000行程度、エリアの数は、10~20になるため、どうしてもVBAで処理したいと考えております。 (空白~空白をエリアと名付けています。) 各エリアの数、行数ともに区々ですが、最大値を迎えた後、空白行が必ず入るようにデータが入力されています。 このようなデータをVBAで処理したいのですが、可能なのでしょうか? 参考書、過去ログなどを見てあれこれやってみたのですが、パニック状態です。 わかりにくい質問で恐縮ですが、良い方法をご教授いただければ幸いです。 宜しくお願いいたします。

  • 複数列を1列に表示させて追加する方法。

    どなたかご存じでしたらご回答をお願いします。 エクセルシートのA列~J列に値が入っており、それぞれの最終行に値を追加しております。 【質問】  A列~J列まで値の入ったエクセルシート(各種値)を別エクセルシート(纏め)のA列に  1つに纏め、エクセルシート(各種値)のA列~J列の最終行に追加されるたびに  エクセルシート(纏め)の最終行に追加する方法が知りたいです。 ●エクセルシート(各種値)  A   B  C  D  E  F  G  H   I   J                :  111 222 333 444 555 666 777 888 999 000  123 456 789 112 223 334 445 556 222 778 <= 最終行追加! ●エクセルシート(纏め)  A   :  111  222  333  444  555  666  777  888  999  000  123 <= A列最終行  456 <= B列最終行  789 <= C列最終行  112 <= D列最終行  223 <= E列最終行  334 <= F列最終行  445 <= G列最終行  556 <= H列最終行  222 <= I列最終行  778 <= J列最終行 【注意事項】   ・A列~J列に入っている値には同じ値が入る場合があります。(重複あり)   ・使用するエクセルは2010です。 以上、よろしくお願いします。    

  • VBAで行のコピー

    タイトルの通りなのですが、VBAで行のコピーを行いたいのですが、うまくいきません。教えて下さい。  あ 1 (空白)  い 2 A  う 3 (空白)  え 4 (空白)  お 5 B この様な表があるのですが、3列目に空白以外の文字があった場合その下に1行コピーをしたいのです。 上の表の場合は3列目にAがあるので"い"と"う"の間に"い"の行をコピーしてもう一行入れたいです。Bについても同様です。 すいませんが、教えていただければありがたいです。 よろしくお願いいたします。

  • Excel 任意の行数・列数のデータを合体VBA

    VBAで、Sheet1のデータの最終行に Sheet2の同じ並びのデータを続けてくっつけ、 Sheet3に(Sheet1とSheet2のデータが)連続した状態をつくる場合のVBAの書き方を教えてください。 ちょうどSheet1のブルーの範囲(ただし最終行はn行=データは様々で最終行は不特定だが最終行の下にはもうデータはない、最終m列の右にはまだデータが膨大にあるが、今回はA~m列(ここではA~AX列と指定可能)をコピーしたい) に Sheet2の黄色い範囲(ただし最終行はn行=データそれぞれで不特定だが最終行の下にはもうデータはない、最終m列はSheet1と同じ構成=A~AX列) をくっつけたい。 ・アウトプットはSheet3。 (Sheet1とSheet2はいじらずそのまま残す) ・コピーして貼り付ける(複写する)のは、値だけ (罫線とか計算式は不要) です。 よろしくお願いします。

  • VBA 印刷について(空白ページを印刷しない)

    エクセル VBAで空白のシート及び空白ページを印刷しない方法を教えてください。 見積明細シートが明細1、明細2と9まであります。 各シート見積もりの内容によりページ数が異なり 入力の無いシートもあります(明細3以降入力無し等) 又、2行目まではタイトル行のためシートに最初から入力済みです。 縦横とも罫線を引いてあります。 A    B   C   D    E   F 1 項目  適用  単価  単位  金額   備考← タイトル行 2                        ← タイトル行 3 ここから入力 4 5 ↓ 1ページ23行 例えば、明細1 24行まで入力した場合、2ページめの最後(44行目まで) 印刷したい。 明細2以降 タイトル行以外にデーターが有れば印刷、なければ印刷しない。 様な感じです。 最終行まで印刷するところまでは自力でたどり着いたのですが、それだと最終行よりしたの罫線が印刷されなくて困っています どなたかご教示願います

  • エクセル2003のVBAを教えて

    エクセル2003のVBAを教えてください。 次の対象データで、(1)(2)(3)の作業が出来るエクセルVBAを教えて下さい。 (1)(2)(3)個々のVBAでお願いします。 ●対象データ:種類(A列)、文字(B列)、    データの行数:不特定なので、データのある最終行までとします。 ●教えていただきたい項目  (1):種類だけを(C列)に取り出す。  (2):種類の先頭に空白の行を3行入れて、追加の2行目の種類(A列)に文字(B列)を入れる。  (3):種類が5行以上あるときは、5行ごとに空白行を追加する。 ●対象データ 種類(A列)   文字(B列) AA       あああ BB       いいい BB       いい BB       いいい CC       うう CC       うう DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ ●(1)のVBAの結果(このようになるVBAを教えてください。) (C列) AA BB CC DD ●(2)、(3)のVBAの結果(このようになるVBAを教えてください。) 種類(A列)    文字(B列) あああ AA        あああ いいい BB        いいい BB        いいい BB        いいい うう CC        うう CC        うう ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ

  • Excel マクロ・VBAの印刷方法について

    急ぎの回答です!! 関数式の入っているセル(空白表示)を印刷範囲に入れずに印刷する方法を教えてください。 別シートのデータを関数で引っ張てきてひな形のセルに表示しています。 行→$1:$6 列→$A:$Agは印 刷タイトルに設定。 A列7行目から1.2.3... とNo.が入っており、 B.~J. 列7行目からはデータが最終の50まで入力してます。( 関数式=IF(COUNTIF(コード,$S$1)<ROW(A1),"",OFFSET([元リスト.xlsx]商品一覧!A1,MATCH($S$1,コード,0),1)) ) K.~AG.列7行目からは書式データ(同じ文面の繰り返です。最終の50まで入っています)B~J列の7行目から関数(データ)=IF(COUNTIF(コード,$S$1)<ROW(A1),"",OFFSET([元リスト.xlsx]商品一覧!A1,MATCH($S$1,コード,0),1))をコピぺと一部を変更しセルへ入力して別シートからデータを引っ張てきてます。この関数だと該当する値がない場合はセルは表面上は空白セルに見えますが、セルには数式が入っている状態です。セルデータの最終行を習得し印刷に設定すると関数入力されているところで最終行と認識し、関数式を入れている50行まで印刷してしまいます。 したいことは、データが表示されている30行までなら30行まで印刷という感じにはできないでしょうか? シートを様式一枚ずつ作成しており、1ブックには20シートずつ保存しています。そしてこのブックはおよそ30ブックあります。 1ブック内の全てのシート(20シート)に反映できるようしたいです。 ※30行までデータが表示されている場合、C~Jには途中とちゅうで空白欄がありますが、B列は30行全てデータの表示(該当する場合)されます。 Excel マクロ VBA に詳しい方回答お願いします! B7からはB56まですべて関数式を入力しています(最大50までデータが表示されるように) シート枚数と、元のデータ数が行で7000程とかなり多く、このような関数式になりました。できればマクロ、VBA等での処理が望ましいです(時間がないので><)よろしくお願いいたします!!!

専門家に質問してみよう