• ベストアンサー

マクロ罫線枠がある部分のみ左上~右下へナンバリング

以前 http://okwave.jp/qa/q7170027.html にて右への順方向への 番号付けを教えて頂き、参考になったつもりでしたが、後々良く見ても 未熟な自分が経験していない部分が多くあり、教本にも掲載が無く ほとんど理解できません。 番号付けの向きを変える場合はどこをイジるんだ?と、あれこれ やってみますが反応なく、私自身が固まってしまいます(恥。 そこで試しに添付の様に左上~右下へナンバリングするやり方を 教えて頂けませんでしょうか? 今後に生かしたいと罫線に関わらず他にも色んなパターンを集めています。 急いではいませんので、お時間の空いた時にでもお願いします。

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

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

前回のご質問では「横向けナンバリング」でしたので,全ての回答者が sub macro1実験してください()  dim h,n  for each h in range("セル範囲")   n = n + 1   h = n  next end sub タイプの巡回をしました。 for each nextタイプの「巡回方向」は決まっており,変更する方法はありません。 今回ご質問は「縦方向」なので, 方法1) sub macro2()  dim c, cs, ce, r, rs, re, n  cs = range("セル範囲").column  ce = cs + range("セル範囲").columns.count - 1  rs = range("セル範囲").row  re = range("セル範囲").cells(range("セル範囲").count).row  for c = cs to ce   for r = rs to re    n = n + 1    cells(r, c) = n   next r  next c end sub のようなカンジで,意図的に縦ループと横ループを廻す必要があります。 方法2) 現在の対象セル範囲をコピーし,どこかの作業場所に「形式を選んで貼り付け」の「行と列を入れ替える」で縦横をひっくり返してやれば,横方向の巡回(前回と同じ向き)で処理が出来ます。 作業完了後,またコピーして元の場所に「行列を入れ替える」で貼り戻してやれば,完成です。

OKBob
質問者

お礼

