- ベストアンサー
Excel2013 VBAで名前付きセルの利用方法
- ExcelでVBAで設定値を書いたシートを参照する際に、名前付きセルを利用する方法について教えてください。
- 名前付きセル範囲を手動で作成し、それを参照するVBAコードを書いていますがうまくいきません。
- 標準モジュールでは正しく動作するのに、Sheet1モジュールのイベントに同じコードを書くとエラーになります。理由がわかりません。お助けください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
- imogasi
- ベストアンサー率27% (4737/17068)
関連するQ&A
- VBAにおけるセルの名前の参照方法
現在、Aシート、Bシートがあり、BシートのA1セルに test という名前を付けました。(範囲はブック) Aシートが再計算されれば、BシートのA1セルをメッセージボックスで表示したいのですが、調べましたが、よくわかりませんでしたので、詳しい方教えてください。 範囲はブックになっているし、他に同じセルの名前もつけれないようになっているので、 このような記述で大丈夫かと思いましたがエラーが出でしまいました。 なぜでしょうか?やはりわざわざ毎回シート名から記述が必要なのでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) MsgBox (Range("test").Value) End Sub このようにシート名から書けば表示されました。 Private Sub Worksheet_Change(ByVal Target As Range) MsgBox (Worksheets("B").Range("test").Value) End Sub
- ベストアンサー
- その他MS Office製品
- EXCEL 名前の定義 VBA参照の方法
EXCELの名前の定義を、VBAから参照する方法を教えていただきたいのですが 名前を定義する シートA 名前:TEST 範囲:シートA シートB 名前:TEST 範囲:シートB シートC 名前:Pass 範囲:ブック それぞれをVBAから参照する場合 Range("TEST").Value: シートA内のVBA Range("Pass").Value では、参照できず。 Worksheets("シートA").Range("TEST").Value Worksheets("シートC").Range("Pass").Value にて、参照できました。 明示的なシート名入力が必要なのでしょうか? よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- エクセルVBAで定義したセルを使う時
シート1のセルA1にTESTと定義して、標準モジュールでRange("TEST")と書いています。 同じプログラムを別のシートでも使おうと思ったのですが、 同じブックで別のセルに同じ名前を定義できないようです。 そこで、シート2のセルA1にはTESTAという名前を定義しました。 アクティブなシートがシート1の時は、Range("TEST") アクティブなシートがシート2の時は、Range("TESTA")としてプログラムを書いていますが、 シート名を変えられたら、使えなくなります。 何か良い方法は無いでしょうか?
- ベストアンサー
- Excel(エクセル)
- 〖緊急〗エクセルのVBAについて質問です。
エクセルのVBAを使用して、下記の動作を実行したいのですがうまくいきません。 おしえてください。 sheet1に移動したいシート名の一覧を作成し、一覧を参照してシートを移動したいです。 RangeにカーソルをあてるとA1に入力したシート名前が反映しているようなのですが・・・。 sheet1のセルA1に移動させたいシート名を入力しています。 Sub Worksheet() Worksheets(Range("A1")).Activate End Sub ※❝インデックスが有効範囲にありません❞とエラーがでます。 ※同一のBOOK内での作業です。 よろしくおねがいします。
- 締切済み
- Windows XP
- エクセルVBAで他のbookのセルcellsで参照
エクセルVBAで他のbookのセルの値(一定の範囲)を参照したいのですが、変数を使いたいため、cellsを使用したいのですがうまくいきません。方法はないでしょうか。 下記に例を示します。 rangeを使用すればすべてok((2)(5))(この場合はset文を使用しなくてもok(5))。同じbookならcells使用ok(4)。 他のbookをcells文使用する方法はないでしょうか(もちろんできれば、Thisbookの方もcellsを使用したい)。 よろしくお願いします。 sub test() Dim ThisBook As Workbook Dim Workbook2 As Workbook 'マクロを実行しているワークブック Set ThisBook = ThisWorkbook '他のワークブック Set Workbook2 = Workbooks("test11.xlsx") ' 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(1)だめ 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range("a1:b2").Value '(2) OK 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test11.xlsx").Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(3) だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test1.xlsm").Worksheets(1).Range(Cells(3, 3), Cells(4, 4)).Value '(4)だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:ii8000").Value = Workbooks("test11.xlsx").Worksheets(1).Range("a1:ii8000").Value '(5) ok End Sub
- 締切済み
- オフィス系ソフト
- 2つのvbaを統合したい
はじめまして、vba初心者のものです。 よろしくお願いします。 以前こちらに質問させて頂いたことがあります。 その以前質問して回答して頂いた2つのソースを一つに統合したいです。 1、参照元ブックと貼り付けブックの2つが存在します。 2、参照元ブックの名前の指定する必要はあると思いますが、 貼り付け先ブックは新規作成にしたいです。 3、「▼質問タイトル:vba ブック間でシート名のコピーをするには」の動作は、 貼り付け先ブックの各シートに反映されるようにしたいです。 何卒よろしくお願いします。 「▼質問タイトル:vba ブック間でシート名のコピーをするには」 http://okwave.jp/qa/q8727280.html sub macro1() dim wb1 as workbook dim w2 as worksheet dim i as long ’2つのブックは既に開いている事 set wb1 = workbooks("オリジナルブック.xlsm") ’拡張子まで正しく指定する事 set w2 = workbooks("貼り付け先ブック.xlsx").worksheets(1) ’同上 ’準備 w2.range("A:A").clearcontents w2.range("A:A").numberformat = "@" w2.range("A1") = "シート名一覧" ’転記 for i = 1 to wb1.worksheets.count if wb1.worksheets(i).name = "Sheet1" then exit for w2.range("A65536").end(xlup).offset(1) = wb1.worksheets(i).name next end sub 「▼質問タイトル:セルの項目をシート名にしたい」 http://okwave.jp/qa/q8727637.html sub macro1() dim h as range dim s as long, i as long s = worksheets.count + 1 ’シートを作る for each h in range("C3:B" & range("C65536").end(xlup).row) worksheets.add after:=worksheets(worksheets.count) activesheet.name = h.value next ’別のブックにする for i = worksheets.count to s step -1 worksheets(i).select false next i activewindow.selectedsheets.move end sub
- 締切済み
- Excel(エクセル)
- Excel2007VBA ブックのアクティブ化
●質問の主旨(2点) 1.以下のコードは、なぜエラーが返されるのでしょうか? 2.タスクバーにあるアクティブ状態ではないブックの1枚目シートを 選択するためには、以下のコードをどのように書き換えれば良いでしょうか? ●質問の補足 タスクバーにはエクセルブック「Book1」と「Book2」を表示させ、 「Book1」の「sheet1」がアクティブになっています。 Book1の標準モジュールに以下のコードを記述しています。 Sub sample1() Workbooks("Book2.xlsx").Activate Worksheets("sheet1").Select End Sub しかし実行すると「実行時エラー9インデックスが有効範囲にありません」と エラーが返されます。なぜそうなるのかが分かりません。 ご存知の方がいらっしゃればご教示よろしくお願い申し上げます。 私はVBA初心者です。
- ベストアンサー
- Visual Basic
- Excel VBAで他のワークブックからのコピぺの仕方について
Excel VBAで開いている全てのワークブックから決められたセルの中身とそのシート名をそれぞれ決められた一つのワークブックにコピぺする マクロを作りたいのですが、どうやって作って良いのかが分かりません。 例えば、 Sub Mac() For i = 1 To 100 Workbooks("Book1.xls").Worksheets("sheet1").Range(Cells(2108, 2), Cells(3108, 2)).Cut Destination:=Workbooks("Book1.xls").Worksheets("sheet1").Cells(13, 2) End Sub みたいにすれば良いと思うのですが、開いている全てのファイルからのコピぺってどうやって記述するのでしょうか? 何卒よろしくお願い致します。
- ベストアンサー
- Visual Basic
- Excel2003VBA
お世話になっております。 手作業マクロの記録で下記作業を行い、一部修正をして一度はうまく動作していたのですが 1点 問題が御座いまして独自に色々試していたのですが、どうにもうまくいかないので どなたかご教授いただけませんでしょうか。 Sub ●●用() ' ' ●●用 Macro ' 12月1月の店舗を抽出し新しいブックに移動する。 ' Selection.AutoFilter Field:=3, Criteria1:="=12月", Operator:=xlOr, _ Criteria2:="=1月" Selection.AutoFilter Field:=8, Criteria1:="(店名)" Range("A4:W2076").Select Selection.Copy Sheets.Add ActiveSheet.Paste Application.CutCopyMode = False Worksheets("Sheet1").Select Worksheets("Sheet1").Move Workbooks("営業部まとめ.xls").Sheets("全件表示").Activate Selection.AutoFilter Field:=3 Selection.AutoFilter Field:=8 Range("A5").Select ActiveWorkbook.Save End Sub まず、 >Worksheets("Sheet1").Move ここだけあれば >Worksheets("Sheet1").Select こっちは必要ないでしょうか? あと、上記の中で > Worksheets("Sheet1").Select この部分なのですが、毎回「Sheet1」とは限らないので「アクティブシート」にしたいと思い色々試してみましたが 全てエラーとなり、結局元にもどしてしまいました。 > Worksheets("Sheet1").Move あと出来ればこれも移動させた後でデスクトップに名前を付けて保存までしたいのですが どのようなコードを追加すればよろしいでしょうか。 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- Excel VBAでの初期設定
Excel VBA 初心者です。Excelは2013です。VBAでBookを開いたときにあるシートの初期設定をしたいと考えています。Activateイベントを使おうと思いましたがイベントが発生しないことがあるため質問しています。 例として以下のようなコードを記述したとき、sheet1以外を開いて保存している場合にはActivateイベントは発生しますが、sheet1を開いて保存している場合にはイベントが発生しないため初期設定の処理ができませんでした。 対応方法をお分かりの方ご教授いただけないでしょうか。 ============================= '"以下をThisWorkbook"に記述 Private Sub Workbook_Open() '②Worksheets("sheet2").Activate も入れれば Activateイベントは発生する Worksheets("sheet1").Activate '①もともと sheet1がActiveで保存されていた場合、Activateイベントは発生しなかった End Sub ============================= '"以下をsheet1"に記述 Private Sub Worksheet_Activate() '初期設定処理 MsgBox "sheet1の初期設定をしました" End Sub ============================= 宜しくお願いします。
- ベストアンサー
- Excel(エクセル)
お礼
たびたびの補足を頂きありがとうございました。 お礼を分散させるのも読みにくいと思いましたので、 こちらに書かせて頂きます。 設問に対してコメントをいただけると面はゆいですが、 こちらこそ回答No.1の内容は完璧と思っていたので、 「説明が雑過ぎた」という内省にびっくりしました。 質問者が「わかってないであろう事」に目星を付けた上で、 端的な事例で挙げてみて観測気球として使い、 「理解がここに到達しているか」の確認をしつつ、 質問者は単語を検索すれば、調べるべき周辺知識が 広がるという感じでしたので、某囲碁漫画の指導碁のようで 思わず唸っておりました。 補足の方も、かゆいところに手が届くような内容で、 とても助かりました。 完全につかめたわけではないですが、補足前はわからなかった Application.Rangeとsheet1.Rangeはなんとなくわかりました。 気持ちとしては長文説明を頂いた回答3を持ち上げたいのですが、 QAとして他の人がわかりやすくなるように、こちらの回答をBAと させて頂きます。 また何かありましたらよろしくお願いします。 ありがとうございました。
補足
いつもお世話になります。 内容を読んでみて、 「Evaluateって何?ってevalの事か…ってなんでこのeval式で値が出てるの!?」 とか 「Applicationって初めて見た…ってシートもブックも超えてこのレベルからRangeって有効なの!?」 とか 「標準モジュールでの省略Rangeってアクティブシートにつながってるんじゃなかったっけ?なんでApplication?」 とか元々のうろ覚えからの齟齬が激しくて混乱してますが、 試したら何の問題も無く動いてるので正しいんですよねコレ… なんといいますか、ExcelVBAって少し欲を出して手を入れると途端に 絶壁のような知識の壁にぶち当たってなかなか厳しいですね