Excelにてマクロを記録作成しましたところ、ファイルをいったん閉じて、再び開いたりしたところ、マクロが有効になりませんでした。
というのも、セキュリティのためデジタル署名??そういったダイアログが表示され、私のPCのセキュリティを見てみると「高」に設定されており、これを「中」に変えて作成してみると、使えるようになります。

Excelはさっぱりなものでして、どう説明していいかわかりませんが、マクロで言うデジタル署名っていったい何なのでしょうか?

要点は、Excelのマクロのセキュリティを「高」に設定したままで、自分が作ったマクロを使えるようにするにはどのようにしたらいいのかが知りたいです。
ご回答の程、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは



 以下のページがご参考になるのでは?

[XL 2000] デジタル署名の作成方法
http://www.microsoft.com/JAPAN/enable/Kblight/T0 …

VBA プロジェクトに署名する
http://www.microsoft.com/JAPAN/developer/library …

[OFF2000]ServicePack2(SP2) を適用するとマクロが無効になる
http://www.microsoft.com/japan/support/kb/articl …

[XL2002] 以前のバーションで作成したファイルにデジタル署名を設定するとエラー
http://www.microsoft.com/japan/support/kb/articl …

参考URL:http://www.microsoft.com/JAPAN/enable/Kblight/T0 …
    • good
    • 0
この回答へのお礼

とても参考になります。
これらを読んで、何とかやっていきたいですが。。。
いろいろやってみてわからないことがあれば相談し直します。
ご回答ありがとうございました。

お礼日時:2002/03/11 01:49

Excel 2000のマニュアルを勉強の為に毎日読んでいるんですが、マクロはウイルスの隠れ場になり易いのでこの設定は「高」にしてあると私のマニュアルには書いてあります。



マクロを使えるようにするには、ファイルを開いて Tool/Macro/Securityでセキュリティを『中』に変えて、一旦そのファイルを閉じ再び開けようとすると、マクロを使えるようにしたいか?といった選択がありますよね? 私の場合は英語環境なので "Enable Macro?"というのをクリックしてマクロを使えるようにしています。

いちいちこんな事をするのは面倒ですが、ウイルスがマクロの中にかくれんぼしていて悪さをするより良いかと考えています。
    • good
    • 0
この回答へのお礼

私も今「中」にして仕方なく使っておりますが、ウイルスを考えるがゆえに、セキュリティーは高くしておいて、自分作成のものはわかるようにしておきたいのですね。
なので、マクロを使いつつ対策できることはしておきたいのです。
ご回答どうもありがとうございました。

お礼日時:2002/03/11 01:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qexcelのマクロでrangeの選択がうまくいきません。

excelのマクロでrangeの選択がうまくいきません。
以下のマクロをsheet2に書きました。testcopyは動きますが、testcopy2は動きません。なぜなのでしょうか。どうすればいいのでしょうか。それ以外のマクロの部分との関係から、cellsを使い、数字を使ってrangeの処理をしたいのです。よろしくお願いします。

Sub testcopy()
Worksheets("sheet1").Range("B3:C10").Copy
Worksheets("sheet2").Range("e5").Select
ActiveSheet.Paste
End Sub

Sub testcopy2()
Worksheets("sheet1").Range(Cells(3, 2), Cells(10, 3)).Copy
Worksheets("sheet2").Range("e5").Select
ActiveSheet.Paste
End Sub

Aベストアンサー

>testcopyは動きますが、testcopy2は動きません

testcopyは「動作したり、しなかったりする」が正しい表現です。
  要するに今回testcopyが動いたのは▼たまたま▼ということです。

testcopy2 は当然ながらエラーになります。
何れにしろ、両方ともに問題があるということです。
その問題点は2つあります。

(1)アクティブでないシートのセルはSelect(Activate)できない
(2)複数のシートを扱うときのセルの参照は
   そのセルがどのシートのセルなのか明示する必要がある


これを踏まえて、、、、
---------------
●testcopy●

これが動作するのは
Sheet【2】がアクティブな状態で実行する場合です

Sheet【1】がアクティブな状態で実行すると
  Worksheets("sheet2").Range("e5").Select
ここで、問題点(1)の理由によりエラー。
で、先ずシートを選択、次にセルを選択と2段階にしないといけません。

  Worksheets("sheet2").Select
  ActiveSheet.Range("E5").Select

