マクロの意味をお教えください

このQ&Aのポイント
  • 他人が作成したマクロを使用したいのですが、思い通りの動きになりません。
  • 以下のマクロが示す意味をお教えいただけますでしょうか。
  • 線種byblockにて構築線を作図して、スペースキーを押すことで、水平と直角を切り替えて連続で描きたい。
回答を見る
  • 締切済み

マクロの意味をお教えください

他人が作成したマクロを使用したいのですが、思い通りの動きになりません。どこがおかしいのか、確認するために、以下のマクロが示す意味をお教えいただけますでしょうか。 ◆マクロ本文 *^C^C_S_ADD_LAY00;-color;byblock;_xline;a;$M=$(if,$(eq,$(getenv,to),0),90,0);\$M="$(if,$(getvar,cmdactive),,setenv;to;$(if,$(getenv,to),0,1))"^M ◆やりたいこと 線種byblockにて構築線を作図して、スペースキーを押すことで、水平と直角を切り替えて連続で描きたい。 どうぞよろしくお願いいたします。

noname#230358
noname#230358
  • 2D
  • 回答数1
  • ありがとう数1

みんなの回答

noname#230359
noname#230359
回答No.1

AUTOCAD? マクロを使わんでも 線種をはじめにbyblockにして xl エンター F8 始点 向き(米印) エンター エンター 米印 にループ するんだが 昔と違ってAutocadはカスタマイズしなくても使えるよ

noname#230358
質問者

お礼

ははは様 お返事遅くなってすみません。 ご回答ありがとうございます。助かりました。 理解できていない部分もございますが、勉強したいと思います。

