Excel VBA質問箱 IV

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

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


293 / 3841 ページ ←次へ | 前へ→

【76571】Re:コマンドボタン
質問  こずえ  - 15/1/8(木) 11:26 -

引用なし
パスワード
   独覚さん 有難うございます。

>クリック時イベントをシートモジュールに必ず作成しなければならないですが、
>クリック時イベントで標準モジュールに作成したマクロを呼び出すようにすると
>処理マクロ本体は標準モジュールに作成できます。
独覚さんが仰ってる事は、なるべくシートモジュールに書いた方が良いと言う事ですね?
私は今まで、Sheet上にフォームボタンを設置。
モジュールは標準に書いてました。
標準モジュールとシートモジュールは、どう違うのですか?
Web検索して読んでも分かりませんでした。
・ツリー全体表示

【76570】Re:コマンドボタン
発言  独覚  - 15/1/8(木) 10:48 -

引用なし
パスワード
   ▼こずえ さん:
何をしたいのかが分からないので的外れかもしれませんが…

クリック時イベントをシートモジュールに必ず作成しなければならないですが、クリック時イベントで
標準モジュールに作成したマクロを呼び出すようにすると処理マクロ本体は標準モジュールに
作成できます。
・ツリー全体表示

【76569】Re:平均また回帰分析の範囲の指定方法に...
回答  ウッシ  - 15/1/8(木) 10:22 -

引用なし
パスワード
   こんにちは

セル範囲を取得してセットします。

Sub test()
  Dim bArea As Range
  Dim cArea As Range
  Dim eArea As Range
  
  With ActiveSheet
    Set bArea = .Range("B1", .Range("B" & .Rows.Count).End(xlUp))
    Set cArea = bArea.Offset(, 1)
    Set eArea = .Range("E10")
  End With
  Application.Run "ATPVBAEN.XLAM!Regress", cArea, _
      bArea, False, True, , eArea _
      , False, False, False, False, , False

End Sub
・ツリー全体表示

【76568】コマンドボタン
質問  こずえ  - 15/1/8(木) 10:12 -

引用なし
パスワード
   お世話になっています

フォームボタンは、標準モジュールで設定する事が出来ますが
コマンドボタンは、Sheetモジュールでしか設定できないのですか?

教えてください
宜しくお願いいたします。
・ツリー全体表示

【76567】Re:平均また回帰分析の範囲の指定方法に...
質問    - 15/1/7(水) 22:12 -

引用なし
パスワード
   ただ回帰分析については
似たようにマクロを組んでもエラーとなりうまくいかず未だに困っています。

以下のような状況でB、Cそれぞれの最終列までの範囲選択を行おうと思っています。
Application.Run "ATPVBAEN.XLAM!Regress", ActiveSheet.Range("$C$1:$C$57"), _
    ActiveSheet.Range("$B$1:$B$57"), False, True, , ActiveSheet.Range("$E$10") _
    , False, False, False, False, , False

引き続きご指導いただけると大変助かります。
・ツリー全体表示

【76566】Re:平均また回帰分析の範囲の指定方法に...
お礼    - 15/1/7(水) 22:10 -

引用なし
パスワード
   ウッシさん
ご指摘いただいたのようにマクロを組んだらうまくいきました!ありがとうございます。
End(x|up)やRows.Countの知識自体はあったのですがどのように組み込んでいいか
解らなかったので勉強になります。
・ツリー全体表示

【76565】Re:平均また回帰分析の範囲の指定方法に...
回答  ウッシ  - 15/1/7(水) 16:19 -

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

こんにちは

  Range("E3").Formula = "=AVERAGE(C2:" & Range("C" & Rows.Count).End(xlUp).Address(0, 0, xlA1, False) & ")"

こういう事でしょうか?
・ツリー全体表示

【76564】平均また回帰分析の範囲の指定方法につい...
質問    - 15/1/6(火) 18:05 -

引用なし
パスワード
   貼り付けたデータについてVBAで平均を算出したいのですが、その範囲選択について
悩んでいます。

Range("E3").Select
 ActiveCell.Formula = "=AVERAGE(C2:C61)"

現在、上記のような状態で、このC61の部分をCの数字が入っている最終列または Aの最終列と同じ行までという選択したいのですがどうすればよいでしょうか?

