
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教科書などに初めから書いてあ...
-
Excel:任意の列だけCSV形式で...
-
Windows10で、拡張子が.pyのフ...
-
消しゴムがくっついて、跡が取...
-
VBAでメモ帳にコピペをしたいの...
-
字が下手すぎて祝儀袋を持って...
-
メモ帳のテキストがいつのまに...
-
「覚書」、「メモ」、「備忘録...
-
ぺたろうの代わりが欲しい パソ...
-
Wordで 文字の一部にモザイクを...
-
ペンだこのようなものが親指の...
-
パソコン買い替え時のAcce...
-
PCの画面上に文字や線を引ける...
-
フリクションペンで書いたもの...
-
ウィンドウ11 メモ帳が文字化...
-
書いたり消したりできるラミネ...
-
くっついた消しゴムかすをとる...
-
拡大コピー機で紙を貼りあわせ...
-
CDやDVDに書くマジックペン
-
ExcelVBAでスペースキー操作したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教科書などに初めから書いてあ...
-
日頃、感じる不便なものってあ...
-
Excel:任意の列だけCSV形式で...
-
消しゴムがくっついて、跡が取...
-
CDやDVDに書くマジックペン
-
Windows10で、拡張子が.pyのフ...
-
書いたり消したりできるラミネ...
-
「覚書」、「メモ」、「備忘録...
-
CD盤の表面
-
両面印刷するとき裏表とも罫線...
-
プロジェクタだと動画が映らない
-
字が下手すぎて祝儀袋を持って...
-
小6でこの絵上手いですか? ア...
-
Wordで 文字の一部にモザイクを...
-
VBAでメモ帳にコピペをしたいの...
-
メモ帳でタブ幅の設定はできる...
-
メモ帳のテキストがいつのまに...
-
LibreOffice Writer で線の太さ...
-
iPhoneのメモ帳を使ってますが...
-
ペンだこのようなものが親指の...
おすすめ情報
(経緯)インボイス対応の見積・納品・請求・領収・適格修正請求書を作成している。
テンプレートはできている。
(目的)作業途中でテンプレートを上書きしたり、連続して作業したりのために、入力値をすべて消してテンプレートの状態に戻したい
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