Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11086 / 13646 ツリー ←次へ | 前へ→

【18160】グラフをユーザーフォームに表示 teku 04/9/16(木) 20:27 質問[未読]
【18161】Re:グラフをユーザーフォームに表示 IROC 04/9/16(木) 20:35 回答[未読]
【18164】Re:グラフをユーザーフォームに表示 teku 04/9/16(木) 21:02 お礼[未読]
【18198】(続)グラフをユーザーフォームに表示 teku 04/9/17(金) 21:11 質問[未読]
【18209】Re:(続)グラフをユーザーフォームに表示 Kein 04/9/18(土) 0:58 回答[未読]
【18212】Re:(続)グラフをユーザーフォームに表示 teku 04/9/18(土) 9:56 お礼[未読]
【18162】Re:グラフをユーザーフォームに表示 Kein 04/9/16(木) 20:51 発言[未読]
【18163】Re:グラフをユーザーフォームに表示 Kein 04/9/16(木) 20:54 発言[未読]

【18160】グラフをユーザーフォームに表示
質問  teku  - 04/9/16(木) 20:27 -

引用なし
パスワード
   グラフをユーザーフォーム上に表示する方法はないでしょうか?
朝からずっと勉強していますが、どうにもわかりません。
どなたか教えてください。宜しくお願いします。

【18161】Re:グラフをユーザーフォームに表示
回答  IROC  - 04/9/16(木) 20:35 -

引用なし
パスワード
   そのようなときは、ひとまずネットを検索してみるのがよいかと思います。

http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9d92.html

【18162】Re:グラフをユーザーフォームに表示
発言  Kein  - 04/9/16(木) 20:51 -

引用なし
パスワード
   ↓ここを参考にされたらどうでしょーか ?
word=%83O%83%89%83t%81@DialogSheet&andor=and&logs=23.txt" target="_blank">http://excelfactory.cool.ne.jp/ExcelQA/cfs.cgi?word=%83O%83%89%83t%81@DialogSheet&andor=and&logs=23.txt

【18163】Re:グラフをユーザーフォームに表示
発言  Kein  - 04/9/16(木) 20:54 -

引用なし
パスワード
   うまくリンクが出来ないので・・
http://excelfactory.cool.ne.jp/ExcelQA/cfs.cgi
↑の検索画面で、キーワードに "グラフ DialogSheet" と入れて「過去ログ23」に
チェックしてボタンを押してみて下さい。

【18164】Re:グラフをユーザーフォームに表示
お礼  teku  - 04/9/16(木) 21:02 -

引用なし
パスワード
   みなさんありがとうございます。
ご質問する前にネット検索もしてはみたのですが、
検索に仕方が悪かったのか、見方が悪かったのか。
早速教えていただきましたページを勉強してみます。
お手数をお掛けいたしました。

【18198】(続)グラフをユーザーフォームに表示
質問  teku  - 04/9/17(金) 21:11 -

引用なし
パスワード
   昨日はありがとうございました。

あれからご紹介いただきましたページを勉強しまして
一応問題は解決しました。
ネットでもう一度私も検索もしてみたのでしたが、
該当するものは、結局ご紹介頂いたページにしか
たどりつきませんでした。

さて、それで一応の解決をみたと思ったのですが、
またひとつ問題が発生してしまいました。

状況は、ダイアログシート(Dialogsheets(1))にある
ダイアログフレームにボタン(ボタン1)を置いて
userform1にはcommandbutton1を置いています。

<標準モジュール>
Sub ボタン1_Click()
  DialogSheets(1).Visible = False
  UserForm1.Show
End Sub

<userform1>
Private Sub commandbutton1_click()
  If DialogSheets(1).Visible = True Then
    Unload Me
    DialogSheets(1).Show
  Else
    DialogSheets(1).Visible = True
    Unload Me
  End If
End Sub

これでuserformとDialogSheetとのやりとりはうまくいきます。
このやりとりで見えているのはダイアログシートではなく
ダイアログフレームというのでしょうか?よくわかりません。

この時userform1に別に置いたcommandbuttn2からworksheet1に
行きますと、Dialogsheetがアクティブな状態になって、背面に
worksheet1が見ています。
この状況の解決方法をどなたかご教示いただけないでしょうか。
宜しくお願い致します。

【18209】Re:(続)グラフをユーザーフォームに表示
回答  Kein  - 04/9/18(土) 0:58 -

