[[20050614230521]] 『セルにシート名を表示させるマクロ』(のViた) ページの最後に飛ぶ

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

 

『セルにシート名を表示させるマクロ』(のViた)
 過去ログからセルにシート名を表示させる数式を探してきて手を加えて"-"を間に入れる式にしました。

=LEFTB(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),2)&"-"&RIGHTB(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31),3)

これをマクロにしようとそのまんまコードを記述しても動きません。
当然の事なんですがどこを手直ししたらよいかわかりません。
どなたか解説も含めて教えて戴けますでしょうか?

Option Explicit

Private Sub Worksheet_Activate()

Worksheets.Range("A1").Value = LeftB(Mid(CELL("filename", A1), Find("]", CELL("filename", A1)) + 1, 31), 2) & "-" & RightB(Mid(CELL("filename", A1), Find("]", CELL("filename", A1)) + 1, 31), 3)

End Sub


 Formula プロパティを使います。
(kenbou)

 ValueをFormulaに変更して=から右の式を""で囲みましたが
Worksheets.〜部分が赤くなって動きません。
この部分の式の記述が間違っているようなんですが
どこがどのように間違っているのかわからないです。
(のViた)

 シート名がないです。
Worksheets("Sheet1")やWorksheets(1)など。
(kenbou)

 (kenbou)さん、とても早い回答有難う御座います。
シート名が無いとの事ですが「左端のWorksheetsに追加せよ」と言う事かと思い
やってみましたがやはり動かずです。
全くの見当違いをしているんでしょうか?
(のViた)

 Worksheets("sheet1").Range("A1").Formula = "= LeftB(Mid(CELL(""filename"", A1), Find(""]"", CELL(""filename"", A1)) + 1, 31), 2) & ""-"" & RightB(Mid(CELL(""filename"", A1), Find(""]"", CELL(""filename"", A1)) + 1, 31), 3)"
こんな感じでしょうか。
Worksheets.Range("A1")は、ワークシートでSheet1のA1を参照するに!A1とシート名
を入れていないようなものです。
(kenbou)

 話の流れがよく分からないのですが・・・
 シートの名前なら
Private Sub Worksheet_Activate()
    Range("A1").Value = ActiveSheet.Name
End Sub
 で取得できそうな・・・ 見当違いなら、すみません(^^;) (Hatch)

 Hatchさんこんばんは。
もちろんそうですね。ただFormula プロパティの説明上、その提案は後回しにしてました。
(kenbou)

 > Worksheets("sheet1").Range("A1").Formula = "= LeftB(Mid(CELL(""filename"", A1),・・・以下省略
 左辺で「Sheet1」と指定して、右辺でシート名「Sheet1」を求める 
 というコードのようですので、どうなっているのかな? と思ったもので・・・
 失礼しました。m(_ _)m    (Hatch)


 言われて見れば(汗)
(kenbou)activesheetの方が良かったかな?それとも省略?

 (kenbou)さん、(Hatch)さん有難う御座います。
Worksheetsの部分はActiveSheetにして長い方の式で完成させました。
(今後何かに転用させていただく事が有るかも知れませんので・・・)
ところであつかましく更に質問させてもらっちゃいますが
シート名の長さが違うのを判断して適切な所に"-"を入れる事は出来ますか?

「AA123 → AA-123」  「AA45 → AA-45」   と言うように

 追加、先ほどのコードですが一度シートを開いて、別のシートを開いた後再び一度開いたシートを開きなおすと
「実行時エラー1004アプリケーション定義又はオブジェクト定義のエラーです」
と表示されます。これについてどういった対策が必要ですか?。
追加の追加、マクロでシート保護をかけてるんですが保護解除の前にコードを入れちゃったので
エラーが出たようでした。保護解除後に移したらエラーが出なくなりました。
ですのでエラーの件は忘れてください。(申し訳ない・・)
(のViた)

コメント返信:

[ 一覧(最新更新順) ]


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