----------------
●testcopy2●

▼Sheet【1】がアクティブな状態で実行
  testcopyと同じ場所、同じ理由でエラー

▼Sheet【2】がアクティブな状態で実行
  Worksheets("sheet1").Range(Cells(3, 2), Cells(10, 3)).Copy
  ここで、問題点(2)により、エラー。
 
 Cellsの前にシートオブジェクトがないので
 Cells(3, 2), Cells(10, 3)はアクティブなSheet【2】のセルとみなされ
 (★実際はちょと違う場合もありますが今回はそう★)

 Worksheets("sheet1").Range(  ← Sheet【1】
 Cells(3, 2), Cells(10, 3))   ← Sheet【2】

このようにSheet【1】【2】が混在していることになり、エラー
で、Cellsの前にシートを付加してセルがどのシートのセルか明示してやる

Worksheets("sheet1").Range(Worksheets("sheet1").Cells(3, 2), Worksheets("sheet1").Cells(10, 3)).Copy
  
---------------------------------
で、質問者のコードを修正すると
'-------------
Sub testcopy()
 Worksheets("sheet1").Range("B3:C10").Copy
 With Worksheets("sheet2")
   .Select
   .Range("E5").Select
   .Paste
 End With
End Sub
'-------------

Sub testcopy2()
 With Worksheets("sheet1")
   .Range(.Cells(3, 2), .Cells(10, 3)).Copy
 End With
 With Worksheets("sheet2")
   .Select
   .Range("E5").Select
   .Paste
 End With
End Sub
'--------------

●ただ今回のような単純なコピーの場合は
 既出の回答にあるようにSelectなしで書くのがふうつです。
'-----------
Sub testcopy111()
 Worksheets("sheet1")
   .Range("B3:C10").Copy Worksheets("sheet2").Range("E5")
 End With
End Sub
'-----------
Sub testcopy222()
 Worksheets("sheet1")
  .Range(.Cells(3, 2), .Cells(10, 3)).Copy Worksheets("sheet2").Range("E5")
 End With
End Sub
'-----------

今回の件は重要事柄ですので覚えておきましょう。
以上です。
 

>testcopyは動きますが、testcopy2は動きません

testcopyは「動作したり、しなかったりする」が正しい表現です。
  要するに今回testcopyが動いたのは▼たまたま▼ということです。

testcopy2 は当然ながらエラーになります。
何れにしろ、両方ともに問題があるということです。
その問題点は2つあります。

(1)アクティブでないシートのセルはSelect(Activate)できない
(2)複数のシートを扱うときのセルの参照は
   そのセルがどのシートのセルなのか明示する必要がある


これを踏まえて、、、、
-...続きを読む

QExcel2003デジタル署名 個人でする方法は

Excel2000でマクロ入りのワークシートを作り、知り合い複数に配ったところ、Excel2003を持っている人から「マクロが動かない」と言われました。

原因を探ってみると、2003でセキュリティレベルが「高」になっているためでした。
私も2003を持っているのでそちらで確認し、セキュリティレベルを「中」にすれば使えることを伝えたのですが、何人かは自分のパソコンではないのでセキュリティレベルを変えられない、他の人はセキュリティレベルを変えるのは怖くて出来ない、と言います。

Excel2000の頃は出来ていたのに、2003になってこういう問題が出てきて困っています。

デジタル署名をつければいいということはわかったのですが、個人でデジタル署名をつけるとなると、やはりお金を払って証明書を発行してもらうしかないのでしょうか?
お金をもらって配布しているわけではないので、そういう出費をすることはできません。

今後、他のメンバーにも配る予定なので、このような状態だとどうしようもなくなってしまいます。

なにか解決方法はないのでしょうか。
よろしくおねがいします。

Excel2000でマクロ入りのワークシートを作り、知り合い複数に配ったところ、Excel2003を持っている人から「マクロが動かない」と言われました。

原因を探ってみると、2003でセキュリティレベルが「高」になっているためでした。
私も2003を持っているのでそちらで確認し、セキュリティレベルを「中」にすれば使えることを伝えたのですが、何人かは自分のパソコンではないのでセキュリティレベルを変えられない、他の人はセキュリティレベルを変えるのは怖くて出来ない、と言います。

