• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel2003 円を滑らかに回転させるには)

Excel2003円を滑らかに回転させる方法とは?

このQ&Aのポイント
  • EXCEL2003で回転する円を描こうと思いました。
  • 円を滑らかに動かす方法はどうやったらできるのでしょうか。
  • DoEventsを使用することで円が動き出し、円の動きを滑らかにすることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

プログラムは直したほうがいいところがいくつもあります。 ・変数宣言を強制する(option explicit)にチェックを入れて直しましょう。  変数の宣言の仕方を調べておきましょう。  APIのSleepも値が間違っています。 またAPI宣言も省略しているので、 実際にはここに提示されたプログラムだけだと エラーになって実行できません。 それはいいとして、 Windows XPのPCがしっかり動作する状態なら、滑らかに動くはずです。 ( celeron Mかそれ以上のCPUでメモリーが1GB以上あること。) Windows VistaやWindows 7の場合はDoEvents:DoEventsのように2~3個入れてください。 (メモリーは2GB以上。64ビット版なら4GB以上搭載したPC) (最近はかなり改善されてきていてDoEvents1個でもなんとか大丈夫かもしれません。) さらにグラフィック描画性能も大きく影響します。 PC性能が不足している場合は、 円の半径・移動半径を小さくする。枠線を細くする・・・少し改善できます。 塗りつぶししない。・・・かなり速くなります。 もう少し無駄の無い式に書き換える。・・・たいして速くはならないでしょう。 → おそらく7~8年前のXP機でPCの性能が低すぎるためだと思います。 あるいは PCがバックアップ中だとか何かの裏作業をしていた可能性もあります。しばらく経ってからPCを再起動してから実行すれば正常になります。

pollux0375
質問者

お礼

