セルに名前を定義しています。そのセルに書かれた値を取得したいです。その方法として、セルの名前を検索することでセルを特定し、値を取得するマクロを作成したら、できるのでは?と考えたのですが、ヘルプやWebを調べてもこのような方法はありませんでした。こういったことはできないのでしょうか?
私の知識レベルは、C言語はひととおりできる、VBの経験はなし、業務でExcelを使っており基本操作はできるレベルです。
すみませんが、アドバイス、よろしくお願いいたします。
以下やりたいことの補足
具体的には、仕様書の仕様数がかかれたセルがあり、そのセルは”仕様数”として名前を定義している。そのセルの値である仕様数をマクロやVBAなどにより自動集計して、仕様書のボリュームを読みたいと考えています。
No.4ベストアンサー
- 回答日時:
>No2の方により、解決することができました。
解決されたのならよかったです。
ところで、
>ためしに"仕様数"という名前が存在しないSheetでRange("仕様数")を実行しましたら
仮にSheet1のA1:A5を”仕様数”と名前の定義を行なった場合、
Sheets("Sheet2").Range("仕様数")~ってやるとエラーになりますが、
その事とは違いますよね?
この回答への補足
>Sheets("Sheet2").Range("仕様数")~ってやるとエラーになりますが、その事とは違いますよね?
そのことです(と思います)。やりたいこととしては、もしSheet2に"仕様数"がなければ、エラーで停止してしまうのではなく、気にせず何もしないようにできればと考えています。
その背景として、現在、Excelの仕様書が複数存在するのですが、仕様書のSheetごと"仕様数"の定義がある場合とない場合があり、さらに"仕様数"のあるSheetは1つの仕様書ファイルに複数存在しています。このような状況で、各仕様書に存在する全ての"仕様数"の合計を算出できるマクロかVBAを作成したいと考えています。
No.5
- 回答日時:
ANo.1での回答の方法だと、登録されている名前の定義名とその範囲が
イミディエイトウインドウに表示されるはずですが。。。
別々のシートで同じ名前を使う
http://www2.odn.ne.jp/excel/waza/name.html#SEC8
この事だったのでしょうか?
単純にBook内の”仕様書”と名前の定義を設定した範囲の合計なら、
Sub try2()
Dim st As Excel.Name
Dim g_kei As Double
For Each st In Application.Names
g_kei = g_kei + WorksheetFunction.Sum(Range(Replace(st, "=", "")))
Next
MsgBox g_kei
End Sub
こうゆう事ですか?
お礼が遅くなりまして、申し訳ありませんでした。
仕様書と名前の定義を設定した範囲を、出すことができるんですね。ひとまず、VBAを駆使してチャレンジしてみます。
大変参考になりました。ありがとうございました。
No.3
- 回答日時:
ANo.2さんの回答により、なんか私は勘違いしてたようですね。
>自動集計
が例えば”合計”を出すのであれば、一般関数の
=SUM(仕様数)
とかって事だったのでしょうか?
No.2
- 回答日時:
>C言語はひととおりできる
関係ないです。エクセルVBAはエクセルの操作レベルの熟練とメソッドプロパティをどれだけ知っているかであって、言語仕様の知識やプログラムロジックの経験とも関係ない。
VBの熟達者であっても、エクセルVBAの0前では、勉強してなければ
手も足も出ないはず。VBAのAはエクセルの操作をスクリプト化してあるイメージで、VBAの1行でエクセルに即して、中身が詰まっている物が多い。
常識的なロジックで総なめに聞いたりすると複雑だが、エクセルVBAのことを知っていると、短い1行で済むものも多い。
ーー
本件は
Sub test01()
Range("範囲1").Select
MsgBox Selection.Cells(1)
End Sub
を参考に。
本例ではC2:D3に範囲1と名前をつけています。
Ceセルの値を取り出した例です。D2ならMsgBox Selection.Cells(2)
です。
1セルごとに名前をつけているなら
Sub test02()
MsgBox Range("セル1")
End Sub
で一発です。
セルを表現する仕方の1つにこれが入ってますが、良く気に留めないと本の記述を通りすぎます。
例えば、Range("仕様数")で取得できるのですね。理解できました。ありがとうございます。
なお、作成している仕様書ブックのなかには、"仕様数"という名前が定義されていないSheetが含まれているのですが、このようなSheetがあるなかで、"仕様数"から値を取得するにはどうしたらよいのでしょうか?
ためしに"仕様数"という名前が存在しないSheetでRange("仕様数")を実行しましたら、プロシージャエラーがでてしまいました。
続けてすみませんが、ご教授いただけますと助かります。
よろしくお願いいたします。
No.1
- 回答日時:
Sub try()
Dim st As Excel.Name
For Each st In Application.Names
Debug.Print st.Name, st
Next
End Sub
こんな感じの事ですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) Excel VBA セルの書式設定 2 2022/03/30 10:48
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) セルを数式で指定する方法 5 2022/04/13 16:55
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) Excelグラフのラベルオプションの並べ替えは可能ですか。セルの値を最後にしたいのですが。 1 2022/06/05 10:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelのプルダウンで2列分の情...
-
特定のセルが空白だったら、そ...
-
【Excel】指定したセルの名前で...
-
【Excel VBA】指定行以降をクリ...
-
特定の文字を条件に行挿入とそ...
-
VBAでセルをクリックする回...
-
エクセルVBAでコピーして順...
-
【VBA】指定したセルと同じ値で...
-
ExcelのVBAで数字と文字列をマ...
-
【VBA】シート上の複数のチェッ...
-
DataGridViewの各セル幅を自由...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
セル色なしの行一括削除
-
Excelで指定した日付から過去の...
-
連続する複数のセル値がすべて0...
-
セルの結果でマクロ実行
-
EXCELのVBA-フィルタ抽出後の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
Excel vbaで特定の文字以外が入...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
連続する複数のセル値がすべて0...
-
Excel VBA、 別ブックの最終行...
-
VBAを使用した時間管理
-
エクセルVBAでコピーして順...
-
セル色なしの行一括削除
-
【EXCEL VBA】Range("A:A").Fi...
-
VBA コピーして次の値まで貼り...
-
VBA初心者です。結合セルを保持...
おすすめ情報