Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
セルへの入力について
投稿日時: 19/06/06 21:20:27
投稿者: moriQQ

すみません、関数で入力する事なのかもしれません、
 
Sheet1の
A1        B1       C1
任意の文字     任意の文字    任意の数字
 
をいれたとしてです。
 
Sheet2の
A1        B1       C1
ここに表示     ここに表示    ここに表示
 
すごく簡単に関数?イコールを使えば表示できますが、VBAが分からないので
どのように書くとSheet1のA1〜C1のセルの内容がSheet2に表示できる
のか?知りたいです。すみません急いではいません。どなたか教えていただければ
嬉しいです。知っている方には簡単かもしれませんが、分からないもので・・
よろしくお願いします。

回答
投稿日時: 19/06/06 22:17:24
投稿者: WinArrow
投稿者のウェブサイトに移動

関数で対応すると、
ご存知と思いますが、リアルタイムで表示されますよね・・・
  
しかし、VBAで対応する場合、
その処理を実行するタイミングが必要です。
  
どのようなときに、どのような方法で実行させたいと考えているんですか?
 
それから、関数では、結果が目視可能ですが、
VBAの場合、元データの妥当性をチェックする
ことも場合によっては必要になります。
 
た問えば
セルC1は「数字」と書いてありますが、
「数字」と「数値」を同一と考えていますか?
それはそれとして、数字以外が入力されていたら、
どのようにするのでしょう?
 

回答
投稿日時: 19/06/06 22:29:08
投稿者: WinArrow
投稿者のウェブサイトに移動

もう一つの質問
 
Sheet2の各セルは、元セルとのリンクを必要としますか?
 
 

回答
投稿日時: 19/06/07 07:00:10
投稿者: simple

>どのように書くとSheet1のA1〜C1のセルの内容がSheet2に表示できる
>のか?知りたいです。

すみません、VBAだからといって、他のセルの値を表示するという
特別な機構は持ち合わせていません。
(1)Sheet1のセルの値と同一のものをSheet2のセルに入力するか、
(2)同じ事だが、Sheet1のセルをSheet2に値のみコピーペイストするか(普通にコピーでもよいかも)
(3)Sheet1のセルを参照する関数式をVBAで設定するか
といった方法が普通です。
 
どのあたりが不明点なのでしょうか。
シートの指定の仕方ですか?
Worksheets("Sheet2").Range("A1").Value = 100
とか、
Worksheets("Sheet2").Range("A1").Value = Worksheets("Sheet1").Range("A1").Value
といった書き方が参考になるでしょう。
 
(2)(3)はマクロ記録をとってみると参考になると思います。

投稿日時: 19/06/07 13:13:24
投稿者: moriQQ

返信ありがとうございます、
Sheet1に入れた数値または、文字をボタンを押したらSheet2に反映するといった事を聞いてみました。
すみません、あまり詳しい事などはわかりません、マクロで記録すると、入力した数値や文字そのものになりますので、変数というのでしょうか?どのようにすれば入力してマクロか、ボタンかで反映できるか知りたかったのです。説明ヘタですみません。

回答
投稿日時: 19/06/07 13:38:45
投稿者: WinArrow
投稿者のウェブサイトに移動

質問冒頭にある
>関数
で対応する場合
Sheet2のセルA1で
=Sheet1!A1
と入力すると思います。
 
そうすると、Sheet1のセルA1の内容が表示されます。
しかし、Sheet1のセルA1が空白の場合、「0」が表示されます。
 
これは、貴方が意図した結果なんでしょうか?
 
シートに配置したボタンをクリックしたとき
Sheet2のセルに
数式を入れるのか?「値」を入れるのか
によってコードが変わってきます。
 
因みに、今回お場合、
>変数
は必要ありません。
理由は、
説明だけでは、複写元、複写先セルが固定だからです。
 
例えば、
Sheet1のセル範囲は、A列〜Z列で、行数も可変はデータを
Sheet2の対応するセルに複写したい・・とか、条件による複写したい
というような、説明があるならば、
変数を使ってループ処理になると思いますが、
説明のようにセルを限定した(しかも3個)だと、3行のコードで事足りるからです。
 
もう一つ
Sheet1とリンクさせる必要があるか否かでもコードが変わってきます。
 

@Sheet1のセルとリンクさせる場合・・・・VBAの必要性はないと思いますが
Sheet2のセルに数式(上述)を代入すればよいです。
Sheets("SHeet2").Formula = "=Sheet1!A1"
 
A「値」複写する場合
Sheets("Sheet2").Range("A1").Value = Sheets("Sheet1").Range("A1").Value
 
Bセルの書式を含めて複写する場合
Sheets("Sheet1").Range("A1").Copy Destination:=Sheets("Sheet2").Range("A1")
 
どのように使うか、何を複写するかが決まります。
これはあなたが考えることで、これらをきちんと説明しないと
回答者には伝わりません。
 

投稿日時: 19/06/07 21:49:01
投稿者: moriQQ

丁寧に説明ありがとうございました。色々な区別がついていなくて質問ですみませんでした。