• ベストアンサー

シート名が半角数値だったら、それら全シートに設定を。

エクセル2000です。 マクロを作成したいのですが、どなたかお知恵をお貸しください。 やりたいこと。 シート名が半角数値だったら、それら全てのシートに下記の設定を施しなさい。 ↓ココから 選択した全シートの1行目は左揃え。 選択した全シートの2行目,3行目は中央揃え。 選択した全シートの4行目以下の全行について、横位置を・・・ A列→中央揃え B列→左揃え C列→中央揃え D列→右揃え E列→左揃え&折り返して全体を表示する。 F列→中央揃え G列→中央揃え 選択したシート全ての縦位置を・・・ 全てを中央揃え ↑ココまで ↓ココから ↑ココまで  は、自動マクロですでに作成してあるので、OKです。 知りたいこと。 シート名→1,2,3,・・・、いくつまでシートがあるかは不明確であり(今後増える)、 かつ、数値が飛び飛びになる可能性がある場合の設定の仕方を知りたいです。 シート名が1,2,4,5,10・・・などとなる場合があります。 このような場合、どのように設定したら良いのでしょうか。 よろしくお願いいたします。

noname#4540
noname#4540

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

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

下のように  ws.Activate を追加  Range( ) をws.Range( ) にします。  最後のCells も ws.Cells にします。  ワークシートをアクティブにして、どのワークシートか明示する必要があるわけです。 Sub 何か処理()   Dim ws As Worksheet   For Each ws In Worksheets     If IsNumeric(ws.Name) And ws.Name = StrConv(ws.Name, vbNarrow) Then       '処理をここに書きます       ws.Activate           '***追加       ws.Range("A4:A65536").Select  '***『ws.』を追加       With Selection         .HorizontalAlignment = xlCenter       End With       ws.Range("B4:B65536").Select       With Selection        :        :        :        :       ws.Cells.Select         '***『ws.』を追加       With Selection         .VerticalAlignment = xlCenter       End With     End If   Next End Sub

noname#4540
質問者

お礼

お返事が遅くなり、すみませんでした。 昨日、お返事を拝見し、やってみました。 うまく行きました。 マクロって難しいです。 使いこなせるようになったら、きっと世界が広がるんでしょうね。 私も頑張って勉強するので、また機会がありましたらよろしくお願いいたします。 このたびは本当にありがとうございました。

その他の回答 (3)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

再びこんにちは。 #3さんから回答出てますが、、、 Sub ATest() Dim ws As Worksheet, checkFlg As Boolean Dim checkValue As Integer For Each ws In Worksheets  If IsNumeric(ws.Name) Then   For i = 1 To Len(ws.Name)    checkFlg = True    checkValue = Asc(Mid(ws.Name, i, 1))    If Not (checkValue <= 57 And checkValue >= 48) Then     checkFlg = False     Exit For    End If   Next i  End If  If checkFlg Then   With ws   .Range("A4:A65536,C4:C65536,G4:G65536"). _         HorizontalAlignment = xlCenter   .Range("B4:B65536,F4:F65536,E4:E65536"). _         HorizontalAlignment = xlLeft   .Range("D4:D65536").HorizontalAlignment = xlRight   .Range("E4:E65536").WrapText = True   .Cells.VerticalAlignment = xlCenter   End With  End If  checkFlg = False Next ws End Sub

noname#4540
質問者

お礼

再びありがとうございました。 今日、これから会社へ行って試してみます。 マクロって、なかなか難しいです。 勉強不足を実感しています。 また機会がありましたら、よろしくお願いいたします。 このたびは、本当にありがとうございました。

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

こんな風にも書けます。 >シート名→1,2,3,・・・、いくつまでシートがあるかは不明確であり(今後増える)、 >かつ、数値が飛び飛びになる可能性がある場合の設定の仕方を知りたいです。 For Each で対応しています。 >半角数値 半角数値文字列ということで、   IsNumericと、強制的に小文字に変換した文字との一致を調べています。   (小数点付数値やマイナス数値には言及されていないので、ないものとしています) Sub 何か処理()   Dim ws As Worksheet   For Each ws In Worksheets     If IsNumeric(ws.Name) And ws.Name = StrConv(ws.Name, vbNarrow) Then       '処理をここに書きます     End If   Next End Sub