いつも回答ありがとうございます。 方法1のスマートなコードに感心してしまいますが、これは熟知しきった方だからできる裏技的なコードだと思いますが、少しずつでも解読して理解できるようにします。 方法2を提案されて、「あ!そうだ、この手があった!」と真っ先に飛びつきました(笑。ナンバーは左上スタートの右下エンドなので、左上→右下の線対象の罫線図であれば問題なく使える事になります。実際にやってみてうまくいきました!楽な道を取りますが、とりあえずこれで進めてみようと思います。 また機会がありましたらお願いします。ありがとうございました。

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

その他の回答 (6)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.7

こちらでは問題なく動作しているので原因はわからないのですが 他の質問の回答した時も似たような事があったので変数名を変えてみてください。 Sfori1、Sforj2、Efori1 Eforj2 の4つです。

OKBob
質問者

お礼

最後までお付き合い下さいましてありがとうございました。 せっかく助言を頂き、また、もう少しかじりたかったのですがそろそろ閉じることにします。それでも時間を作って(皆さんの力作を)アレンジしながら試してみます。ムダにはしません。またの機会にもお力をお貸し下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • mar00
  • ベストアンサー率36% (158/430)
回答No.6

インプットボックスで付番を縦方向か横方向か指定するようにしています。 範囲を指定してから実行してください。(大きめでも可) Sub Macro1() x = InputBox("作成する方向を指定して下さい。" & Chr(10) & "縦方向: 1" & Chr(10) & "縦方向: 2") If x = "" Then Exit Sub If x = 1 Then Sfori1 = Selection(1).Column Sforj2 = Selection(1).Row Efori1 = Selection(Selection.Count).Column Eforj2 = Selection(Selection.Count).Row Else Sfori1 = Selection(1).Row Sforj2 = Selection(1).Column Efori1 = Selection(Selection.Count).Row Eforj2 = Selection(Selection.Count).Column End If COUNTER = 0 For i = Sfori1 To Efori1 For j = Sforj2 To Eforj2 If x = 1 Then If Cells(j, i).Borders.LineStyle <> xlNone Then COUNTER = COUNTER + 1 Cells(j, i) = COUNTER End If Else If Cells(i, j).Borders.LineStyle <> xlNone Then COUNTER = COUNTER + 1 Cells(i, j) = COUNTER End If End If Next j Next i End Sub

OKBob
質問者

補足

回答ありがとうございます。 私の変数宣言が悪いのか?「実行エラー91:オブジェクト変数またはwithブロック変数が設定されていません」と出ます。実際に確認されての回答だと思いますので、あとこれだけ追加すれば動くよ!というものがありましたらお手数でも追記願えませんでしょうか?。ちなみに(エクセル2007_Ver12.0.6557....)です。 そろそろ解決催促がきますので明日には閉じようと思っています。

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

No.4です! たびたびごめんなさい。 前回のコードを下記に訂正してみてください。 >For j = 1 To Selection.Columns.Count を >For j = Selection(1).Column To Selection(Selection.Count).Column に! >For i = 1 To Selection.Rows.Count を >For i = Selection(1).Row To Selection(Selection.Count).Row に! これでどこで範囲指定しても大丈夫だと思います。 何度も失礼しました。m(_ _)m

OKBob
質問者

お礼

継続回答ありがとうございます。 ANo.4と併せてこちらに書かせて頂きます。 まだまだ未熟な私でももう少しで理解できそうなコードで興味あります。実際にやってみましたら、提示した図のまま(全て1行マス)では問題なく動きましたが、2行にしたり、形を変形させたりすると番号が崩れてしまいます。予め伝えていなかった私が悪いのですが、この図に限らず色んなパターン図で使いますので、もう少しコードを追加する事で完成形になりそうです。せっかく回答下さいましたが、これに懲りずに次回もおつきあい下されば嬉しいです。ありがとうございました。

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

こんにちは! 一例です。 Sub test() Dim i, j, k As Long For j = 1 To Selection.Columns.Count For i = 1 To Selection.Rows.Count If Cells(i, j).Borders.LineStyle = xlContinuous Then k = k + 1 Cells(i, j) = k End If Next i Next j End Sub ※ A1セルから範囲指定してマクロを実行してみてください。 >Selection.Columns.Count や >Selection.Rows.Count を使っていますので、範囲指定した列数・行数だけしかマクロが走りません。 かなり広めに範囲指定しておいても構いません。 参考になりますかね?m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

keithinさんが言われていることですが 1列毎に縦にループする例です。 Dim cc As Range Dim c As Range For Each cc In Range("B2:J10").Columns '列(横)ループ For Each c In cc.Cells '列内で行(縦)ループ Msgbox c.Address '仕事 '仕事 '仕事 Next Next

OKBob
質問者

お礼

継続回答ありがとうございます。 前回お応え頂きました横方向と、今回の縦方向の2種の図が必要となり、罫線図をコピペする必要もありますのでkeithinさん提案の「形式を選んで貼り付け(S)」を候補とさせて頂くことにしました。 せっかく回答頂きましたので、勉強リストに入れさせて頂きます。今後ともよろしくお願いします。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

http://okwave.jp/qa/q7170027.html の#2さんのコードで > If c.Borders(i).LineStyle = xlNone Then ここの部分を変更することになります。 でもコード書いちゃうとタメならないので、 「マクロの記録」で「セルの上下左右を罫線で囲む」コードを作成してみてください。

OKBob
質問者

お礼

返答ありがとうございます。 そうなんですよね。 本当はヒントを貰うだけで、自分で解決に持っていきたいところです。 がしかし、秋にマクロを始めてここ3か月位時間が無くてさぼってますのでほとんど忘れてしまったのが事実です(泣 これ!をやりたい、との目標がなく、たま~に必要に応じて過去のものから応用するくらいで、なかなか進歩がありません。また次回、お願いします。

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

関連するQ&A

  • マクロ 罫線枠がある部分のみ左上からナンバリング

    お世話になります。 要はマクロにてタイトル(添付画像)のようにしたいのですが、 どのように書けばよいのでしょうか? 内側の空白部分も繋がりがなくても罫線で囲われているので かなり難しい印象です。 お分かりになる方、よろしくお願いします。

  • そろばんの教え方

    来年から小学校に上がる子がおります。 だから、と言う訳ではありませんが、そろばんってちょっと「ゲーム」のようで面白いし、「5で因数分解」の感覚は後々まで役立ちます。 なので、夫と「そろばんだけは習わせたいね」と話してきました。 そうは言っても折角子どもと遊びまくっている日々に、一つ楽しみを増やす、と言う意味で私が教えてみたいのです。(幼稚園は行かせておりません) 10までの数えは大丈夫ですが、それ以上数える事って日常であまり出て来ませんし、何か「数と生活」の関連づけが欲しくもあります。 実際にそろばんは用意済みですので、弾いてみてはいますが、 「1+1」と言っても、ひとーつ、ふたーつと数えてしまっては意味が無いような、あるような。。。^^; 何か良い教本のような物や、方法をご存知の方、いらっしゃいましたらお力をお貸し頂けましたら嬉しいです。 数学は大好きなのに、苦手で悔しい思いをした母親(恥)でも出来るでしょうか。。。 教室に通わせてしまった方が良い、と言うご意見でも構いません。 よろしくお願いします。

  • 千鳥格子の向きって

    千鳥格子についてです。 *最初に、この質問上の表現の統一として、パターンの一個一個を「鳥」と見まして、クチバシ側(口が開いてる)と、ツバサ側(後方に伸びている)として表現いたします。 このパターンの生地を使って、服を作ろうと思っています。 生地の裏表の違いがないので、どの向きでも使用可能なのですが、はたして、正しい「鳥の向き」とゆうのがあるのでしょうか? 斜めに飛んでいるのは間違いありませんが、右上、右下、左上、左下、と4方向のどの方向に飛ぶのがセオリーなのでしょうか? 服を色々見ていると、クチバシ側が斜め上方向を向いているものが多い気がします。 さらに、なんとなくの傾向ですが、女性物は右上が多いような。 と言っても、例外はたくさんありました。 斜め下方向に向いている服もあります。 自由っちゃ自由なのでしょうが、このデザインが生まれた状況など、やはりセオリーとゆうか、基本形があると思います。 知った上で、それに習うとか、逆を向かせるとか、やりたいです。 ご存知の方いらっしゃいませんか?

  • マクロで罫線をひく

    いつもお世話になっております。 下記コードで罫線を引こうとすると、 四つのセルにそれぞれ四角の罫線が引かれて しまいます。 ex.Range(ex.Cells(1,1),ex.Cells(4,1)).Select exApp.Selection.Borders.LineStyle = 1 実現したいのは、一度に四つのセルを一つの四角で 囲みたいのですが、方法がわかりません。 お手数ですが、お分かりのかたがおられましたら、 よろしくお願いいたします。

  • デジカメの左上部分が、ぼやけてしまいます。

    Canon の IXYdigital800IS を使用しています。 同モデルを2台所有していますが、内1台についてだけの現象で困っています。 それは、通常の撮影モード(マニュアル撮影でない)での標準的な向きにおいて、 毎回、画面の左上がぼやけてしまいます(ブレる場所はここだけです)。 スーパーファイン、M1サイズ、手ブレ補正:入り にしており、撮影時は、ピント マークが出てから押し込んでいます。 家庭で使う1台は、ブレが全くなく、仕事用の1台だけに発生する現象です。 レンズを撮影時とは逆の前から覗くと、汚れがついている様に見えます。 お詳しい方、ご指導よろしくお願いします。

  • 一太郎2004、罫線枠から次罫線枠への自動改行について

     PC超初心者です。仕事で使っている所定の様式(起案文書とか稟議書類とかいうらしい?)への入力方法についてご教示をお願いします。  使用ソフトは一太郎2004です。その様式は表題部分(文書保存の扱いや役職別の押印欄、件名などを記す)と、詳細を記述する部分に分かれており、どちらも全体枠で囲まれています。  そして記述部分は入力行、罫線、入力行、罫線・・・となっていて、入力を続けていって一行に収まりきらない文字は罫線枠の中で二行、三行・・・と改行されるため、入力効率が悪いと思えてなりません。  そこで、具体的に教えていただきたいのは入力を続けていって一行で収まりきらない文字は、次の罫線行、その次の罫線行という具合に入っていくように出来ないものだろうかということです。  ご教示の程、宜しくお願いします。

  • Wordで罫線が引きたい 罫線ツールバーで引こうとすると枠になってしまう

    Wordで縦とか横の罫線が引きたいのですが、罫線コマンドで引こうとすると枠になってしまう。図形描画ではなくて罫線コマンドの罫線を引くで、横とか縦の線を引くにはどうしたらいいのでしょうか。

  • 右下部分に配置

    ホームページ作成初心者です。スタイルシートを使って作業しています。 レイアウトに関する質問です。「height」と「width」で大きさを指定した大きな「div」のブロックの中の右下部分に、小さい「div」のブロックや画像を配置する方法は存在するのでしょうか?

    • ベストアンサー
    • HTML
  • Excel VBAの範囲の取得について

    Excel VBAを使い、ある範囲に含まれるセル番号を取得しようとしています。 まず、ある範囲、の指定方法から悩んでいます。 ある範囲を、A1:C5とした場合、 1.A1:C5に同じ文字列を入力し、それを判別して同じ範囲内だと判断させる。 2.A1:C5の範囲に名前を付ける。 3.A1:C5のセルを結合する。 などの方法を思いつきました。 それ以降の処理はA1:C5の範囲だと、『左上はA1,右下はC5』という風に、範囲を作っている左上と右下のセル番号を参照するようにしたいと思っています。 分からなくなってしまっているのは、他に範囲として扱いたい数個のセルが別にも幾つかあって、それを最初に認識した範囲とは別物だと扱いたいと思っています。 たとえば、先ほどA1:C5という範囲を決めましたが、D2:E4という別の範囲があるとします。 A1から順に調べて行って、C5までが同じ範囲と判断されたら、また次のひと塊の範囲はないか調べ、D2:E4が見つかったら処理をする、という感じなのですが、一度調べた範囲はもう調べないとする方法が思いつきません。 ひとくくりにしたい範囲は、毎度変わりますし、範囲に含まれるセルの数もまちまちです。 上記の、範囲を決める3つの方法それぞれによって、その後の方法も変わってきそうな感じがするのですが、どれが一番適当な方法かも決めかねています。 範囲指定しようとしているセルが一つのみだった場合、結合している範囲かどうかを調べる方法は使えない気もします。 分かりづらい質問で申し訳ありません。 よろしくお願いいたします。

  • 罫線部分しか印刷されない

    exelで票とドキュメントの文書印刷です。印刷イメージ上は全て印刷されるように見えているのですが、印刷プレビューまで行くと、票のみ表示されドキュメントが表示されません。実際印刷すると票の罫線のみ印刷され、ドキュメントが印刷されません。 ※OKWAVEより補足:「EPSON社製品」についての質問です。

操作パネルが点灯しない
このQ&Aのポイント
  • ブラザー製品のDCP-j988Nで操作パネルが点灯しないトラブルについて相談です。
  • スイッチは点灯しているが操作パネルが点灯しない現象が発生しています。
  • お使いの環境はAndroidで無線LAN接続です。関連するソフトや電話回線の種類は特にありません。
回答を見る

専門家に質問してみよう