引用なし
パスワード
   >DialogSheets(1).Visible
これは、出さなくても良い DialogSheet (つまりデザインモードのためのシート)
を開く・閉じる。という処理になります。デザインが完了した DialogSheet は
そのデザインを変更するときだけ、表示させれば良いのです。
で、ユーザーインターフェイスとなる DialogFrame を出したり引っ込めたりするには

DialogSheets(1).Show

又は

DialogSheets(1).Hide

で行います。このへんは実にややこしいのですが、そういう仕様になっているので
覚えておいてください。なおキャンセルボタンを押したときの判定は

x = DialogSheets(1).Show
If x = False Then

という判定式を使います。これは上のように 2行に続けて書きます。
つまり Show の後、配置した何かのコントロールを操作したとしても、それは
If x = False Then
の判定式以降に、記述するコードで処理を行います。それはユーザーフォームで言うと
例えば Private Sub ComboBox1_Change() の内容だったりします。
逆に Show 以前に書くコードは、UserForm_Intialize の内容と同じになります。
ちょっと私が使っているコードを、サンプルとしてここへUPしてみようと思った
のですが、あまりに長いので一部を抜粋します。DialogSheetの処理を記述した
ところだけです。処理内容は全く個人的なもので、一つずつのコードの意味は
分からないと思いますが、DialogSheetの使い方の見本として、何となく理解されたら
幸いです。

With DialogSheets(1)
  .CheckBoxes(1).Value = xlOff
  .Buttons(1).DefaultButton = True
  .Buttons(3).OnAction = "GetTBName"
  .Buttons(3).Caption = "GET_TABLE"
  .Buttons(4).OnAction = ""
  .Buttons(4).Caption = "GET_FIELD"
  .ListBoxes(1).RemoveAllItems
  .ListBoxes(2).RemoveAllItems
  .ListBoxes(2).MultiSelect = xlSimple
  .DropDowns(1).RemoveAllItems
  .EditBoxes(1).Text = ""
  Set MyGetDB = DBEngine.Workspaces(0).OpenDatabase(myMdbFile)
  For Each Tb In MyGetDB.TableDefs
   If Left(Tb.Name, 2) <> "MS" Then
     .ListBoxes(1).AddItem Tb.Name
   Else
     If Right(Tb.Name, 1) = "ト" Then
      .ListBoxes(1).AddItem Tb.Name
     End If
   End If
  Next
  MyD = DateSerial(Year(Date), Month(Date), 1)
  i = -1
  Do
   LD = DateAdd("m", i, MyD)
   .DropDowns(1).AddItem Format(LD, "yyyy/mm/dd")
   i = i - 1
  Loop Until Year(LD) = 1998 And Month(LD) = 7
  ReDim FiAry(0): FiAry(0) = "z": i = 0
RLine:
  If .Show = False Then GoTo EndLine
  Didx = .DropDowns(1).ListIndex
  If MyTBName = "" Or Didx < 1 Then
   MsgBox "設定必須の項目が未設定のままです", 48
   GoTo RLine
  End If
  Application.ScreenUpdating = False
  StartD = .DropDowns(1).List(Didx)
  If .CheckBoxes(1).Value = xlOff Then
   mySql = "SELECT * FROM " & MyTBName & _
   " WHERE 日付 >= #" & StartD & "#;"
  ElseIf .CheckBoxes(1).Value = xlOn Then
   If UBound(FiAry) > 0 Then
     For j = 1 To UBound(FiAry)
      FN = FN & ", [" & FiAry(j) & "]"
     Next j
     mySql = "SELECT [日付]" & FN & " FROM " & MyTBName & _
     " WHERE 日付 >= #" & StartD & "#;"
   Else
     Exit Sub
   End If
  End If
End With

【18212】Re:(続)グラフをユーザーフォームに表示
お礼  teku  - 04/9/18(土) 9:56 -

引用なし
パスワード
   ▼Kein さん:

ありがとうございました。
早速やってみました。そしてできました。

昨日ずいぶん、あれやこれやとやってようやく昨日ご説明したものに
なったのですが、なんか意外というか、あれだけやったのにと
思いながら、ありがたく勉強させていただきました。

またサンプルも拝見致しました。貴重な資料をありがとうございます。
残念ながら、今の私には、やはり何となくしかわかりませんでした。
これからもっと勉強させていただきます。

深夜までおつきあいいただきましてありがとうございました。

11086 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free