noname#4540
質問者

お礼

すみません。補足要求させてください。 下記の方へのお礼欄に書いたことと同じ状態になってしまいました。 自動マクロで作成した部分を指示通りの位置に入れてみました。 困っていること。 シート「1」を選択しておいてマクロを実行すると、シート1は期待通りの結果となります。 しかし、これを2,3,5・・・といちいちシートを選択しないと、マクロが実行できません。 半角数値のシート名だったら、それぞれのシートを選択するまでもなく、全シートに設定したかったのですが、変更可能でしょうか。 自動マクロで作成した部分がおかしいのでしょうか・・・。 再度、ご教授いただければと思います。 よろしくお願いいたします。 Sub 何か処理() Dim ws As Worksheet For Each ws In Worksheets If IsNumeric(ws.Name) And ws.Name = StrConv(ws.Name, vbNarrow) Then '処理をここに書きます Range("A4:A65536").Select With Selection .HorizontalAlignment = xlCenter End With Range("B4:B65536").Select With Selection .HorizontalAlignment = xlLeft End With Range("C4:C65536").Select With Selection .HorizontalAlignment = xlCenter End With Range("D4:D65536").Select With Selection .HorizontalAlignment = xlRight End With Range("E4:E65536").Select With Selection .HorizontalAlignment = xlLeft .WrapText = True End With Range("F4:F65536").Select With Selection .HorizontalAlignment = xlLeft End With Range("G4:G65536").Select With Selection .HorizontalAlignment = xlCenter End With Cells.Select With Selection .VerticalAlignment = xlCenter End With End If Next End Sub

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

こんにちは。 スマートじゃないけど。。 Sub ATest() Dim ws As Worksheet, checkFlg As Boolean Dim checkValue As Integer For Each ws In Worksheets  If IsNumeric(ws.Name) Then   For i = 1 To Len(ws.Name)    checkFlg = True    checkValue = Asc(Mid(ws.Name, i, 1))    If Not (checkValue <= 57 And checkValue >= 48) Then     checkFlg = False     Exit For    End If   Next i  End If  If checkFlg Then    'ここに処理を書く    MsgBox ws.Name & " ←これ"  End If  checkFlg = False Next ws End Sub

noname#4540
質問者

お礼

早々のご回答をありがとうございました。 すみませんが、補足要求させてください。 自動マクロで作成した部分を指示通りの位置に入れてみました。 困っていること。 シート「1」を選択しておいてマクロを実行すると、シート1は期待通りの結果となります。 しかし、これを2,3,5・・・といちいちシートを選択しないと、マクロが実行できません。 この場合、半角数値のシート名だったら、それぞれのシートを選択するまでもなく、全シートに設定したかったのですが、変更可能でしょうか。 ※メッセージボックスは1,2,3・・・と表示されるのですが、マクロが実行できないのです。 自動マクロで作成した部分がおかしいのでしょうか・・・。 再度、ご教授いただければと思います。 よろしくお願いいたします。 Sub ATest() Dim ws As Worksheet, checkFlg As Boolean Dim checkValue As Integer For Each ws In Worksheets  If IsNumeric(ws.Name) Then   For i = 1 To Len(ws.Name)    checkFlg = True    checkValue = Asc(Mid(ws.Name, i, 1))    If Not (checkValue <= 57 And checkValue >= 48) Then     checkFlg = False     Exit For    End If   Next i  End If  If checkFlg Then    'ここに処理を書く Range("A4:A65536").Select With Selection .HorizontalAlignment = xlCenter End With Range("B4:B65536").Select With Selection .HorizontalAlignment = xlLeft End With Range("C4:C65536").Select With Selection .HorizontalAlignment = xlCenter End With Range("D4:D65536").Select With Selection .HorizontalAlignment = xlRight End With Range("E4:E65536").Select With Selection .HorizontalAlignment = xlLeft .WrapText = True End With Range("F4:F65536").Select With Selection .HorizontalAlignment = xlLeft End With Range("G4:G65536").Select With Selection .HorizontalAlignment = xlCenter End With Cells.Select With Selection .VerticalAlignment = xlCenter End With    MsgBox ws.Name & " ←これ"  End If  checkFlg = False Next ws End Sub

