EXCELで、シート見出しの上で右クリックすると、挿入や削除のショートカットメニューが出てきますよね。
そこで、挿入を選択すると標準で、『ワークシート』『グラフ』『EXCEL4.0マクロ』『MS EXCEL5.0ダイアログ』というのが出てきます。
『ワークシート』はワークシートですよね。『グラフ』も、グラフシートと言うことで、すぐにグラフを作成する画面に移行します。
しかし、『EXCEL4.0マクロ』『MS EXCEL5.0ダイアログ』に関してはいまいち使用用途が分かりません。
エクセル上で、マクロを作成したり、そのマクロを登録するコントロールを作成するもの、って言うカンジで受け取ればいいのでしょうか?
でも、結局マクロとかは記録作業を行わなければ意味ないですよね?

ご存知の方がいらっしゃったら、ぜひ教えてください。

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

A 回答 (1件)

EXCEL97から、マクロ機能にVisual Basic for Application(VBA)が統合され、VBAマクロ自体が、Visual Basic 5.0 と同じエンジンで動く、高級なアプリケーションとして付加されました。

そんな中で、ダイアログボックスも、ダイアログシートで作っていたものが、VBAプロジェクトで作ることができるようになったため、ダイアログボックスを作る方法が2通りあり、どちらで作ったらいいものか迷ってしまいます。私の見解としては、旧バージョンとの互換性を保つために残された機能であり、今後廃止される公算が大きいのではないかと考えています。ただ、EXCEL4.0マクロは、今でも呼び出して使った方が便利な処理があるようです。ダイアログシートについては、ポインタの形状が変わることや、プロパティウインドウで設定できることなど、機能的に多少異なりますが、コーディング自体には、なんら特殊な部分はありません。
> エクセル上で、マクロを作成したり、そのマクロを登録するコントロールを作成するもの、って言うカンジで受け取ればいいのでしょうか?
「VBAの機能を自動記録以外使わない」という意味であれば、おおむねeub55さんの考えで良いのではないでしょうか。
> 結局マクロとかは記録作業を行わなければ意味ないですよね?
イベントプロシージャを意識することなくマクロを組むことができますが、ある程度VBAを扱うことができる人であれば、サブルーチンにとばす処理をするでしょうから、ご指摘のように意味ないかもしれませんね。
ちなみに、私はダイアログシートを使っていません。
    • good
    • 0
この回答へのお礼

解答ありがとうございました!
なんとなく、ではありますが自分の中で整理がついた感じです。
これからVBAの勉強を始めてみようかなと思っているところなので
きっと始めてみたらもっとTTakさんの言うことがよく分かるようになるのかな
なんて思いました。

お礼日時:2001/04/23 01:13

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QExcel2000マクロ_全てのシートに対して埋込グラフのタイトルをシート名にする

何方か、回答をお願いします。
下記のマクロは全てのシートに対して埋込グラフのタイトルをシート名にする物ですが
ChartObjectsメソッドは失敗しましたと出るときが有ります。
On Error GoTo が効いてErrHandlerに行くときも有るのでよく分かりません。
有識者の方々のもっと良いコードを教えて下さい。
(1つのシートに対してグラフは0~3個です。)

Sub シート名グラフ名()

Dim mysheet As Worksheet
For Each mysheet In Worksheets

On Error GoTo ErrHandler

With mysheet.ChartObjects(1).Chart
.ChartTitle.Text = mysheet.Name
End With

With mysheet.ChartObjects(2).Chart
.ChartTitle.Text = mysheet.Name
End With

With mysheet.ChartObjects(3).Chart
.ChartTitle.Text = mysheet.Name
End With
ErrHandler:
Next mysheet
End Sub

何方か、回答をお願いします。
下記のマクロは全てのシートに対して埋込グラフのタイトルをシート名にする物ですが
ChartObjectsメソッドは失敗しましたと出るときが有ります。
On Error GoTo が効いてErrHandlerに行くときも有るのでよく分かりません。
有識者の方々のもっと良いコードを教えて下さい。
(1つのシートに対してグラフは0~3個です。)

Sub シート名グラフ名()

Dim mysheet As Worksheet
For Each mysheet In Worksheets

On Error GoTo ErrHandler

With mysheet.ChartOb...続きを読む

Aベストアンサー

こんばんは。

ためしに、元のコードに付け足してみました。
不必要なものは、削除してしまってください。

