- ベストアンサー
VBA教えてください
セルB5からF5に各列の平均値が入力されています。 B5からF5の値をH6からL6にも表示されるVBAを作りたい のですが教えていただけないでしょうか? 関数でを使えば簡単ですが数式を表示したくないので お願いします。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでどうでしょう? B5からF5を range("B5")等と、しても良いのですが、cell を、使えば変数としてそのまま整数値が使えますので、下記のようになります。 Range("B5")は、Cells(5,2)では、行列の順番が逆になります。 平均値をlong型として宣言しています。 Sub 値のコピー() Dim i As Integer Dim heikin As Long For i = 2 To 6 Worksheets(1).Cells(6, i + 6).Value = Worksheets(1).Cells(5, i).Value Next i End Sub
その他の回答 (8)
- taocat
- ベストアンサー率61% (191/310)
こんにちは。 数式を表示させたくないのでしたらVBAを使わなくても単にシートを保護するだけでいいのでは? ---------------------------------------------- 式のあるセルを右クリック > セルの書式設定 書式設定ダイアログの「保護」タブクリック 「ロック」と「表示しない」にチェックを入れOKボタン メニューバーの「ツール」 >「保護」 >「シートの保護」 ------------------------------------------------- これで式は表示されないですよね。 勘違いでしたらご容赦願います。 以上です。
- Wendy02
- ベストアンサー率57% (3570/6232)
>関数でを使えば簡単ですが数式を表示したくないので ということは、こういうことかな? B5からF5 に入力、または、その該当する領域に、F2を押し、Enterで、イベントが起動します。不要なら、 If 文 1行を削除すれば、どこでもイベント起動しますが、入力すると常にイベント起動します。 'シートモジュール(該当シートのモジュールペイン;例 Sheet1(Sheet1)) Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("B5:F5")) Is Nothing Then Exit Sub Application.EnableEvents = False Range("H6:L6").Value = Range("B5:F5").Value Application.EnableEvents = True End Sub なお、Range オブジェクトは、Worksheet の配下ですから、アクティブシートの場合は、Worksheet の記述は必要ありません。
- hana-hana3
- ベストアンサー率31% (4940/15541)
Sub cpy() Range("B5:F5").Copy Range("H6:L6").PasteSpecial xlPasteValues Application.CutCopyMode = False Range("A1").Select End Sub
- 999osietekudasai
- ベストアンサー率57% (4/7)
ツール→マクロ→マクロの自動記録で マクロ名を付けて(例えば、平均コピーとか・・・) → OK マクロの自動記録が始まりますので、 B5~F5をコピー → H6を右クリック → 形式を選択して貼り付けで値を選択 → OK で、後は、必ずマクロの自動記録を終了してください。
- a987654
- ベストアンサー率26% (112/415)
NO1です。 済みません VBAでしたね。 セルに代入するだけの事ではないのですか? マクロで良いなら cells(6,8)=cells(5,2) .... cells(6,12)=cells(5,6)
- bigdisplay
- ベストアンサー率33% (25/75)
こんな感じが基本パターンです。 同じシートの場合 'セルの属性もすべてコピー Range("H6").Copy Range("B5") 'セルの値だけをコピー Range("H6") = Range("B5") 別のシートの場合 'セルの属性もすべてコピー worksheets("Sheet2").Range("H6").Copy worksheets("Sheet1").Range("B5") 'セルの値だけをコピー worksheets("Sheet2").Range("H6") = worksheets("Sheet1").Range("B5") 作り方は「ツール」→「マクロ」→「マクロ」→「作成」 で上記のコードを入力します。
- shkwta
- ベストアンサー率52% (966/1825)
これでどうでしょう? 標準モジュールでなく、各シートのモジュールに記述してください。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Range("B5:F5").Copy Range("H6").PasteSpecial xlPasteValues Application.CutCopyMode = False Target.Select Application.EnableEvents = True End Sub
- a987654
- ベストアンサー率26% (112/415)
H6に=B5または+B5 同等にしてゆき L6に=F5または+F5