また同様に回帰分析でも以下のような状況でB、Cそれぞれの最終列までの範囲選択をしたくて悩んでいます。
Application.Run "ATPVBAEN.XLAM!Regress", ActiveSheet.Range("$C$1:$C$57"), _
    ActiveSheet.Range("$B$1:$B$57"), False, True, , ActiveSheet.Range("$E$10") _
    , False, False, False, False, , False

ご指導よろしくお願いします。
・ツリー全体表示

【76563】Re:他のファイルのUserFormを呼び出したい
お礼    - 15/1/6(火) 9:39 -

引用なし
パスワード
   独覚様、β様、ichinose様
色々のアドバイス有難うございました。
上手くUserFormを表示することが出来ました。
AllpicationRunのスペルでRunの前に「.」を入れ忘れてしまいました。
初心者ですのでまた何かありましたらアドバイスをお願い致します。
・ツリー全体表示

【76562】Re:他のファイルのUserFormを呼び出したい
発言  独覚  - 15/1/6(火) 9:10 -

引用なし
パスワード
   ▼信 さん:
>訪問調査表ファイルに
>Sub Open_Form()
>訪問者リスト.Show’Userform
>訪問者リスト.Top = Top - 1
>End Sub
>を記述し、datafile
>Private Sub Workbook_Activate(ByVal Sh As Object)
>On Error Resume Next
>ApplicationRun "訪問調査表.xlsm!Open_Form"
>On Error GoTo 0
>End Sub

datafileのどこに記述しましたか?

Workbook_ActivateイベントはThisWorkbookモジュールに記述します。
(その際には「ByVal Sh As Object」は消してください)
・ツリー全体表示

【76561】Re:他のファイルのUserFormを呼び出したい
発言  ichinose@タイプミスが増える  - 15/1/6(火) 7:07 -

引用なし
パスワード
   ちょっと気になったので・・・。

>ご指摘のように記述しましたがUserFormが表示されません
これは、何回かの質疑応答で解決するのでしょうが・・・。


>を記述し、datafile
気になったのは、↑
datafile--データファイルと記述されていることです。
これが、最初からブックをVBAコードのブック(プログラムブック)とデータブックに
分けた仕様になっているとすると、データブックにVBAコードを記述する
という仕様でよいのか?  ということです。

ブックをVBAコードとデータを分けるという事を徹底するなら、
プログラムブック側にApplicationレベルのイベントを用意するという
仕様も考えられます。
シートをユーザーに触らせる仕様だとオブジェクト変数の値の保持の問題もあるので
工夫も必要な場合もありますけど・・・。


ちょっと気になりました。
・ツリー全体表示

【76560】Re:他のファイルのUserFormを呼び出したい
発言  β  - 15/1/5(月) 20:59 -

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

横から失礼します。

>Private Sub Workbook_Activate(ByVal Sh As Object)
>On Error Resume Next
>ApplicationRun "訪問調査表.xlsm!Open_Form"
>On Error GoTo 0
>End Sub

これは、どのブックに記述しましたか?
訪問調査表.xlsm ではない、Bブックに記載するんですが?

それと

On Error Resume Next

On Error GoTo 0

を、いったん消してみませんか?

なにがしかのエラーがあれば、メッセージが出るので原因追及が楽になりますので。
・ツリー全体表示

【76559】Re:他のファイルのUserFormを呼び出したい
質問    - 15/1/5(月) 19:35 -

引用なし
パスワード
   独覚さま
ご指摘のように記述しましたがUserFormが表示されません
訪問調査表ファイルに
Sub Open_Form()
訪問者リスト.Show’Userform
訪問者リスト.Top = Top - 1
End Sub
を記述し、datafile
Private Sub Workbook_Activate(ByVal Sh As Object)
On Error Resume Next
ApplicationRun "訪問調査表.xlsm!Open_Form"
On Error GoTo 0
End Sub
と記述しましたがUserFormは表示されませんでしたが間違いがあるのでしょうか
・ツリー全体表示

【76558】Re:他のファイルのUserFormを呼び出したい
回答  独覚  - 15/1/5(月) 16:54 -

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

まず、Aブックの標準モジュールにユーザーフォームを開くマクロを記述しておきます。
(例としてOpen_Form)

そうしたらBブックのWorkbook_Activateに
Private Sub Workbook_Activate()
  On Error Resume Next
  Application.Run "A.xlsm!Open_Form"
  On Error GoTo 0
  
End Sub
としてはどうでしょうか?
・ツリー全体表示