Sub グラフ名前調査() 'グラフをアクティブにしておく
Dim strName As String
Dim ChartName As String
Dim myChart As Object
Dim i As Integer
Dim t As String
strName = StrConv(TypeName(Selection), vbUpperCase)
If strName = "CHARTAREA" Or _
  strName = "GRIDLINES" Or _
  strName = "PLOTAREA" Then
  ChartName = ActiveChart.Name '名前
  i = ActiveChart.Parent.Index 'インデックス
  t = ActiveChart.ChartTitle.Caption 'タイトル
 
  MsgBox "名前:" & ChartName & vbCrLf & _
     "インデックス: " & CStr(i) & vbCrLf & _
     "タイトル:" & t
End If
End Sub

こんばんは。

ためしに、元のコードに付け足してみました。
不必要なものは、削除してしまってください。

Sub グラフ名前調査() 'グラフをアクティブにしておく
Dim strName As String
Dim ChartName As String
Dim myChart As Object
Dim i As Integer
Dim t As String
strName = StrConv(TypeName(Selection), vbUpperCase)
If strName = "CHARTAREA" Or _
  strName = "GRIDLINES" Or _
  strName = "PLOTAREA" Then
  ChartName = ActiveChart.Name '名前
  i = ActiveChart.Parent.Ind...続きを読む

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

QExcel97でワークシートにワークシートを貼り付けたい

エクセル97でワークシートを作っています。
作ったシートの上に、別に作ってあったシートを貼りたいのですが、セルの幅などが全然違うためきれいに貼れません。オブジェクトとして貼ることができればいいかなと思ったのですが、オブジェクトとして貼り付ける方法もわかりません。このような場合、どうしたらいいのでしょうか?
ワードや一太郎に貼り付けて並べるということも考えたのですが、エクセルだけで完結させる方法がないかと思って質問しました。お願いします。

Aベストアンサー

カメラ機能を使えばセル幅が違っても、貼り付けられます。リンクしているので、元の表の変更も反映されます。

印刷をするときなどにレイアウトの自由が利きます。
サイズと位置を自由に変更できます。

「カメラ」ボタンのコマンドをツールバーに追加します。
メニューバーの「ツール」-「ユーザー設定」を選択。
「コマンド」タブの「ツール」を選択。この中に「カメラ」というコマンドがあります。マウスで「カメラ」をつまんで、ツールバーまでドラッグします。

貼り付けたい表の範囲を選択して、「カメラ」ボタンを押します。貼り付けたい位置で、クリックします。大きさは自由に変更できます。

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

QExcelのワークシート毎の保存や他のファイルのワークシートの挿入

ヘルプを見ましたが、よくわからないので質問させていただきます。

Excel97/2000で、複数のワークシートを作成している
1つのファイルを、ワークシートごと別ファイルに保存
をしたいのですが、Excel自体でこういうことを処理する
機能とかがあるんでしょうか。無ければ何か方法はあり
ますでしょうか。

それとはまた別に、複数のファイルのワークシートを1つ
のファイルにまとめるときにはどのようにすればよろし
いのでしょうか。
(つまり、複数ファイル・1つのシート→1つのファイル・複数のシートにするという事。)

初歩的な質問ですいませんがどうぞよろしくお願いします。

Aベストアンサー

まず、

対象となるエクセルファイル(ブック)を複数開きます。

移動させたいシートのタブを右クリックし、『移動またはコピー』を選択

『移動先ブック名』より移動させたいファイル(ブック)を選択

『挿入先』を選択する(コピーを作成する場合はチェックボックスにチェックする)

以上でいかがでしょうか。

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

QExcelのワークシート削除時のダイアログを表示させない方法

Excel(97)で、ワークシートを削除する時に「選択したシートを削除します。一度削除したシートは・・・」という、警告ダイアログが出ますよね。これを出さずに強制削除する方法はあるのでしょうか?

現在、下記のようなプロシージャを用意し、シート名が要素になっているリストボックス(.MultiSelect = fmMultiSelectMulti)中で選択された全てのシートを削除するダイアログを作成しました。
ところが、選択した数だけ、前述の警告ダイアログが表示され、非常にうっとうしいのです。
どなたか、助けてください。お願いします。

'===現在使用しているプロシージャ===
For i = 0 To ListBox.ListCount - 1
 If ListBox.Selected(i) Then
  For Each AnySheet In ActiveWorkbook.Sheets
   If AnySheet.Name = ListBox.List(i) Then AnySheet.Delete
  Next AnySheet
 End If
Next i

Excel(97)で、ワークシートを削除する時に「選択したシートを削除します。一度削除したシートは・・・」という、警告ダイアログが出ますよね。これを出さずに強制削除する方法はあるのでしょうか?