関連するQ&A

  • AutoCAD LT2007で連続複写のマクロ

    AutoCAD LT2000iで使ってた連続複写のマクロがLT2007では動きません(止まらない)いいマクロを教えて下さい。 以下はLT2000iで使ってたマクロです。 これと同じものが出来たら有難いのですが。。 ^C^C$m=setenv;to;0;$(nth,$(getenv,to),select;\copy;p;;\'setenv;p0;"""$m=$(getvar,lastpoint)""";\setenv;p1;"""""""$m=$(getvar,lastpoint)""""""";setenv;to;1,userr1;non;$(getenv,p0);non;$(getenv,p1);setenv;d0;"""$m=$(getvar,userr1)""";setenv;to;2,)$(nth,$(getenv,to),,,userr1;\setenv;d0;"""$m=$(+,$(getenv,d0),$(getvar,userr1))""";ucs;z;non;$(getenv,p0);non;$(getenv,p1);copy;p;;non;@;non;@"""""""$m=$(getenv,d0),0""""""";ucs;p;setenv;to;2);^M;

  • AUTO CAD 2008の中心線作成コマンド

    お世話になります。 LT2007からAUTO CAD2008への変更作業をしてます。 LT2007のときに重宝していたセンター線作成コマンドが動きません。 どなたか下記コマンドのどこを直せばAUTO CAD2008で動くようになるのか教えてもらえませんか? 中心線(十字) ^C^C_setenv;"YOKO";\;^C^C_setenv;"TATE";\_id;\_line;_none;@-$m=$(/,$(getenv,YOKO),2),0;_none;@$(getenv,YOKO),0;;CHANGE;L;;P;LT;CENTER;C;4;;_line;_none;@-$m=$(/,$(getenv,YOKO),2),$(/,$(getenv,TATE),2);_none;@0,-$(getenv,TATE);;_CHANGE;L;;P;LT;CENTER;C;4;;^Z^M; すみませんが、宜しくお願いします。

  • ファナックマクロ#5001~5008、#5041…

    ファナックマクロ#5001~5008、#5041~#5048の違いについて 初歩的な質問で申し訳ないのですが#5001~#5008と#5041~#5048の違いって何かわかりますか?例えば #1=#4001 #3=#4003 #4=#4109 #5=#5003←この部分 G00G90Z#18 G01Z#26F#9 IF[#4010EQ98]GOTO1 G00Z#18 GOTO2 N1G00Z#5 N2G#1G#3F#4 M99 上記の#5003は#5043でもいいのではないかと思うのですが明確な違いが分かりません。それとも僕が勘違いしているのでしょうか?どなたか ご教授おねがいします!

  • Excelのマクロで質問です

    セルに関数で文字が入った時にマクロを実行させる方法を教えて下さい。 今回行いたいのは、C9~C19セルにNGと表示された場合にメッセ―ジを表示したいです。 Private Sub Worksheet_Change(ByVal Target As Range) '変化のあったセルがA1セルか? If Intersect(Target, Range("C9:C19")) Is Nothing Then Exit Sub '条件判定:A1セルの値は 1 か? If Target.Value = "NG" Then MsgBox "NGです" End If End Sub このような場合C9~C19セルにNGと打ち込めばメッセ―ジが表示されるのですが あらかじめ、関数で =IF(M9="","",IF(Q9<M9,"OK","NG")) というような式がそれぞれのC9、C10、C11・・・・セルに入ってしまっています。 これだと、例えばC9セルにNGと表示されてもマクロは起動せず、メッセージが表示されません。 関数をマクロに盛り込むか、このままでもマクロが起動できるような書き方があるか 教えてください。 すみません。補足でQ9セルには =IF(I9="","",I9+"07:01")のような関数が 入力されています。

  • マクロプログラム

    マクロプログラム初心者です。 よろしくお願いいたします。 使用設備 OKK MCH600 (横型マシニング、パレットチェンジ機構付) 制御装置 MELDAS 500 縦型のマシニングセンターを10年ほど扱っておりますが、今回はじめて パレットチェンジ機構の付いたマシニングを使うことになり、とても 困っています。 パレット1の時と、パレット2の時のプログラムをそれぞれ分けて 動かしたいです。IF~GOTOを使用したいと考えています。 プログラムは以下のとうりです。 L15000(MAIN) G80G40G17G64G69.1 G91G00G30Z0 G30X0Y0 G28B0 M1 M60 ← パレットチェンジのM信号 IF[#****EQ1]GOTO10  ← 機内がパレット1ならシーケンス番号 N10へ IF[#****EQ1]GOTO20  ← 機内がパレット1ならシーケンス番号 N20へ N10(*NO,1-PALETTO) M62(*1PALE,CHECK) ← 機内がパレット1なら OK G22L15100 GOTO30 N20(*NO,2-PALETTO) M61(*2PALE,CHECK)  ← 機内がパレット2なら OK G22L15200 GOTO30 N30 G23 上記のプログラム内容で、パレット1、パレット2のどちらからでも スタートすることができて連続運転をしたいです。 IF[#****EQ1]GOTO10 ****の部分にシステム変数を使用すれば良いのでしょうか? またシステム変数(#1000~#1031)の設定は画面上で確認することは可能でしょうか? とても困っていますので、どうかよろしくお願いいたします。

  • マクロのIF

    FANUC CNCでNCのマクロを使用しようとしています. システム変数#100の値をを読んで1ならマクロを抜けて,それ以外なら原点復帰して停止するプログラムです. O1000; IF[#100EQ1.0]GOTO201; N200; M99; N201; G28G91Z0; G28G91Y0; M1; M5; M30; % 呼び出し側はG65P1000;と記述しています. 現在はテストですので,#100の値は自動運転中に手動で入力しています. 上記を実行したところ#100にどんな値を入れてもN201が実行されてしまいます. どうも#100が常に空の値になっているような気がします. 上記の現象が発生する理由がお分かりになられる方がいらっしゃおましたら,何卒ご教授お願い致します.

  • エクセルマクロで定義した関数が動きません

    以前にマクロの記述について教えて頂いた件の続きになります. ご指導頂いたとおりExcelマクロで複素数を扱う関数を下記HPから 標準モジュールにコピペしました.今度は正しくコピーできたと思いますが, 実行するとエラーになります. 標準の組込み関数を用いて「実数」の行列を計算すれば正しく 計算できますが,当然ながら「複素数」は計算できません. この「複素数」を扱う新しく定義した関数が動かない理由, 「End if に対するifブロックがありません」とか 計算結果が「#VALUE!」となってしまうのは何故でしょうか? マクロの記述内容はほとんど理解できないのですが, どなたか助けて頂けませんか! ちなみにエクセルは2016版です. http://www.geocities.jp/tomtomf/denki/AC2/ac2.htm http://www.geocities.jp/tomtomf/denki/AC1/ac1.htm 以下はコピー定義した「 IMMULT」関数と「 IMINVERS」関数のマクロです. Public Function IMMULT(a As Range, b As Range) As Variant Dim r1 As Integer, r2 As Integer, c1 As Integer, c2 As Integer, nn As Integer Dim r As Integer, c As Integer Dim cr As Integer, cc As Integer Dim n As Integer Dim mm() As Variant r1 = a.Rows.Count r2 = b.Rows.Count c1 = a.Columns.Count c2 = b.Columns.Count If (c1 = r2) Then nn = c1 Else Exit Function End If cr = r1 cc = c2 ReDim mm(1 To cr, 1 To cc) For r = 1 To cr For c = 1 To cc mm(r, c) = 0 For n = 1 To nn mm(r, c) = IMSUMa(mm(r, c), IMPRODUCTa(a.Cells(r, n), b.Cells(n, c))) Next Next Next IMMULT = mm End Function Public Function IMINVERS(a As Range) As Variant Dim n As Integer, n1 As Integer, n2 As Integer Dim r1 As Integer, r2 As Integer, c As Integer Dim max As Variant Dim i As Integer Dim m() As Variant Dim inm() As Variant Dim rr As Integer, cc As Integer Dim no As Integer, ex As Variant n1 = a.Rows.Count n2 = a.Columns.Count n = n1 ReDim inm(1 To n1, 1 To n2) For rr = 1 To n1 For cc = 1 To n2 If rr <> cc Then inm(rr, cc) = 0 Else inm(rr, cc) = 1 'End If Next Next ReDim m(1 To n1, 1 To n2) m = a If n1 <> n2 Then IMINVERS = False Exit Function End If For r1 = 1 To n max = m(r1, r1) no = r1 If r1 < n Then For i = r1 + 1 To n If IMABSa(m(i, r1)) > IMABSa(max) Then max = m(i, r1) no = i End If Next If (r1 <> no) Then For i = 1 To n ex = m(r1, i) m(r1, i) = m(no, i) m(no, i) = ex Debug.Print m(r1, i), m(no, i) ex = inm(r1, i) inm(r1, i) = inm(no, i) inm(no, i) = ex Next End If End If max = m(r1, r1) For i = 1 To n m(r1, i) = IMDIVa(m(r1, i), max) inm(r1, i) = IMDIVa(inm(r1, i), max) Next For r2 = 1 To n If r1 <> r2 Then max = m(r2, r1) For i = 1 To n m(r2, i) = IMSUBa(m(r2, i), IMPRODUCTa(m(r1, i), max)) inm(r2, i) = IMSUBa(inm(r2, i), IMPRODUCTa(inm(r1, i), max)) Next End If Next Next IMINVERS = inm End Function

  • マクロ 戻るボタンを押したらシートの1枚目に戻る

    各シートに「戻る」というボタンを作りましたが、 「ボタンを押したらシートの1枚目をアクティブにする」というマクロを付けたいです。 下記は、『「戻る」というマクロを2枚目のシート以降すべてに付ける』というマクロです。 このマクロの中に、各シートの「戻る」ボタンを押せば、シートの1枚目に戻るような 指示を入れたいです。 分かる方いましたら、お願いします。。。 ※下記のマクロは以前ご回答いただいたマクロを引用したものです。 /////////////////////////////////// Sub 戻るボタン設置() Dim Sht As Worksheet For Each Sht In Worksheets If Not Sht.Name = Worksheets(1).Name Then With Sht For i = 1 To 1 '幅140、高さ20のボタンを追加 .Buttons.Add(900 * i, 10, 140, 20).Text = "戻る" Next i End With End If Next Sht Sheets(1).Select End Sub

  • エクセルのマクロについて

    Sub ア_Click() Dim i As Long With ActiveSheet For i = 5 To .Cells(Rows.count, "C").End(xlUp).Row If InStr(.Cells(i, "C"), "ア") = 0 Then If InStr(.Cells(i, "D"), "ア(半角)") = 0 and .Cells(i,"D")<>"" Then MsgBox i & "行目" Cells(i, 2).Offset(0, -1).Value = "★" End If End If Next i End With End Sub このエクセルマクロはC列に「ア」があって、D列に「ア(半角)」の文字がない場合はメッセージというマクロなのですが、このマクロをア~ンまで同じ作業をしたいのですが、ひとまとめにマクロを組む事はできるのでしょうか?できる場合どのようにすれば良いでしょうか? 下記のようにして見たのですができませんでした。 Sub ア_Click() Dim i As Long With ActiveSheet For i = 5 To .Cells(Rows.count, "C").End(xlUp).Row If InStr(.Cells(i, "C"), "[ア-ン]") = 0 Then If InStr(.Cells(i, "D"), "[ア-ン](半角)") = 0 and .Cells(i,"D")<>"" Then MsgBox i & "行目" Cells(i, 2).Offset(0, -1).Value = "★" End If End If Next i End With End Sub

  • エクセルマクロでファイルを作れません

    ワークブックを開く時に自動的にxmlファイルを作るマクロを組みました。 しかし、そのマクロを組んだPCでは正常にxmlファイルが作成されますが、 他のPCで試したらxmlファイルが作成されずにエラーになりました。 その【xmlファイルが作成されなかった】理由がわかりません。 例えば、PCのセキュリティで、マクロによるファイルの読み書きの動作が弾かれていたりするのでしょうか。 以下、そのマクロの本文です。 解決の手がかりだけでも掴めましたら教えていただくと嬉しいです。 Private Sub Workbook_Open() ' ワークブックを開く時のイベント 'Cドライブ直下に「あああ.xml」ファイルが存在すれば削除 If Dir("C:\あああ.xml") <> "" Then Kill "C:\あああ.xml" Else End If 'xmlファイルを作成   ' XMLファイル保存先の指定 Dim iFileNum As Integer iFileNum = FreeFile Dim SaveFileName As String SaveFileName = "C:\あああ.xml" Open SaveFileName For Output As #iFileNum  '←ここでエラーになります!! ''xmlファイル本文の作成 Print #iFileNum, "<?xml version=""1.0"" encoding=""UTF-8""?>" Print #iFileNum, "<markers>" Print #iFileNum, "</markers>" '後処理 If iFileNum > 0 Then Close #iFileNum End Sub