• ベストアンサー

マクロの自動記録

Excelのマクロ自動記録に関する質問です。 ソルバーを繰返し含む処理をマクロの自動記録で実行したいのですが、Excelのシート上で1つづつ手で実行すると問題なく処理出来ている手順を自動記録して実行すると“コンパイルエラー:SubまたはFunctionが定義されていません”とエラーが出ます。 下記の“SolverOk”の部分に問題があると表示されます。 Range("D19").Select ActiveCell.FormulaR1C1 = "180" Range("D19").Select Selection.Copy Range("J19").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("D24").Select Application.CutCopyMode = False Selection.Copy Range("J22").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False SolverOk SetCell:="$M$18", MaxMinVal:=3, ValueOf:="0", ByChange:="$D$19" SolverSolve   ---   --- どうすれば解決できるか教えて下さい。 よろしくお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

「SolverOk 関数」をヘルプで調べてください。 詳しく書いていますよ。 あと、Solver.xls でなくて Solver.xla ですよ。 ヘルプの内容: この関数を使う前に、ソルバー アドインへの参照を設定しておいてください。Visual Basic モジュールをアクティブにした状態で、[ツール] メニューの [参照設定] をクリックし、[参照可能なライブラリ ファイル] の [Solver.xla] チェック ボックスをオンにします。このチェック ボックスが [参照可能なライブラリ ファイル] に表示されない場合は、[参照] をクリックしてから、Office をセットアップしたフォルダの \Office\Library にある Solver.xla を開きます。 Officeをデフォルトでインストールしたとは、下記を指定します。(Offce2000) C:\Program Files\Microsoft Office\Office\Library\Solver.xla

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

http://www.komiyama.t.u-tokyo.ac.jp/~koyama/html/VBA/VBA_solver.html#SolverOk に解説があります。SolverOk以外の解説もあり参考になります。

hirombo
質問者

お礼

参考URL有難う御座います。 Excelはとても奥が深く何か新しいことをやろうとするとなかなか思うように進めません。 教えてもらいながらボチボチやります。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

No.2ですが・・・ あっ、Solverフォルダの中です。 Officeをデフォルトでインストールしたとは、下記に(Offce2000) C:\Program Files\Microsoft Office\Office\Library\Solver\Solver.xla です。

hirombo
質問者

お礼

参照可能なライブラリファイルに Solver.xla をセットすると Solver.xls と表示されました。 お陰様でうまく行きました。 有難う御座いました。

回答No.1

VBEの[ツール]→[参照設定]で solver.xls にチェックを入れてください。

hirombo
質問者

補足

早速の回答ありがとうございます。 >VBEの[ツール]→[参照設定]で >solver.xls にチェックを入れてください。 [参照設定]の中に solver.xls を見つけることが出来ません。 Microsoft Excel 9.0 Object Libraryにはチェックがついていますが、これとは違いますよね? もう少し詳しく説明をお願いします。