現在、下記のようなプロシージャを用意し、シート名が要素になっているリストボックス(.MultiSelect = fmMultiSelectMulti)中で選択された全てのシートを削除するダイアログを作成しました。
ところが、選択した数だけ、前述の警告ダイアログが表示され、非常にうっとうしいのです。
どなたか、助けてください...続きを読む

Aベストアンサー

こんにちは

 For~Nextを

Application.DisplayAlerts = False
Application.DisplayAlerts = True

で囲んでみたらいかがでしょうか?

参考URL:http://www2.odn.ne.jp/excel/

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Q(Excel 2003) マクロでワークシート上のラベルをコントロールしたいのですか・・・

こんにちは。


Excel 2003 で思い通りのグラフが作成できなくて、ならば自分で作ろうと無謀にも思い立ち、
マクロでラベルをワークシートに貼り付けてみました。

(とりあえずの目標)
・目的の位置に目的の大きさで貼り付ける。
・標題を消去する。(あるいは、特定の文字を設定。)
・境界線を設定する。
・背景色を設定する。
しかし、思った通りに動作してくれません。下記はそのテスト用のコードです。

Sub Test1()
With Sheets("テスト").OLEObjects.Add(ClassType:="Forms.Label.1", _
Left:=54, Top:=13.5, Width:=54, Height:=13.5)

'.Caption = "" 実行時エラー
'.BorderStyle = fmBorderStyleSingle 実行時エラー
'.BackColor = RGB(192, 192, 192) 実行時エラー
.Border.Color = vbBlack 'OK
.Interior.Color = RGB(192, 192, 192) 'NG(実行時エラーはないが効果無し)
End With
End Sub

(質問1)
プロパティウインドウでは指定可能なのに、VBAでプロパティを利用できないのは何故ですか?
Caption, BorderStyle, BackColor など
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」

(質問2)
標題を消去する(または、特定の文字を指定する)にはどうしたらよいですか?
また、背景色を設定するにはどうしたらよいですか?


初歩的なことと思いますが、よろしくお願いします。

こんにちは。


Excel 2003 で思い通りのグラフが作成できなくて、ならば自分で作ろうと無謀にも思い立ち、
マクロでラベルをワークシートに貼り付けてみました。

(とりあえずの目標)
・目的の位置に目的の大きさで貼り付ける。
・標題を消去する。(あるいは、特定の文字を設定。)
・境界線を設定する。
・背景色を設定する。
しかし、思った通りに動作してくれません。下記はそのテスト用のコードです。

Sub Test1()
With Sheets("テスト").OLEObjects.Add(ClassType:="Forms.Label.1", ...続きを読む

Aベストアンサー

こんばんは。

>(質問1)VBAでプロパティを利用できないのは何故ですか?
プロパティが、上位と下位のものが混じっているからですね。以下のようにすれば通るはずです。

Sub LabellingTest1()
 With Sheets("テスト").OLEObjects.Add(ClassType:="Forms.Label.1", _
   Left:=54, Top:=13.5, Width:=54, Height:=13.5)
   .Object.Caption = ""
   .Object.BorderStyle = fmBorderStyleSingle
   .Object.BackColor = RGB(192, 192, 192)
   .Border.Color = vbBlack
   .Interior.Color = RGB(192, 192, 192)
  End With
End Sub

今、試してみましたが、これをすると、ワークシートからプロパティの変更できなくなるようです。もちろん、オブジェクトとして、何も変りはないようですが。

>(質問2)標題を消去する

標題とは、英語で、Caption ですが、ラベルのCaption のことですか?

Sheets("テスト").OLEObjects(1).Object.Caption = ""

背景色を設定する
これは、同じことですからお分りになるかと思います。

シート上のコントロールツールが多数ある場合は、
「特定の文字を指定する」ということは、私は、For Each ~ In でループで探していくしかないのではないかと思います。

こんばんは。

>(質問1)VBAでプロパティを利用できないのは何故ですか?
プロパティが、上位と下位のものが混じっているからですね。以下のようにすれば通るはずです。

Sub LabellingTest1()
 With Sheets("テスト").OLEObjects.Add(ClassType:="Forms.Label.1", _
   Left:=54, Top:=13.5, Width:=54, Height:=13.5)
   .Object.Caption = ""
   .Object.BorderStyle = fmBorderStyleSingle
   .Object.BackColor = RGB(192, 192, 192)
   .Border.Color = vbBlack
   .Interi...続きを読む


人気Q&Aランキング

おすすめ情報