Excel (VBA)

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

 
(Windows 8.1 : Excel 2016)
ExcelVBAで正弦波をつくる
投稿日時: 18/01/20 12:32:17
投稿者: Taro

ExcelVBAを使って、正弦波が横軸方向へ移動するプログラム考えています。
どなたかいい方法を教えてください。

回答
投稿日時: 18/01/20 13:26:26
投稿者: simple

ワークシート上にサインカーブを描いておきます。
その際、各点に共通する「x軸方向のずらし要素」を 特定のセルで指定しておき、
そのセルをマクロで書き換えていけばよいのではないですか?
  
繰り返しをする際に、一定の待ちを入れる必要があります。(瞬時に終わってしまうので)
そのためには、API関数のSleepを使うとよいと思います。
  
モジュールの先頭に
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
のように宣言しておけば、
Sleep 1000
DoEvents
とすることで、そこで1秒の待ちが入り(単位はミリ秒)、
再描画が起きると思います。
  
# ご自分でどこまでトライしたかを書くのが普通なんですけどねえ。
# こういうことを書くのが、もう嫌になってきているので、私もリタイア寸前ですな。

投稿日時: 18/01/20 23:56:16
投稿者: Taro

説明不足でした。実はネット上で正弦波を描くための以下のマクロ(2002年の投稿)を参考にしました。
フォームにPicture1(これは Image1をPicture1に書き替えました)とCommand1 を置きます。
Command1ボタンをダブルクリックして以下を打ち込みました。
 
Private Sub CommandButton1_Click()
 Dim x, y1 As Single
 Picture1.Line (0, 1000)-(10000, 1000), QBColor(4)
For x = 0 To 10000
  y1 = 500 * Sin(x / 30)
  Picture1.PSet (x, y1 + 1000), QBColor(9)
Next x
End Sub
このマクロを実行すると3行目のx軸を引くところで早くもエラーが発生します。”コンパイルエラー、メソッドまたはデータメンバーが見つかりません”と出ます。正弦波を描く前の初期の段階でエラーとなり困っています。まず、このエラーの解決方法を教えていただくとありがたいです。

回答
投稿日時: 18/01/21 05:45:37
投稿者: simple

>実はネット上で正弦波を描くための以下のマクロ(2002年の投稿)を参考にしました
それは、VBAの記事ではないですよ。
そのコードを使って、そのとおりのことをしたいのなら、VBAでは駄目なので、
道具を変えて、また、別の場所で尋ねてください。

回答
投稿日時: 18/01/21 09:45:06
投稿者: simple

Excelに備わっているグラフ作成機能を使わない理由を教えて欲しい。

回答
投稿日時: 18/01/21 23:16:42
投稿者: simple

VB(Visual Basic) と VBA はまったく別の言語です。
Psetなどという命令もVBAにはありません。
 
グラフを描画命令を使って書くのは、負荷がかかりますし、
よほどの懐古趣味といえるでしょう。
 
Excelは、グラフが簡単に書けることも売りですよね。
それに真っ向、素手で立ち向かうのは、時間の無駄ではないかと思ってしまいます。
特別の目的があるなら別ですが。

回答
投稿日時: 18/01/22 11:08:01
投稿者: mattuwan44

>正弦波が横軸方向へ移動する
どういうことでしょうか?
 
初期値から波をアニメーションのように時間の共に右に徐々に描写していくということなんですかね?
 
今一つイメージが出来ません><

投稿日時: 18/01/22 16:57:50
投稿者: Taro

アドバイスありがとうございました。