内訳明細書で行全体を移動させるために、2つの行を入れ替えるマクロを作りました。
そこで、マクロを実行すると選択行全体が下へ移動するようになっていますが、
マクロで入れ替えた行だけ、セル内の数式が値となって表示されてしまいます。
下記画像で言うと金額の数式が表示されずに値のみ表示される状態です。
実行前と同じ数式のままにすることは可能でしょうか?
Private Sub CommandButton2_Click() '下へ行を移動
Dim tgtRange_1 As Range
Dim tgtRange_2 As Range
Dim tgtValue_1 As Variant
Dim tgtValue_2 As Variant
Dim 選択行 As Long
選択行 = Selection.Row
' 現在選択されているセルの行をRangeオブジェクトに代入
Set tgtRange_1 = Rows(Selection.Row)
' 入れ替え行をオブジェクトに代入
Set tgtRange_2 = Rows(選択行 + 1)
' それぞれの行の値を記憶
tgtValue_1 = tgtRange_1
tgtValue_2 = tgtRange_2
' それぞれの行の値を入れ替えてオブジェクトに代入
Application.ScreenUpdating = False
tgtRange_1.Value = tgtValue_2
tgtRange_2.Value = tgtValue_1
Application.ScreenUpdating = True
' オブジェクトを破棄
Set UserSelectCell = Nothing
Set tgtRange_1 = Nothing
Set tgtRange_2 = Nothing
Selection.Offset(1, 0).Select '挿入先の行がアクティブになるのを元のレコードになるよう戻しています
End Sub
No.1ベストアンサー
- 回答日時:
質問者の意には則していませんが、
>' それぞれの行の値を記憶
> tgtValue_1 = tgtRange_1
> tgtValue_2 = tgtRange_2
を
tgtValue_1 = tgtRange_1.Formula
tgtValue_2 = tgtRange_2.Formula
と「.Formula」プロパティーを付けると式が移動します。
ただし、このままですと下記の例のように式の対象は変更されませんので、もう一工夫必要なようです。
例
入れ替え前
A1:10、B1:20、C1:=A1*B1
A2:30、B2:40、C2:=A2*B2
入れ替え後
A1:30、B1:40、C1:=A2*B2
A2:10、B2:20、C2:=A1*B1
作戦1
「Selection.Rowをもちいて、対象となる式の行番号部分を書き換える」
作戦2
「行全体の選択」から「式の部分を除いたRangeオブジェクト」へ変更する
作戦3
作業用の行を設定して、「Copy」「Paste」メソッドで入れ替える
などへの変更が必要なようです。
以上、ご参考まで。
さっそくの回答ありがとうございます。
.Formulaでいけたんですね。
それで、ご提示の作戦3を自力で頑張ってみようかなと思ってます。作戦1と2は私には難しそうです。しばらく考えてみます。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
VBAで上下のセルを入れ替えるには?
Excel(エクセル)
-
行の入れ替えってどうするの?
Excel(エクセル)
-
EXCELで「行と列を入れ替える」操作を何回も繰り返して自動実行する方法はないでしょうか?
Excel(エクセル)
-
-
4
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
5
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
6
別のシートから値を取得するとき
Visual Basic(VBA)
-
7
エクセル 複数列の入れ替えについて
Excel(エクセル)
-
8
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
9
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
10
VBA セルをダブルクリック→違うセルに値をコピー
Excel(エクセル)
-
11
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
12
複数セルの入れ替え方法 excel vba
Excel(エクセル)
-
13
Listviewのデータを上から順番に取得 VBA
Visual Basic(VBA)
-
14
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
15
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
16
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
17
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
18
押したボタンの位置取得(共通のマクロ)
Excel(エクセル)
-
19
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
20
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
勃起する時って痛いんですか? ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
尿検査前日に自慰行為した時の...
-
尿検査の前日は自慰控えたほう...
-
腕を見たら黄色くなってる部分...
-
中出しをするとお腹が痛い・・・。
-
これって喉仏ですか? 私は女性...
-
EXCELで式からグラフを描くには?
-
口の中に黒い血の塊
-
精子が黄色?
-
納豆食べた後の尿の納豆臭は何故?
-
舌の裏の痛みのないプツプツの...
-
excelでsin二乗のやり方を教え...
-
エクセル指定した範囲からラン...
-
甲状腺腫れ
-
2つの数値のうち、数値が小さい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報
Zincerさんへ
作戦1で成功しました!
案外簡単な事だったんですね。
本当にありがとうございました。