DreamyCatさんありがとうございます。 返信が遅れてしまい、申し訳ありませんでした。 PCの性能ですか。それほど古くはないのですが、新しくもありません。 3年位前だったと思います。ただCPUはかなりケチって、安いのにしました。 ある程度は動くのですが、時々止まってアレッと思う感じです。 ありがとうございました。もう少し勉強しておきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBA で自在に図形を変化させたい

    Excel VBAを使って図形を自由に変化させたいと思っています。 一つの形の四角形や三角形をVBAを使ってシート上に表記することは出来ます。 私はユーザーインターフェースを作り、テキストボックスに値を入れることで図形を変化させることをしたいと思っています。 例えば、一つの三角形を正三角形にしたり、直角二等辺三角形にしたり、自在に角度を変えてVBAに描かせたいと思っています。 三角形は以下のようにコードを記述しましたらシートに表示できました。 Sub 三角形作成() Set ArwLine = ActiveSheet.Shapes.AddLine(10, 10, 200, 200) Set ArwLine = ActiveSheet.Shapes.AddLine(200, 200, 100, 400) Set ArwLine = ActiveSheet.Shapes.AddLine(100, 400, 10, 10) End Sub これを以下のようにして変数(x、y)にユーザーインターファースから値を代入するようにしたいのですがどのようにすればよいのでしょうか教えてください。 Private Sub CommandButton1_Click() UserForm1.Show End Sub Sub 三角形作成() Set ArwLine = ActiveSheet.Shapes.AddLine(10, 10, 200, 200) Set ArwLine = ActiveSheet.Shapes.AddLine(200, 200, x, y) Set ArwLine = ActiveSheet.Shapes.AddLine(x, y, 10, 10) End Sub 前回、「Excel VBAで図面を書きたい」という質問をしたのですがややこしく書いたため解答される方が居ませんでしたので編集して再質問をさせていただきます。 よろしくお願いします。

  • やはり図形のクリアで実行時エラー1004

     図形を二行三列で一枡とし図形を貼り付けていますが、どうしても実行時エラー 「1004」が出て図形のクリアができません。(尚、四角形は枠線上にあります。) 対処法がありましたらお願いします。 Windows7・SP1 Office2010 Sub 図形の貼付け() Dim i As Integer Dim j As Integer For i = 10 To 43 Step 2 For j = 9 To 99 Step 3 Select Case Cells(i, j).Value Case 1: ActiveSheet.Shapes("四角形1").Select Selection.Copy Cells(i + 1, j + 1).Select ActiveSheet.Paste Case 2: ActiveSheet.Shapes("四角形2").Select Selection.Copy Cells(i + 1, j).Select ActiveSheet.Paste Case 4: ActiveSheet.Shapes("四角形3").Select Selection.Copy Cells(i + 1, j + 1).Select ActiveSheet.Paste Case 5: ActiveSheet.Shapes("四角形3").Select Selection.Copy Cells(i + 1, j + 2).Select ActiveSheet.Paste Case 6: ActiveSheet.Shapes("円1").Select Selection.Copy Cells(i, j).Select ActiveSheet.Paste End Select Next Next End Select End Sub Sub 図形のクリア() Dim myRng As Range Set myRng = Range("I10:CW43") Dim n As Integer, sp As Variant For n = ActiveSheet.Shapes.Count To 1 Step -1 Set sp = ActiveSheet.Shapes(n) If Not Intersect(Range(sp.TopLeftCell, sp.BottomRightCell), myRng) Is Nothing  (ここで実行時エラー1004になります。) Then sp.Delete End If Next Set myRng = Nothing End Sub

  • マクロが実行しない

     二行三列を一枡として月の勤務割表を作成しています。マクロで同じ事を しているのにMacro1の方が実行しません。お教え願えませんでしょうか。 (尚、図形を枠線上にコピペしています。) Sub Macro1()実行しません。 Dim i As Integer Dim j As Integer For i = 10 To 43 Step 2 For j = 10 To 103 Step 3 Select Case Cells(i, j).Value Case 1: ActiveSheet.Shapes("四角形1").Select Selection.Copy Cells(i + 1, j + 1).Select ActiveSheet.Paste End Select Next Next End Sub Sub Macro2()実行します。 ActiveSheet.Shapes.Range(Array("四角形1")).Select Selection.Copy Range("J11:K11").Select ActiveSheet.Paste End Sub

  • [エクセル2007] 図形を非表示にするマクロ

    図形「図A」を非表示にするマクロがあります。 Sub 図削除() ActiveSheet.Shapes("図A").Visible = False End Sub これを図A、図B、図C・・・・・・と増やしていく場合はどうすれば良いのでしょうか? Sub 図削除() ActiveSheet.Shapes("図A").Visible = False ActiveSheet.Shapes("図B").Visible = False ActiveSheet.Shapes("図C").Visible = False            ・            ・             ・ End Sub とするしかないのでしょうか?

  • 実行中のマクロを中断したい

    過日、「マクロの中断」について質問し適切な回答をいただき無事解決したものです。 ところが、初心者の悲しさ、少し変わると全く応用がききません。 Range("A1:B10")を読み上げている途中で中断したいのです。前回ご教示いただいたところにより 「DoEvents」や「Me.Repaint」「Sleep」などをあちこち挿入してみましたがうまくいきません。理屈、理論を理解できていないので仕方ないのでしょうがよろしかったら又ご指導のほどお願いします。Excel2003です。 Dim c As Range Dim CancelFlg As Integer Private Sub CommandButton1_Click() Range("A1:B10").Select CancelFlg = 0 For Each c In Selection   ’ DoEvents Application.Speech.Speak c.Value  ’ DoEvents If CancelFlg = 1 Then Exit For  ’ DoEvents Next c Range("A1").Select End Sub Private Sub CommandButton2_Click() CancelFlg = 1 End Sub 前回のご教示いただいたもの Private Sub CommandButton1_Click() Dim i As Integer CancelFlg = 0 For i = 1 To 100 DoEvents ActiveCell.Value = 1 ActiveCell.Offset(1, 0).Activate Application.Wait (Now + TimeValue("0:0:01")) If CancelFlg = 1 Then Exit For Next i End Sub Private Sub CommandButton2_Click() CancelFlg = 1 End Sub

  • エクセルのVBAのことで

    以下のVBAを実行するとテキストボックスの"あ"という文字で円を描くことができます。 Sub test1() pai = 3.14159 r = 100 Worksheets("sheet1").Activate For s = 0 To 360 Step 15 rd = s / 180 * pai ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _ 200 + r * Sin(rd), 50 + r - r * Cos(rd), 20, 20).Select Selection.Characters.Text = "あ" Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Line.Visible = msoFalse Next s End Sub この円の半分の半径の円を元の円とドーナツ型(◎)になるように描くにはどのようなスクリプトにすればいいのでしょうか?

  • WORD VBAのShapesのこと

    昨日TTakさんから下記のマクロを御教授いただいて助かっているのですが、特定のShapesを除外して下記を実行する方法があれば教えていただけないでしょうか。 Private Sub CommandButton1_Click() Dim myf As String myf = "ここに画像ファイルまでのパスとファイル名を入れる" With ActiveDocument For i = 1 To .Shapes.Count .Shapes(i).Fill.UserPicture myf Next i End With End Sub

  • Excel2003 VBAで印刷 セル指定

    よろしくお願いします。 ボタン5をクリックしてある範囲を印刷したいのですが、私が知っているものはセル指定でActiveSheet.PageSetup.PrintArea = Range("A90:K130") であれが印刷可能なのですが最後の行までにしたいのですがどうしてもうまくいきません。 ActiveSheet.PageSetup.PrintArea = Range(Cells(90, 1), Cells(r, 11)) それと同時に11列全部(文字は小さくてもいいのですが)一枚に印刷したのですが よろしくお願いします。 Private Sub CommandButton5_Click() res = MsgBox("決済記録を印刷します", vbYesNo + vbQuestion) If res = vbYes Then r = Range("A65536").End(xlUp).Row + 1 'Range(Cells(90,1),Cells(r,11)) '印刷したい範囲 ActiveSheet.PageSetup.PrintArea = Range("A90:K130") ActiveSheet.PrintOut preview:=True End If End Sub

  • EXCEL VBA これであっていますか?

    エクセルに地図を貼り付け、その中のある地点Aから半径1キロ、2キロ、3キロといった具合に円を描いています。ある地点B、Cも同様に円があります。セルに“A” と入力した際に該当する地点の円(1キロ、2キロ、3キロの3種類)を赤く表示し、終了すると円が消える(線なしに変わる)ようにするために以下のようなVBAを組みました。が、円が2つしか赤くならなかったり、 ばあいによっては「インデックスが境界を超えています」とエラーが出たりします。 どうしたら良いか教えてください。 Sub iro() Dim i As Variant i = InputBox("表示する地点を指定してください", "地点指定") If i = "A" Then ActiveSheet.Shapes(1).Select ActiveSheet.Shapes(2).Select ActiveSheet.Shapes(3).Select Replace:=False hyoji MsgBox "表示を終了してよろしいですか", vbOKOnly ActiveSheet.Shapes(1).Select ActiveSheet.Shapes(2).Select ActiveSheet.Shapes(3).Select Replace:=False modosu ElseIf i = "B" Then ActiveSheet.Shapes(4).Select ActiveSheet.Shapes(5).Select ActiveSheet.Shapes(6).Select Replace:=False hyoji MsgBox "表示を終了してよろしいですか", vbOKOnly ActiveSheet.Shapes(4).Select ActiveSheet.Shapes(5).Select ActiveSheet.Shapes(6).Select Replace:=False Else MsgBox "指定した地点がありません", vbOKOnly End If End Sub Sub hyoji() Selection.ShapeRange.Line.Visible = msoTrue '「線なし」に設定されている場合、線を表示 Selection.ShapeRange.Line.ForeColor.SchemeColor = 10 Range("A1").Select End Sub Sub modosu() Selection.ShapeRange.Line.Visible = msoFalse '「線なし」に設定 Range("A1").Select End Sub

  • Excel VBA:コントロールボタンのEnabledプロパティーについての質問

    コマンドボタンのEnabledプロパティーを変更したときの挙動が良くわからず 困っており、お教えいただけると幸いです。 Excelのワークシート上にCommandButtonを作り(名前をCommandButton1とします)、 module1に以下のプロシージャを書き、Enabledプロパティーを変化させます。 Sub test() ActiveSheet.CommandButton1.Enabled = Not ActiveSheet.CommandButton1.Enabled MsgBox "here" End Sub 上記のプロシージャに期待したのは、Enabeldの状態が反転した後、 hereの文字が表示されると言うものですが、 実際は先にhereの文字が表示されてしまいます。 また、不思議なことにDoEventsを二つ連続でMsgBoxの前に入れると きちんと動きます。 (ステップ実行でもきちんと動きます。) 最終的には、もっと長いプログラムの中で使う予定なので、 全てのEnabled文の後にDoEventsを二連続で書くという対症療法以外で、 良い解決方法が無いか、お教えいただけると幸いです。 なお、環境はwindowsXP、excel2003です。 よろしくお願いいたします。

このQ&Aのポイント
  • 理解力不足が原因で上司の機嫌を損ねてしまった。
  • 上司への謝罪を検討すべきか、それとも蒸し返すべきか悩んでいる。
  • 上司との関係改善のため、仕事での頑張りを続けている。
回答を見る

専門家に質問してみよう