
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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教科書などに初めから書いてあ...
-
CDやDVDに書くマジックペン
-
日頃、感じる不便なものってあ...
-
消しゴムがくっついて、跡が取...
-
色鉛筆の箱の修理について
-
自作パソコンから既製品に買い...
-
書いたり消したりできるラミネ...
-
【家計簿の無駄遣い】家計簿と...
-
ノートPCにデスクトップPCをつ...
-
「いいです」という言葉の意味...
-
ペンだこのようなものが親指の...
-
【急】布に書けるマジック
-
デイトレードにおすすめのパソ...
-
先日ニチガスの営業マンが訪ね...
-
xperia xz premium 手帳カバー ...
-
DTP作業等で購入するPCのスペッ...
-
添削お願いします
-
5円玉を綺麗にしたいです!
-
アメリカ人へのお土産を、何に...
-
ノートパソコンのHDを交換する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
書いたり消したりできるラミネ...
-
教科書などに初めから書いてあ...
-
CDやDVDに書くマジックペン
-
大学を平日一日休んで運転免許...
-
Excel:任意の列だけCSV形式で...
-
消しゴムがくっついて、跡が取...
-
「覚書」、「メモ」、「備忘録...
-
両面印刷するとき裏表とも罫線...
-
Windows10で、拡張子が.pyのフ...
-
VBAでメモ帳にコピペをしたいの...
-
日頃、感じる不便なものってあ...
-
色鉛筆の箱の修理について
-
Wordで 文字の一部にモザイクを...
-
メモ帳のテキストがいつのまに...
-
ぺたろうの代わりが欲しい パソ...
-
「筆記用具」という言葉はノー...
-
メモ帳でタブ幅の設定はできる...
-
字が下手すぎて祝儀袋を持って...
-
PCの画面上に文字や線を引ける...
-
プロジェクタだと動画が映らない
おすすめ情報
(経緯)インボイス対応の見積・納品・請求・領収・適格修正請求書を作成している。
テンプレートはできている。
(目的)作業途中でテンプレートを上書きしたり、連続して作業したりのために、入力値をすべて消してテンプレートの状態に戻したい
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