【76557】Re:ユーザフォーム(モーダル)で「数式バ...
お礼  nossa  - 15/1/5(月) 16:03 -

引用なし
パスワード
   ▼独覚 さん: 皆様


>Type:=0
>としてみてはどうでしょうか?
 
 これで、無事解決しました。
 思った通りの動作になりました。

 独覚さん&皆様 ありがとうごさいました。
・ツリー全体表示

【76556】他のファイルのUserFormを呼び出したい
質問    - 15/1/5(月) 15:51 -

引用なし
パスワード
   2つのファイル、AファイルとBファイルがあり、AファイルにUserFormを作成し、Aファイル、Bファイルを共に開いた状態でBファイルをActiveにした時にAファイルに作成したUserFormをBファイル上に表示させたいのですが可能でしょうか。
・ツリー全体表示

【76555】Re:ユーザフォーム(モーダル)で「数式バ...
発言  独覚  - 15/1/5(月) 15:09 -

引用なし
パスワード
   ▼nossa さん:
下記はヘルプでの記述です。

>次の表は、引数 Type に指定できる値をまとめたものです。
>次の値のいずれか 1 つまたは合計値を指定できます。
>たとえば、文字列または数値が入力できるダイアログ ボックスを作成するときは、引数 Type の値を 1 + 2 に設定します。

>値 意味
> 0 数式
> 1 数値
> 2 文字列 (テキスト)
> 4 論理値 (True または False)
> 8 セル参照 (Range オブジェクト)
>16 #N/A などのエラー値
>64 数値配列
Type:=11
であれば1+2+8となって計算結果が返されているのだと思います。
Type:=0
としてみてはどうでしょうか?

ただ、ヘルプでは
>InputBox の引数 Type に 0 を指定すると、"=2*PI()/360" のような数式が、文字列として返されます。
>数式内に参照があれば、それらの参照は A1 形式の参照として返されます。
>参照形式を変換するには、ConvertFormula メソッドを使います。
とセル参照がA1形式で返されるとありましたが自分で試してみたところではR1C1形式になりました。
・ツリー全体表示

【76554】Re:ユーザフォーム(モーダル)で「数式バ...
質問  nossa  - 15/1/5(月) 14:42 -

引用なし
パスワード
   γ さん、kanabunさん

>▼nossa さん:
>> ●数式入力の際に「数式バーと同じように入力できる」ようにしたいです。
>補完機能とか、引数のTips表示なども念頭に、
>これと同じものとおっしゃっているなら、それは無理です。
>数式バーと同機能のコントロールは無いと思うし、
>これを自作するのは不可能だと思います。

ご回答ありがとうございます。
●補完機能等はなくてもよく、
 「セルを選択しながら、数式を入力する("+"や”×”を入力)」を
  行いたいと考えています。
  
●「条件付き書式設定」や「入力規則設定」での
 「式を入力するUI」のようなモノをイメージしています。

●InputBoxを試しました。
  Dim str As Variant
  str = Application.InputBox("数式を入力",Type:=11)
  Debug.Print str
   ↓
●希望の動作とはなりませんでした(使い方が悪いのでしょうか?)
  ■希望する動作:srtに計算式が格納される(たとえば、"=A1*10")
  ■実際の動作 :srtに計算結果が格納される(たとえば、10)

●「str で計算式を受取る」ことはできるでしょうか?


ご教示のほどよろしくお願いします。
・ツリー全体表示

【76553】Re:ユーザフォーム(モーダル)で「数式バ...
発言  独覚  - 15/1/5(月) 13:17 -

引用なし
パスワード
   ▼nossa さん:
ユーザーフォームとは別だけれども。
(後にどうつなげるかという問題もあるけれども)

Application.Dialogs(xlDialogFunctionWizard).Show

で「関数の挿入」ダイアログを表示させるというのは使えないだろうか?
・ツリー全体表示

【76552】Re:ユーザフォーム(モーダル)で「数式バ...
発言  γ  - 15/1/5(月) 12:21 -

引用なし
パスワード
   ▼nossa さん:
> ●数式入力の際に「数式バーと同じように入力できる」ようにしたいです。
補完機能とか、引数のTips表示なども念頭に、
これと同じものとおっしゃっているなら、それは無理です。
数式バーと同機能のコントロールは無いと思うし、
これを自作するのは不可能だと思います。
・ツリー全体表示

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