https://oshiete.goo.ne.jp/qa/13135672.html
で質問したのですが、
マクロでコピーすると数式が表示される
sheet1 のA1 に 8/7
sheet1 のA2 に 8/10
sheet1 のA3 に テスト
と文字列として値が入っています。
sheet2で、マクロの記録にして、Sheet2 A1 にて、= 後、sheet1を選択
して Sheet1のA1を選択してEnter
次いで、Sheet2にてA1をA3までオートフィル
ここでマクロを終了して
次に、マクロの開発で記録されたマクロを実行すると、
=Sheet1!A1
=Sheet1!A2
=Sheet1!A3
と数式になってしまう。
今までふつうに数式の結果がコピーされてたと思うのですが、
しかも、不思議なことに他の部分ではちゃんと計算結果が表示される
で
> 代入先のセルの書式が「文字列」になっていたりしまませんか?
> 式を入力する前に
> 対象セル.NumberFormatLocal = "G/標準"
> などのように、書式設定をしてから記入すれば数式として解釈されると思います。
と回答をいただいたのですが、かえって悪化して
結果
表示は セルの内容は
#NAME? =@'Sheet1!A2'
#NAME? =@'Sheet1!A3'
もう少し具体的に説明します。
Sheet1(見積書と想定する。)Sheet2(納品書)
Sheet1 A列は文字 10行とする
┏━━┳━━━━━┳━━┳━━━┳━━━━┓
┃日付┃品名 ┃数量┃単価 ┃ 合計 ┃
┣━━╋━━━━━╋━━╋━━━╋━━━━┫
┃9/6 ┃ペン ┃ 1┃ 150┃=C2*D2┃ E列は式
┣━━╋━━━━━╋━━╋━━━╋━━━━┫
┃9/10┃ノート ┃ 2┃ 500┃ 1000┃ E列は式
┣━━╋━━━━━╋━━╋━━━╋━━━━┫
Sheet2 ★数量や単価が変わるので初期値は =Sheet1!RCだが・・
┏━━┳━━━━━┳━━┳━━━┳━━━━┓
┃日付┃品名 ┃数量┃単価 ┃ 合計 ┃
┣━━╋━━━━━╋━━╋━━━╋━━━━┫
┃ 9/5┃ペン ┃ 1┃ 160┃=C2*D2┃ E列は式
┣━━╋━━━━━╋━━╋━━━╋━━━━┫
┃9/11┃ノート ┃ 3┃ 500┃ 1000┃ E列は式
┣━━╋━━━━━╋━━╋━━━╋━━━━┫
リセットボタンを作りたい。すべてを初期値に戻す。
マクロ登録
★Sheet1 select A2:E10
クリア
E2 [=C2*D2]
オートフィル D2~D11
★Sheet2 select A2:E11
クリア
A2 [=Sheet1!A2]
オートフィル A2~D11
E2 [=C2*D2]
オートフィル D2~D11
・・・・・・
マクロを実行すると
日付 品名 数量 単価 合計
=Sheet1!RC =Sheet2!RC =Sheet3!RC =Sheet4!RC =Sheet5!RC
=Sheet1!RC =Sheet2!RC =Sheet3!RC =Sheet4!RC =Sheet5!RC
=Sheet1!RC =Sheet2!RC =Sheet3!RC =Sheet4!RC =Sheet5!RC
No.2ベストアンサー
- 回答日時:
こんばんは
>インボイス対応の見積・納品・請求・領収・適格修正請求書を作成している。
ハードル高いですね
私も昔作成したことがありますが、ながらで作ったとは言え、1か月以上かかった記憶がありますよ・・ネックは排他処理、セキュリティだったかと
もう10年以上前に変えました・・
>(目的)作業途中でテンプレートを上書きしたり、連続して作業したりのために、入力値をすべて消してテンプレートの状態に戻したい
示されているテンプレートは入力シートの事でしょうか?
だとすると、数式はあらかじめシートに作成するのが簡単かも
(数式を入力するから違うかな・・)
マクロで行う部分は、
入力項目のクリアー
入力データのチェック、プリント(PDF)、保存など、
保存データの抽出など
でしょうか・・
それだけでも課題は沢山ありますし、基幹業務で大切な業務なので
プロに依頼されるか、販売されている汎用ツールを使う方が良い様な気がします
Sub Macro1()の記録マクロについて
>A列は文字列
の状態でSub Macro1()を実行すると =Sheet1!A1 と表示されるのは
理解されたと言う事でよろしいでしょうか
マクロで書式設定を変更するコードを加えると
Sub Macro1()
Dim nf As String
Sheets("Sheet1").Select
Range("A2:E4").Select
Selection.ClearContents
Sheets("Sheet2").Select
ActiveSheet.Range("A2:E4").Select
Selection.ClearContents
nf = Range("A2").NumberFormatLocal
Range("A2:A4").NumberFormatLocal = "G/標準"
ActiveSheet.Range("A2").Select
ActiveCell.FormulaR1C1 = "=Sheet1!RC"
ActiveSheet.Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A4"), Type:=xlFillDefault
Range("A2:A4").NumberFormatLocal = nf
End Sub
になります
変数や書式設定の取得は記録できないので少しハードルが高くなりますが
端的に処理内容を検索すれば、参考サイトは沢山あります
今回の回答例のコードは <VBA 書式設定と取得>で見つけて添削しました
繰り返しになるかも知れませんが
コードではSheets("Sheet1")の対象シートの値がクリアーされていますね
そこを参照する数式を入力する事に 何か意味はあるのでしょうか?
一度、Sheets("Sheet2")に数式を入力しておけば、Sheets("Sheet2")の操作は不要では、と思いました。
テスト段階だとは思いますが、
=Sheet1!RC =Sheet2!RC =Sheet3!RC =Sheet4!RC =Sheet5!RC
は 一度、Sheets("Sheet2")を手作業で作成して それを 各シートのコピペすれば良いと思いますしマクロで毎回行う作業では無いと思います
値のみを出力したいのなら別の話ですが・・
ちなみに上に挙げた Sub Macro1()を添削すると(書き方は一例です)
Sub Macro1()
Dim nf As String
Sheets("Sheet1").Range("A2:E4").ClearContents
With Sheets("Sheet2").Range("A2:A4")
.ClearContents
nf = .Item(1).NumberFormatLocal
.NumberFormatLocal = "G/標準"
.FormulaR1C1 = "=Sheet1!RC"
.NumberFormatLocal = nf
End With
End Sub
No.1
- 回答日時:
前回回答者です。
追加の回答をしようとしたら締め切られていましたので、こちらに。
表示が
>#NAME?
となるのは、エクセルが関数式として解釈しようとしているので、意図通りです。
ただし、設定された内容が関数式として解釈できないためにエラー表示になっているものと推測します。
どのようなコードで何を設定しているのかが不明ですので、こちらではこれ以上はわかりかねますが、通常の手操作でも
>=@'Sheet1!A2'
のような入力は拒否されます。
(試してみればわかりますが、エラー表示にもなりません。)
※ 実際になさりたいことと、現状のコードの両方をきちんと示せば解決するのではないか思います。
どうしたいのかと、セルの位置関係がわかるようにしておくことが必要です。
(私が回答するとは限りませんけれど・・)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- その他(プログラミング・Web制作) python文字化けエラーが発生しているようです 3 2022/04/13 19:41
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- Excel(エクセル) VBAにてエクセルをpdf化する方法 1 2023/03/10 16:20
- Visual Basic(VBA) VBA 別sheetからの転記なのですが 2 2023/05/22 15:55
- Visual Basic(VBA) VBAでvlookup関数から、別シート参照するやり方・・・ 2 2022/11/14 18:49
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教科書などに初めから書いてあ...
-
消しゴムがくっついて、跡が取...
-
Excel:任意の列だけCSV形式で...
-
ヨドバシドットコムも置き配し...
-
Windows10で、拡張子が.pyのフ...
-
CDやDVDに書くマジックペン
-
「筆記用具」という言葉はノー...
-
書いたり消したりできるラミネ...
-
Wordで 文字の一部にモザイクを...
-
メモ帳のテキストがいつのまに...
-
赤い字で。人の名前を書くと死...
-
フリクションペンで書いたもの...
-
「覚書」、「メモ」、「備忘録...
-
プラスチックのスマホケースに ...
-
CD盤の表面
-
メモ帳でタブ幅の設定はできる...
-
VBAでメモ帳にコピペをしたいの...
-
くっついた消しゴムかすをとる...
-
ウィンドウ11 メモ帳が文字化...
-
チクられる? 自分が悪いけど…
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教科書などに初めから書いてあ...
-
ヨドバシドットコムも置き配し...
-
消しゴムがくっついて、跡が取...
-
CDやDVDに書くマジックペン
-
Windows10で、拡張子が.pyのフ...
-
書いたり消したりできるラミネ...
-
Excel:任意の列だけCSV形式で...
-
「筆記用具」という言葉はノー...
-
日頃、感じる不便なものってあ...
-
「覚書」、「メモ」、「備忘録...
-
メモ帳のテキストがいつのまに...
-
くっついた消しゴムかすをとる...
-
指を動かす人・・・。
-
ペンだこのようなものが親指の...
-
字が下手すぎて祝儀袋を持って...
-
紙を斜めにして字を書くクセ
-
プロジェクタだと動画が映らない
-
メモ帳でタブ幅の設定はできる...
-
小6でこの絵上手いですか? ア...
-
Wordで 文字の一部にモザイクを...
おすすめ情報
(経緯)インボイス対応の見積・納品・請求・領収・適格修正請求書を作成している。
テンプレートはできている。
(目的)作業途中でテンプレートを上書きしたり、連続して作業したりのために、入力値をすべて消してテンプレートの状態に戻したい
A列は"G/文字列"
注)基本的には見積書に入力すれば、以後の表にはコピーされる。(=見積書!RC)
注) 各表中で値が変わることがある。見積書→納品書で数量や単価、商品詳細とか・・
見積書のA2:D4をクリア、ただしE列は、すべてのシートで=C*D
以後、納品書では A2=Sheet1!A2 となる。オートフィルで下まで
手作業では問題ない。マクロを記録してマクロ側からだと、数式が
Sub Macro1()
Sheets("Sheet1").Select
Range("A2:E4").Select
Selection.ClearContents
Sheets("Sheet2").Select
ActiveSheet.Range("A2:E4").Select
Selection.ClearContents
ActiveSheet.Range("A2").Select
ActiveCell.FormulaR1C1 = "=Sheet1!RC"
ActiveSheet.Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A4"), Type:=xlFillDefault
End Sub