Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 11 Home : Excel 2019)
Rangeの指定方法
投稿日時: 23/09/05 14:10:26
投稿者: TomVla

以下のプログラムにてxを-3〜+3まで0.01ピッチで変化させて放物線y=ax2を描こうとしています。
 
Sub Example1()
    Dim a As Single
 
    For a=-3 To 3 Step 0.01
        Range("a")=a
        Calculate
    Next a
End Sub
 
ところが「Range("a")=a」のところでエラーとなり
 
「実行時エラー'1004'
'Range'メソッドは失敗しました'_Global'オブジェクト」
 
というメッセージが出ます。
 
Rangeの指定方法に問題があるのでしょうか。ご教示よろしくお願いいたします。

回答
投稿日時: 23/09/05 14:28:19
投稿者: WinArrow

>Rangeの指定方法に問題があるのでしょうか。
 
単純に、「a」というセルは存在しないということです。
 
VBAでセルを指定する時は、
Range("A1")
というように書きます。
変数で指定する場合は、
Dim セルA As String
 
セルA = "A10"
 
Range(セルA)
 
又は、Cells(10, 1)
 
 

回答
投稿日時: 23/09/05 14:37:15
投稿者: simple

# このスレッドと関係ないことで恐縮です。
https://www.moug.net/faq/viewtopic.php?t=82422
に関係すると思われる記事を書きました。お知らせします。

回答
投稿日時: 23/09/05 14:39:10
投稿者: WinArrow

>プログラムにてxを-3〜+3まで0.01ピッチで変化させ
と書いたなあば
 
For x = -0.3 To 3 Step 0.01
 
で、x を使わないと説明と整合しないでしょう。
ところで、どのセルに代入したいのでしょうか?
 
固定のセルに代入するのは、おかしいから、
例えば、「セルB1から、下へ」のようにする必要があると思います。
医パン的には、Cellsを使た方が分かりやすいとおもいます。

回答
投稿日時: 23/09/05 14:50:13
投稿者: wtnb
投稿者のウェブサイトに移動

放物線を描く一例です。
放物線のy値をセルに書き込んでおいてから、それをグラフ化するパターンです。
 

Sub Example1()
    Dim x As Single, y As Single
    Dim c As Integer
    
    c = 0
 、    
    For x = -3 To 3 Step 0.01
        y = x * x
        Cells(1 + c, 1) = y
               
        c = c + 1
    Next


ActiveSheet.Shapes.AddChart2(227, xlLineMarkers, 100, 100, 200, 500).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$A$" & Cells(1, 1).End(xlDown).Row)

End Sub

回答
投稿日時: 23/09/05 15:02:08
投稿者: WinArrow

文章の入力ミス訂正
>医パン的には、Cellsを使た方が分かりやすいとおもいます。

一般的には、Cellsを使た方が分かりやすいとおもいます。
 

回答
投稿日時: 23/09/05 16:17:41
投稿者: WinArrow

放物線グラウ用の表を、
 
横方向の表に作成するコードです。
参考にしてください。
 

    Dim x As Single, y As Single
    Dim C As Long
 
    For x = -3 To 3 Step 0.01
        y = x * x
        C = Cells(2, Columns.Count).End(xlToLeft).Column + 1
        Cells(1, C).Value = x
        Cells(2, C) = y
    Next

投稿日時: 23/09/05 20:39:38
投稿者: TomVla

WinArrow様、simple様、wtnb様
検討に時間がかかりそうなので、とりあえず早速のご回答にお礼申し上げます。
別途状況、結果につきまして報告いたします。ありがとうございます。

回答
投稿日時: 23/09/06 15:55:02
投稿者: Suzu

用途が判りませんが、Single ではなく、Double の方が良いと思います。

トピックに返信