- ベストアンサー
Excel2003円を滑らかに回転させる方法とは?
- EXCEL2003で回転する円を描こうと思いました。
- 円を滑らかに動かす方法はどうやったらできるのでしょうか。
- DoEventsを使用することで円が動き出し、円の動きを滑らかにすることができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連する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で図面を書きたい」という質問をしたのですがややこしく書いたため解答される方が居ませんでしたので編集して再質問をさせていただきます。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- やはり図形のクリアで実行時エラー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
- ベストアンサー
- Visual Basic
- マクロが実行しない
二行三列を一枡として月の勤務割表を作成しています。マクロで同じ事を しているのに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
- ベストアンサー
- Visual Basic
- [エクセル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です。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
お礼
DreamyCatさんありがとうございます。 返信が遅れてしまい、申し訳ありませんでした。 PCの性能ですか。それほど古くはないのですが、新しくもありません。 3年位前だったと思います。ただCPUはかなりケチって、安いのにしました。 ある程度は動くのですが、時々止まってアレッと思う感じです。 ありがとうございました。もう少し勉強しておきます。