Excel2000の頃は出来て...続きを読む

Aベストアンサー

こんにちは。

以前、以下でも書いたのですが、VBAを書く者にとっては大問題です。証明書を取れないアマチュアは、ボイコットということですからね。

以下など、いつも、この件に関しては、あれこれと書いております。
エクセルマクロのデジタル認証について
http://oshiete1.goo.ne.jp/kotaeru.php3?qid=1770814

根本的には、個々のユーザーの誤解と、その元凶には「MSにモノを言うユーザー」によるものらしいということが分かりました。要するに、素人VBAプログラマーの作るものなどは信頼が置けないのだから、ブロックアウトしましょう、というのが発端のようですね。(そのオプションは、使いたい人とそうでない人の間の折衷案のようですが。)

誤解というのは、それ自体がウィルスのチェックをしているわけではないからです。単に、マクロが入っています、とメッセージが出るのか、マクロを使いたくない人のオプションにしか過ぎないわけです。この周辺に、MS-Office 指定のアンチウィルスAPI を持つソフトウェアというのが存在します。それを使っている人は、「低」でも良いということなのですが、これは、海外の大手のソフトメーカーに限ります。たとえば、シマンテック、トレンドマイクロ等。

ですから、本来、「高」のままの人は、その意味自体を考えてもらい、出来れば、配布はやめたほうがよいと思います。それを越えてまで使わせるという理由は、どのような事情があれ、私はないと思います。ウィルスがどのようなものかも知らなければ、セキュリティの意味さえしらない、ただ、既存の機能があればよいというだけとしかいいようがないのです。

Excelの2000以上で、そのセキュリティを変更する方法を平気で公開する人がいますが、それは、いくら、ウィルスではないにしても、他人のPC環境でセキュリティレベルをマクロで変えたら、それはハッキング行為です。それは、してはならない、プログラマの最低限の常識だと思います。

>個人でデジタル署名をつけるとなると、やはりお金を払って証明書を発行してもらうしかないのでしょうか?

いわゆる CA証明のことですが、コンピュータの管理をしている知り合いにも聞いてみたりしました。海外では安価で登録してくれるところがあるというのですが、日本では、年間最低でも、6~7万円するようです。たとえば、セコムとかVeriSignとか。これと別に、海外ではアングラツールが出回ったそうですが、その実態は知りませんが、MSはセキュリティを変えたそうです。せめて、プロバイダの発行する証明書が使えればと思ったのですが、それもダメでした。(有償です)

それで、これも折衷案ですが、マクロを分離してアドイン型にすることですね。
アドイン型なら、他のアドインも動かしている人はほとんどですから、 Excel2003は、「高」でも通ります。「最高」は通りません。それも嫌だという人は、アドインも使わないのだから、もともと、マクロなども使わない人です。それは無視してよいと思います。

一応、ローカルのApplication Data の場所が必要です。

C:\Documents and Settings\[ユーザー]\Application Data\Microsoft\AddIns\

時々、Program Files 側に、アドインを入れる人がいますが、Win 2000 以上では、芳しくありません。

それをインストーラを使うことになるかと思います。今、私は、きちんとインストーラについて研究してはいないので、詳しくはお答えできません。

最後に、マクロ-セキュリティ-信頼できる発行元

 □組み込み済みのアドインとテンプレートをすべて信頼する

にはチェックが入っていないといけません。

こんにちは。

以前、以下でも書いたのですが、VBAを書く者にとっては大問題です。証明書を取れないアマチュアは、ボイコットということですからね。

以下など、いつも、この件に関しては、あれこれと書いております。
エクセルマクロのデジタル認証について
http://oshiete1.goo.ne.jp/kotaeru.php3?qid=1770814

根本的には、個々のユーザーの誤解と、その元凶には「MSにモノを言うユーザー」によるものらしいということが分かりました。要するに、素人VBAプログラマーの作るものなどは信頼が置けない...続きを読む

QRange("K" & TR).Formula = で、セルにマクロで式を書きたいのですが

よろしくお願いします。いつもgooの皆さんには大変お世話になっています
エクセルは2013です