関連するQ&A

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • マクロ教えてください(繰り返しの方法)

    マクロ、VBAは超初心者です。 Sheets("optimizer").Select Range("C7").Select Selection.Copy Range("E6").Select ActiveSheet.Paste SolverOk SetCell:="$F$34", MaxMinVal:=1, ValueOf:="0", ByChange:="$F$28:$O$28" SolverSolve Userfinish:=True Range("F28:Q28").Select Selection.Copy Sheets("table").Select Range("D7").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("optimizer").Select Range("C8").Select Selection.Copy Range("E6").Select ActiveSheet.Paste SolverOk SetCell:="$F$34", MaxMinVal:=1, ValueOf:="0", ByChange:="$F$28:$O$28" SolverSolve Userfinish:=True Range("F28:Q28").Select Selection.Copy Sheets("table").Select Range("D8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False 上のように同じことを何回も繰り返すのですが、2行目の Range("C8").SelectがC9, C10, C11・・・・、また下から3行目の Range("D8").SelectがD9, D10, D11・・・と貼り付けていくところだけを変えていきたいのです。 今は長いプロシージャを書いているのですが、簡単でする方法があればご教授ください。 宜しくお願いいたします。

  • エクセルマクロ実行中に固まります

    単純処理を連発させているのですが、最後まで実行されず、 途中で固まってしまいます。こういう場合はどのように 対処したらよいのでしょうか? VBAに埋め込むとよいコードなどあれば教えてください。 コードのひとかたまりは下記のようなものです。 これを100連発ほどさせます。 Range("D4:K4").Select       ...計算式がはいっています Selection.Copy Range("D5:K16").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False

  • こんなマクロなんですが。

    下記のマクロでエクセルの表からデータ(文字列)を取得するようにしたいとおもっています。 Range("B23").Select Selection.Copy Range("F23").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Range("B24").Select Selection.Copy Range("F24").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("B25").Select Application.CutCopyMode = False Sheets("September 03").Copy Before:=Sheets(2)          ←ここ Selection.Copy Sheets("September 03 (2)").Select                   ←ここ Sheets("September 03 (2)").Name = "September 10"       ←ここ Range("B33").Select Application.CutCopyMode = False ActiveWindow.SmallScroll Down:=-15 Range("F12:L18").SelectEnd Sub と、まだ続くんですが、とりあえずここまでで。 番地のデータを取り込むようにしたいんですが、うまくいきません。 ←ここ っていうのがまさにそれです。

  • Excelでマクロを繰り返したい。

    Excelでマクロを記録したら以下のようになりました このマクロを以下の条件で繰り返したいのですが。 Sub Macro1() '------------- '----------------------- ' Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=5*", Operator:=xlAnd, _ Criteria2:="<>5@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=6*", Operator:=xlAnd, _ Criteria2:="<>6@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=7*", Operator:=xlAnd, _ Criteria2:="<>7@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=8*", Operator:=xlAnd, _ Criteria2:="<>8@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 条件= Field:は4~35位まで変動します 一連の動作をコピーして手作業で数字を変えてみたのですが プロージャが大きすぎてエラーになってしまいます。 何か良い方法は無いでしょうか?。

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • マクロの記録を書きかえる

    下記の構文を可能な限り短くして書きたいのですが、 どのように省略出来るのかがわかりません。 <シート1のB列のデータの入力されているセルまでコピーし、シート2のA2から値で貼付ける> Range(\"B2\").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets(\"Sheet1\").Select Range(\"A2\").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ご指導宜しくお願い致します。

  • EXCELの自動記録の修正の件

    いつもお世話になっております。 こんな質問しました。 http://okwave.jp/qa3973267.html http://okwave.jp/qa3973335.html なんとか、自動記録とOKwebの受け売りで、 やってみました。 でも、もう限界です。 教えて下さい。 【困っていること】 1.保管するファイル名を固定でなく、 見積書.XLSのH13(固定)の値で、 ファイル名を付けて保存したい。 2.台帳.XLSのT2:AG2のコピー先で、 全てが選択されている状態のため、 リンクが全項目になっている。 先頭の項目だけにしたい。T2のコピー先のみ。 3.リンクを固定でなくて、 ファイル名、表示名をT2(固定)の値、 もしくはコピー先(可変)の値でしたい。 今は、見積書.XLSとSEC01-20080001となっているのを、 可変に、例、SEC01-20080100.XLSとSEC01-20080100にしたい。 現在のコード(一部)は以下です。 Range("A1").Select ChDir "H:\2008\見積" ActiveWorkbook.SaveAs Filename:= _ "H:\2008\見積\見積書.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Windows("台帳.xls").Activate Range("T4").Select Selection.Copy Range("T2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("S3").Select Application.CutCopyMode = False Selection.Copy Range("S1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("T2:AG2").Select Application.CutCopyMode = False Selection.Copy Cells(ActiveSheet.Rows.Count, 4).End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="見積書.xls", _ TextToDisplay:="SEC01-20080001" Cells(ActiveSheet.Rows.Count, 4).End(xlUp).Offset(1).Select ActiveWorkbook.Save 宜しくお願い致します。

  • エクセルVBA マクロの記録をコマンドボタンにコピペしても動かないのはなぜ?

    マクロを記録した以下は問題なく動くのですが、 Sub Macro1() Sheets("AAA").Select Range("A39:AQ39").Select Selection.Copy Sheets("BBB").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub これをシート”BBB”のコマンドボタンに下記のようにコピペすると Range("A39:AQ39").Selectでエラーが発生し動きません。 どうすれば動くようになるのでしょうか? また、どうしてボタンだとコピペするだけではいけないのでしょうか? Private Sub CommandButton1_Click()    ここにコピペ End Sub

  • このマクロ、何をしているのかわかりますか?

    ' Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1").Select ActiveSheet.PasteSpecial Format:="テキスト", Link:=False, DisplayAsIcon:= _ False Range("A1:A37").Select Selection.Copy Range("S1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Columns("A:A").Select Application.CutCopyMode = False Selection.ClearContents Range("A1").Select End Sub わかる方 お願いいたします!

専門家に質問してみよう