[[20110924170225]] 『シートの名前をそのシートの特定のセルに自動入力』(カカ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シートの名前をそのシートの特定のセルに自動入力するマクロを全シートに一括で設定するマクロ』(カカ)

 シートの名前をそのシートの特定のセルに自動入力するマクロは、類似の質問がありましたが、
この処理を一括で全シートに処理させるにはどうしたら良いでしょうか

excel2007
windows vista


 全部のシートに同じことをしたい場合はシートではなく ThisWorkbook に記述
 した方が良いと思います。
 具体的な内容はコードが見えないので、回答できませんが基本的にはシートで
 書いたものに、シートオブジェクトをくっつければ、できると思います。
 (Mook)

mookさん
ありがとうございます。
済みませんが、excel初心者につき、
「シートオブジェクトをくっつける」の意味が分かりません。
教えていただけるとありがたいです。
お手数ですが、宜しくお願いします。

(カカ)


 ではまず現状のコードを提示ください。
 (Mook)

すみません
会社のパソコンで作業していたため、詳細は、月曜日にしか出ませんが、
マクロを作成したときは、
特定のシートを選択、特定のセルを選択、その後、
=MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)を
セル内にコピペしました。

その後、作業グループをマクロで作ったりしましたが、(CTL+シート)
結局上手く行きませんでした。

(カカ)


 では、詳細はコードがわかったときに又ということで、とりあえずシートを
 選んだときにA1 にシート名を表示する例です。
 下記をThisWorkbook の下に記載ください。

 Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Sh.Range("A1").Name = Sh.Name
 End Sub

 どのタイミングで表示したいのか、どのシートに表示したいのか、情報がない
 のでいつでも表示するようにしています。
 シートイベントが設定してある場合は、前後を
    Application.EnableEvents False
    Sh.Range("A1").Name = Sh.Name
    Application.EnableEvents True
 のように変更してください。
 (Mook)


mookさん

すみません、上記のようにThisWorkbookに記載する場合は、標準モジュールにプロシージャを書いた場合のように
マクロとして分けて命令できないのでしょうか。
(新規ブックで試してみましたが、マクロボタンに表示されません)

タイミングとしては、いくつかのマクロを経て、上記作業を行いたいのです。

作業記録が会社にあるため、月曜日にならないと現状コードについてご相談できません。
申し訳ありません。

(カカ)


 やはりやりたいことを詳細に説明して頂いた方が良いようですね。

 ・表示したいシートは全部なのか一部なのか。
 ・表示したいタイミングはどの時点なのか。
 ・表示を実施する方法はどのようなものを想定しているのか。

 全部のシートにボタンを置いて、押したシートの名前を表示したいということ
 でしょうか。
 場合によっては設計を考え直した方が良いかもしれません。
 (Mook)

mookさん
分かりました。
明日、詳細のvba文章をコメントに載せて相談させていただきます。
お時間あるときにチェックしていただけたらありがたいです。
宜しくお願いします。

(カカ)


mookさん

下記、全て標準モジュールに入れて
最後のプロシージャ以外は、上手くいっていました。
最後のプロシージャが現在相談させていただいているものです。

やりたいことを、要約すると、「シートの名前をそのシートのセルG1に返すことを
sheet1(”一覧表”)以外の全てのシートについて行うことです。
また、シート2以降の名前は、CSVファイルから抜き出すため、
いつも一定とは限りません。(シート数は、一応80枚で設定)

説明が稚拙で申し訳ありませんが、
最後のプロシージャを上記が出来るように
修正したく、アドバイスを宜しくお願いします。

以下、標準モジュール内のプロシージャです。
マクロの実行は、下記プロシージャ順に行っていきます。

Sub シート名変更()
Sheets(1).Name = "受注一覧表"

End Sub

Sub 一覧表の作成()
' 一覧表の作成 Macro
' Sheets("受注一覧表").Select

    Sheets("受注一覧表").Copy Before:=Sheets(1)
    Sheets("受注一覧表 (2)").Select
    Sheets("受注一覧表 (2)").Name = "一覧表"
    Sheets("受注一覧表").Select
End Sub

Sub 得意先重複の削除()
'
' 得意先重複の削除 Macro
' Columns("G:G").Select

    ActiveSheet.Range("$G$1:$G$7456").RemoveDuplicates Columns:=1, Header:=xlNo

End Sub

Sub シートの追加()
Dim I As Long
For I = 1 To 80

    Worksheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = Worksheets("受注一覧表").Cells(1 + I, 7).Value
Next I
End Sub

Sub 一覧表字幅合わせ()
' 一覧表字幅合わせ Macro
'
Sheets("一覧表").Select

    Range("A1:AX7456").Select
    Range("E11").Activate
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = True
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
  Range("A1:BA10000").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = True
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    ActiveWindow.SmallScroll Down:=-15
    Range("A1").Select
End Sub

Sub 受注一覧表非表示()
''受注一覧表非表示Macro
Worksheets("受注一覧表").Visible = xlSheetVeryHidden
End Sub

Sub シートへ貼り付け()

    Dim I As Integer
    For I = 2 To 80
    Sheets(1).Range("A1:BA10000").Copy Sheets(I).Range("A1")
    Next

    End Sub

Sub シート名の獲得()
'' シート名の獲得 Macro

  Sheets("一覧表").Select
 ActiveCell.FormulaR1C1 = "=RIGHT(CELL(""filename"",RC[-6]),LEN(CELL(""filename"",RC[-6]))-FIND(""]"",CELL(""filename"",RC[-6])))"
    Range("G1").Select
    Selection.Font.Bold = True
    Selection.Font.Italic = True

For I = 1 To 80

Worksheets(I).Select

Next
End Sub


 いろいろ改善した方がよさそうなところはありますが、
 最後の関数だけということであれば、
 Sub シート名の獲得()
    Dim i As Long
    For i = 1 To Worksheets.Count
        With Worksheets(i).Range("G1")
            .Value = Worksheets(i).Name
            .Font.Bold = True
            .Font.Italic = True
        End With
    Next
 End Sub
 ということでしょうか。

 シートの追加 のところで作成と一緒にやってしまえば、この処理自体いらない
 気もしますが。

 また80というのが固定で無く可変であれば、受注一覧表のセル数に合わせて処理を
 するなどしたほうがよさそうに見ますが、またそれは別のお話ですね。
 (Mook)


mookさん
ありがとうございます。
いただいたコードで出来ました。

しかし、Sheet1に対しても、上記ようにG1のところに
シート名が返されてしまいました。

Sheet2からと設定していただいていると思いますが、
なぜでしょうか、

(カカ)


 i が 1 から始まっているからです。
 マクロは慣れていないということですが、作成できないにしても中でどのようなこと
 をしているか把握できないのはやはり問題だと思います。

 マクロを利用したいというのであれば、中身を理解する努力は必要かと思います。
 (Mook)

mookさん
本当にありがとうございました。
少しづつでも基礎から勉強するように頑張ります。

(カカ)


 苦言を呈されての反応は大きく二つあるようにと思います。
 一つはそこであきらめてやめてしまうケース、もう一方は素直に努力しようと考えるケース。

 後者であるようなので、よかったと思います。
 がんばってください。
 (Mook)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.