わけあって、セルにマクロで式を書いています
例えば TRは行を表す変数ですが
Range("K" & TR).Formula = "=IFERROR(AY" & TR & ","""")" と書いたマクロの結果は
=IFERROR(AY43,"") という式がRange("K" & TR) に書かれます

それでは、いま、マクロで下記のように書いているコード(TRは行を表す変数です)
Range("Z" & i) = Range("Z" & i - 1) - Range("AG" & TR) * 10000 は
Range("Z" & i).Formula = 
で書く場合、=の右側をどう書いたら良いでしょうか

色々とやってみたのですが狙った式になりません

この場合 変数 i を使っているので、もしかしたら、そもそも無理なことでしょうか

うまく説明できていませんがよろしくお願いします

Aベストアンサー

No.1です。申し訳ありません大ボケな回答をしていましました。

要するに↓ってことですよね? また勘違いしていたらスミマセン。

Range("Z" & i).Formula = "=Z" & i - 1 & "-AG" & TR & " * 10000"

QEXCEL2003のマクロセキュリティ設定の方法

ニフティの常時安全セキュリティ24をアップデートしたところ、
『マイクロソフトオフィス製品Excel2003のマクロセキュリティが低になっています。対策を有効にしてください』と出るのですが、どのようにすれば、マクロセキュリティを変更できるのでしょうか?
また、これは高にすればよいのか中にすればよいのかどちらでしょうか?
御教示願います。

Aベストアンサー

まず、EXCELを開きます。

次にメニューバーのツール→マクロ→セキュリティーの順番に選択
します。

セキュリティウィンドウが表示されましたら、セキュリティレベルタブ
をクリックします。

全くマクロを使用しない場合は「高」に、使用する場合は「中」に
します。

もし、どちらか不明の場合は「高」にしておき、今後必要に応じて
変更されるのが良いかと思います。

QVBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗

マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。

マクロの内容は、任意の範囲をコピー、新規book追加し、
新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。

いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。
下記にマクロ内容全部記載します。
よろしくお願いします。

*********************************************************
*********************************************************
Sub 日報別ファイルに保存したい1()
Worksheets("日報").Range("A3:AF36").Copy
With Workbooks.Add
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Cells.Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

ApplicationDisplayAlerts = True '同名FILEが存在する場合'
ActiveWorkbook.SaveAs Filename:= _
"c:\日報\" & ActiveSheet.Range("J2") & "年" & ActiveSheet.Range("l2") & "月" & ActiveSheet.Range("n2") & "日_日報.xls" _
, FileFormat:=xlNormal
.Close file


End With

End Sub

マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。

マクロの内容は、任意の範囲をコピー、新規book追加し、
新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。

いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。
下記にマクロ内容全部記載します。
よろしくお願いします。

***********...続きを読む

Aベストアンサー

こんにちは。

>結果、「ThisWorkbook」上の下記のマクロを削除すると、正常に動きだしました。
それは、Copy 範囲が、消えてしまうことで、PasteSpecial が利かなくなってしまうからです。

まず、シート名の長いコードは、これだけでよいはずです。

Private Sub Workbook_Activate()
 Select Case StrConv(Trim(ActiveSheet.Name), vbNarrow)
 Case "1" To "30", "日報"
  Application.Calculation = xlCalculationManual
 End Select
End Sub


-------------------------------------------
''もし、そのままでダメでしたら、 ' Application.EnableEvents = False 'イベントの介入を阻止する のところのコメント・ブロック('コードの手前のアポストロフィ)を外して、再度試してみてください。

Sub 日報別ファイルに保存したい2()
Dim myRng As Range
Set myRng = Worksheets("日報").Range("A3:AF36")
 ' Application.EnableEvents = False 'イベントの介入を阻止する

With Workbooks.Add
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  myRng.Copy
 .ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats, _
             Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 
  Application.CutCopyMode = False
 
 ApplicationDisplayAlerts = True '**これは、そのままでは必要ないはずです。'
 
 ActiveWorkbook.SaveAs Filename:="c:\日報\" & ActiveSheet.Range("J2") & "年" & _
                 ActiveSheet.Range("l2") & "月" & _
                 ActiveSheet.Range("n2") & "日_日報.xls", _
                 FileFormat:=xlNormal
 .Close file
End With
Set myRng = Nothing
'Application.EnableEvents = True 'イベントマクロの活動を戻す

End Sub

こんにちは。

>結果、「ThisWorkbook」上の下記のマクロを削除すると、正常に動きだしました。
それは、Copy 範囲が、消えてしまうことで、PasteSpecial が利かなくなってしまうからです。

まず、シート名の長いコードは、これだけでよいはずです。

Private Sub Workbook_Activate()
 Select Case StrConv(Trim(ActiveSheet.Name), vbNarrow)
 Case "1" To "30", "日報"
  Application.Calculation = xlCalculationManual
 End Select
End Sub


-----------------------------------------...続きを読む

Q【Excel】 2007のマクロセキュリティ設定場所

こんにちは

Excel2007でマクロのセキュリティレベルを変更したいのですが、
どこで設定するのでしょうか。

よろしくお願いします。

Aベストアンサー

[Officeボタン][Excelのオプション][セキュリティセンター][セキュリティセンターの設定]とクリックしていくと、
マクロの設定が表示されます。

QExcelマクロでRange("A1:A5,C1:C5")をCellsで書きたいのですが

マクロ初心者です。
Excelマクロでグラフを作成するときに、元データを指定する所で、
Source:=Range("A1:A5,C1:C5")とするような場合、
「A1」とかアルファベットでの番地指定ではなく、
Cellsを用いて書きたいのです。

Source:=Range("A1:A5")であれば、
Source:=Range(Cells(1, 1), Cells(5, 1))と書けばいいことは分かるのですが、範囲指定を複数にする場合が分からないのです。

よろしくお願いします。

Aベストアンサー

Unionを使用したらできると思います。

Source:=Union(Range(Cells(1, 1), Cells(5, 1)), Range(Cells(1, 3), Cells(5, 3)))

今Excelがインストールされてないパソコンで作業していないので確認はしていないのですが・・・。

よかったら参考にして下さい

Qマイクロソフトオフィス 2003/エクセル 起動時に セキュリティ警告(マクロ) マクロが見つからない。

こんにちは、
環境:
WindowsXP Pro SP1
Office2003

状況
あるExcelファイルを起動すると、セキュリティ警告「”**”はマクロを含んでいます。」というメッセージが出ます。
特にマクロを使っているファイルではありませんが、以前あったExcelファイルをコピーしたファイルなので、以前にあったマクロが残っているのかと予想しました。
ところが、「ツール」-「マクロ」-「マクロ」でマクロのダイアログボックスを見てもマクロが存在しません。

質問
この場合、どのように原因を突き止めて解決すればいいのでしょうか?
何かお分かりの方がいましたら教えてください。よろしくお願いします。

Aベストアンサー

ALTキーを押しつつ、F11キーを押すと、VBEの画面になります。通常左のフレーム部分にVBAProjectの部分があり、標準モジュールの下にあるモジュール名の各々で右クリックして「モジュールXXの解放」をクリックし、確認の「いいえ」をクリックします。
モジュールの「解放」をしないと、プログラムコードを抹消しただけではマクロが存在する扱いになります。
シートモジュールがある場合は、VBAProjectの下の各シート名を
ダブルクリックして、右側にコードが現れたら、そのコードを抹消してください。
http://hp.vector.co.jp/authors/VA016119/hajimete/event1.html
の画面例や最後の方も参考に見てください。

Qエクセルのマクロ(range)について

マクロの作りと理解の方法について教えてください。

今、日報を作り直しています。
以前作成した方は、このように作っていました。


Worksheets("日報").Select
Range("Q7:Q23").Value = Range("U7:U23").Value
Range("S7:S59").Value = Range("V7:V59").Value
Range("A1").Select
MsgBox " 転写を終了しました。"
End Sub


マクロでは複数の行列を指定していますが、1行だけ表すと、
具体的な表とデータの変化の仕方とするとこのようになっています。

M    O    Q     S       U     V
個数 金額  累計個数 金額金額 (=M+Q) (=O+S)
0、   0、   100、   1000、    100、   1000 
1,初期状態

10、  100、  100、   1000、    110、   1100
2,個数を入力すると、計算式を入力してあるUとVの数が変わる

10、  100、   110、   1100、    120、   1200
3,マクロを実行すると、UとVの数がQとSに入力され、計算式を入力してあるUとVの数がさらに変わる。

0、   0、    110、   1100、   110、    1100
4,MとOの数をゼロ(クリア)にすると、計算式を入力してあるUとVの数が変わる。     


なかなか理解できないのは、Range("Q7:Q23").Value = Range("U7:U23").Valueの部分で、
2,の後にマクロを実行すると、U 110、V 1100がQ 100とS 1000に書き込まれることです。
通常の計算式だと=は対象となったセルをそのまま表示していると思うのですがのですが、
マクロに書いてある式だと3,のところでUとVの数をQとSに書き込んであります。
なぜ=なのにマクロでは一方のセルに数を書き込んでいるのでしょうか。
また、QやSをUやVへ書き込んでいないのでしょうか。

どなたか詳しく教えていただけると幸いです。

マクロの作りと理解の方法について教えてください。

今、日報を作り直しています。
以前作成した方は、このように作っていました。


Worksheets("日報").Select
Range("Q7:Q23").Value = Range("U7:U23").Value
Range("S7:S59").Value = Range("V7:V59").Value
Range("A1").Select
MsgBox " 転写を終了しました。"
End Sub


マクロでは複数の行列を指定していますが、1行だけ表すと、
具体的な表とデータの変化の仕方とするとこのようになっています。

M    O    Q     S...続きを読む

Aベストアンサー

プログラミング言語では、一般的に、
「=」は、右辺から左辺への「代入」
を意味します。

マクロ = Visual Basic = プログラミング言語
なので、Excelにおける「=」とは少し意味合いが違っています。

Qexcelのマクロ選択用マクロ

お世話になります。
excelで分からない事があるので答えていただけたら幸いです。
質問の内容ですが、
同じシート内に、A,B,C,D,Eのマクロがあります。
これらのマクロを,プルダウンから選んで実行する為のマクロを作りたいのですが、可能でしょうか?
よろしくお願い致します。

Aベストアンサー

こんばんは。

ComboBox (名前はComboBox1)を設けて、以下の、EntryCombo(Auto_Openなどに設置) のように登録しておけば、動きます。ただし、こんなマクロは、ナンセンスだというのは言うまでもありません。マクロというものは、一定の時間を使い作業するものですから、ComboBox 等のドロップダウンのように速い動きには相応しくありません。マクロは基本的には不可逆ですから、確実な作業の意図を持って作動させるという意味を持たせなくてはなりません。したがって、マクロを設置するのは、コマンドボタンが最適です。

A,B,CC,D,E のそれぞれのマクロは、標準モジュールにおいてあります。

Private Sub ComboBox1_Change()
 Application.Run ComboBox1.Value
End Sub
Sub EntryCombo()
'Cという名称のマクロは、使えませんから、CCにします。
For Each v In Array("A", "B", "CC", "D", "E")
 ComboBox1.AddItem v
Next v
End Sub

たぶん、「いじらず」という言葉から、#2様のアドバイスが理解できていないような気がします。「いじる」とか「いじらない」という範疇にはないように思います。

>でも出来る事ならツールバーはいじらずにおきたいので、他に方法は無いでしょうか??

#2様の考え方は、私も経験的にベストです。ツールバーは、ツールバーの中で処理できます。一種のコンテナの役目をしますから、別のPCに移しやすいし、ブックが変わっても使えます。
簡単にユーザー設定のツールバーは出来ます。必要なければ、ツールバーをオフにすると、そのツールバーだけ出てきません。何度もマクロを失ったりした失敗から、やっと今のスタイルに落ち着きました。(Excel 2007 では、残念ながら、別の格好になってしまいます。)

#1様のアドバイスは、入力規則から実行する方法で、私には、すぐに意味が分かります。しかし、その意味がご理解出来ていないようです。元々無理な相談をあえて実行する方法ですから、そうしたイレギュラーな方法は、かなり難しいのではないでしょうか。

こんばんは。

ComboBox (名前はComboBox1)を設けて、以下の、EntryCombo(Auto_Openなどに設置) のように登録しておけば、動きます。ただし、こんなマクロは、ナンセンスだというのは言うまでもありません。マクロというものは、一定の時間を使い作業するものですから、ComboBox 等のドロップダウンのように速い動きには相応しくありません。マクロは基本的には不可逆ですから、確実な作業の意図を持って作動させるという意味を持たせなくてはなりません。したがって、マクロを設置するのは、コマンドボタンが...続きを読む


人気Q&Aランキング

おすすめ情報