関連するQ&A

  • Excelで数値が左揃えになって中央揃えできない

    他人が作成したExcelシートに記入しているのですが、特定セルのみ、数値を入力すると左揃えになってしまい、中央揃えできません。 当該セルの書式設定は標準、中央揃えになっており、かなや漢字等の文字を入力すれば中央揃えで表示されます。 また、数値を入力して表示形式を標準から文字列に変えても左揃えのままですが、数値の前に「'」を付けて文字列と明示して入力すれば、表示形式を標準にしていても中央揃えされます。 そのセルに何かが設定されているのだと思いますが、それが見つけられません。 どのような場合に、そのような挙動になるか御存じの方がおられましたら御教示お願い致します。

  • 重なる数値のシート間移動について

    シート1とシート2があます。先頭行はタイトル番号です。 一番右側の列(シート1は列Cタイトル番号は『4』、シート2は列Dタイトル番号は『4』になります) について、数値を入力すると、シート1およびシート2それぞれに他の列と数値が重なる部分が出てきます。(重なっている部分を青色セルにて表示させています) そこで、この重なっている数値をなくすために、同じタイトル番号の属する列 (この場合はタイトル番号が『4』の列すなわちシート1では列C、シート2では列Dになります) においてシート間の数値移動ができるマクロがないか検討をしているところです。 今回の質問では2シート分を表示させた画像を添付していますが、実際にはシートが15シートあり、その中からいくつかのシートをピックアップして、画像添付のような入力をしていきます。 いい方法がありましたらアドバイスを頂けますと幸いです。よろしくお願いします。

  • Excelマクロで全シートで数値の並び替え

    Excelは2007を使っています Sheet1~Sheet3のG列5~100行に入っている数値を降順で並び替えたいのですが、 これをマクロで実現する方法がありましたらご教示をお願い致します。 F列には業者名、G列には取引数を入力しており、 これが業者名とズレる事無くソート出来るようにしたいと考えております。 出来た!と思ったのですが、業者名がズレてしまい非常に困っております。 よろしくお願いします!

  • Excelのセル位置について

    見積もりフォームである列(E列:単価金額)の24、28行目だけ セルに入っている数字が中央になってしまいます。 E列で他の行は右揃えや中央、左揃えで移動しますが 同じ位置(横)が揃いません? 確認した所はセルの書式設定で「配置」「横位置」も確認しました。

  • テキストボックス内で行ごとに「○揃え」の設定

    現在パワーポイント2002で資料作成しています。 スライド内にテキストボックスを作成し、 1行目…タイトル⇒「中央揃え」 2行目…空白行 ⇒特になし 3行目…内容  ⇒「左揃え」 にしたいのですが、ひとつのテキストボックス内で 行ごとに「~揃え」を設定する方法を教えてください。 目的の行を選択し、通常の「~揃え」ボタンでは 文章全体が左や中央になってしまいます。 よろしくお願いします。

  • 特定列の転記とシート作成とシート名変更。

    A1からBU160までの表があります(1行目はタイトル行 表は可変です) この表の特定列(例えばBU列)の文字が入っているところまで選択し(タイトル行を除き)コピーするにはどうすればよいですか? また、貼付け先の転記用ブックにおいて、もともとあるシートをコピーし、新たにシートを作りたいのですが、できたシート名に日付をいれるには、どのようなマクロを組めばよいですか?

  • 数値が右による

    どちらも、セルの書式設定で、数値にしているし、 配置も、横位置→標準、 縦位置→中央揃え にしているのに、 上の4310だけ、右に寄ってしまいます。 なぜでしょうか?

  • Excel:数値1を入力すると10000になる

    Excel2002 で、webページの表(すべて文字列データ)を貼り付け、 連番を振るために表の途中に列を挿入して一番上の行に 1 を入力したところ、左揃えで10000 と表示されました。 次のセルに =[上のセル番地]+1 とすると 左揃えで 10001 と表示されます。 セルの書式設定を見ると、標準・左揃えになっています。 なぜ 1 を入力しただけで 10000 になってしまうのでしょうか? たいへん不思議です。よろしくお願いします。

  • マクロで別シートに数値を移したいのですが・・・

    タイトルにありますとおり、マクロを駆使し、数値を別シートに移したいのですが なにぶんマクロに関してほとんど経験、知識はありません。 毎回手動でコピーを繰り返しているのですが、なんとかマクロで自動コピーできればありがたいです^^; 方法としては、フォームのボタンにマクロを埋め込むような形にしたいと思っております。 以下のようなシートがあったとします。 シート1 (抽出内容”平均”)    A   B   C   D   E   F   G 1  回数 25 2  2   3   4   6   3   2   9   3 1行目に、回数とあります。今回は25回目のデータとします。 2行目に、同一シートの別表から抽出された数値が並びます。 この数値は別表でオートフィルで抽出された数字ですので、毎回変更されるものとします。 今回は仮に”平均”という内容で抽出したデータだとします。 シート1 (抽出内容”合計”)    A   B   C   D   E   F   G 1  回数 25 2  10 10  20  11  15  16  8   3 同じく、25回目、抽出内容”合計”として、オートフィルで抽出した数値です。 シート2     A   B   C   D   E   F   G   H 100 回数 平均(1) 2  3  4  6  3  2  9  101 25  平均(2) 102     平均(3)  103     合計(1)10 10 20 11 15 16 8 104     合計(2) 105     合計(3) 106 107 108 回数 平均(1) 109 26  平均(2) シート2は、シート1で抽出された数値をコピーした表です。 A列は今回の回数、25となっております。この数値はこれより上に24回分の表があり、今回が25回目という意味です。 107行目以降も26、27、28と回数は続いていますが、現状では25が最新とし、108行以降は数値はなく、空白とします。 それぞれ平均、合計共に、シート1で3回抽出し、それぞれ別の数値が入るものとします。 これまでは、シート1で抽出後、手動でコピーし、シート2の該当セルに貼り付ける、という作業でした。 シート1  →   シート2  のコピーにマクロを使用したいのですが 回数が25の場合、シート2でA列を検索し、さらに抽出内容が”平均”1回目だった場合 平均(1)にコピーし、2回目だった場合平均(2)にコピーする、といった具合です。 イメージとしては、シート1に、(1)、(2)、(3) と、それぞれ入ったリストボックスなどがあり [平均][合計] のそれぞれボタンがあり、(1)を選び、平均を押すと100行目の平均(1)に入り 合計を押すと、103行目の合計(1)に数値が入る。と、いうような感じです。 この説明で私の意図するところが伝わるか不安ではありますが、このような場合に使えるマクロの式がございましたら ご教示いただけませんでしょうか^^; 実際の表とは若干ちがいますが、大まかなイメージとしては上に書いてある通りです。

  • Excel/違うシートの中の同じ日付(数値)を探す

    みなさま。 少し困っております・・どうぞよろしくお願い致します。 Excelのシート1に日付の入った日程表があります。 日付の列は、納品があった日のみが記載されており 規則性がありません。 例えば、日付の列の3月15日の行に「○」と入っていた場合 隣のシート(納品管理簿)から3月15日の行を探し、同じ行の納品時間に 数値をいれないとセルが赤くなるように、また数値を入れると 色が消えるように設定したいと考えています。 セルの色を自動的に変えるのはいろいろ調べてみてできそうだったのですが 違うシートから同じ数値を探し出して、その行の別のセルに反映させるのが どうしても複雑でわかりません・・ 詳しい方がいらっしゃいましたらぜひ教えてください。 よろしくお願い致します。

専門家に質問してみよう