Excel VBA質問箱 IV

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

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


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

【7055】マクロに自分の作ったフォームをいれたい。 みさっぴ 03/8/21(木) 11:40 質問
【7060】Re:マクロに自分の作ったフォームをいれたい... INA 03/8/21(木) 13:52 回答
【7086】Re:マクロに自分の作ったフォームをいれたい... みさっぴ 03/8/22(金) 10:37 お礼
【7087】Re:マクロに自分の作ったフォームをいれたい... INA 03/8/22(金) 11:08 回答
【7088】Re:マクロに自分の作ったフォームをいれたい... みさっぴ 03/8/22(金) 11:24 質問
【7089】Re:マクロに自分の作ったフォームをいれたい... INA 03/8/22(金) 11:46 回答
【7549】Re:マクロに自分の作ったフォームをいれたい... みさっぴ 03/9/8(月) 16:00 質問
【7553】Re:マクロに自分の作ったフォームをいれた... INA 03/9/8(月) 16:16 回答
【7563】Re:マクロに自分の作ったフォームをいれた... みさっぴ 03/9/8(月) 16:51 質問
【7564】Re:マクロに自分の作ったフォームをいれた... INA 03/9/8(月) 17:04 回答
【7567】Re:マクロに自分の作ったフォームをいれた... みさっぴ 03/9/8(月) 17:41 お礼
【7566】Re:マクロに自分の作ったフォームをいれた... Jカーター 03/9/8(月) 17:30 回答
【7569】Re:マクロに自分の作ったフォームをいれた... みさっぴ 03/9/8(月) 17:46 お礼

【7055】マクロに自分の作ったフォームをいれたい。
質問  みさっぴ  - 03/8/21(木) 11:40 -

引用なし
パスワード
   こんにちは。
また困ってます。よ炉しくお願いします。

マクロを使って、入力した値を計算をして、表示させる、
ということをさせたいのですが、うまくいきません。

フォームは、

 座標を入力してください。
(____、___)(___、___)

 電流密度___
 
       OK

 計算結果____


という具合です。
マクロに組み込もうとして、
次のようにつくってみたのですが、
3段目のPrivate Sub 〜の前にEnd Subをいれろ!
というエラーが出てしまいます。
なにがいけないのでしょうか。
教えてください。


Sub Macro3()

  Load UserForm1
  UserForm1.Show
  

  Private Sub CommandButton1_Click()

   Dim MC As Single
   Dim A As Single
   Dim B As Single
   Dim C As Single
   Dim D As Single
   Dim E As Single
   Dim F As Single
   Dim G As Single
  
  
  A = TextBox1.Text
  B = TextBox2.Text
  C = TextBox3.Text
  D = TextBox4.Text
  G = TextBox7.Txet   '電流密度
  
  
  E = C - A  '時間
  F = D - B  '電位
  TextBox5.Text = E
  TextBox6.Text = F
  
  MC = G * E / F
  TextBox8.Text = MC
   

 End Sub
  
End Sub

【7060】Re:マクロに自分の作ったフォームをいれた...
回答  INA  - 03/8/21(木) 13:52 -

引用なし
パスワード
   基本的なコードの書き方が、間違っています。

シートから標準モジュールのマクロを実行する場合。
Sub Macro1()
  UserForm1.Show  
End Sub

シート上にコマンドボタンを配置して実行する場合は、
シートモジュールに
Private Sub CommandButton1_Click()
  Userform1.Show
End Sub

−−−−−−−−−−−−−−−−−−−−−−
あとはユーザーフォームのモジュールに、
ボタンを押したときのコードを記述して下さい。


Private Sub CommandButton1_Click()

   Dim MC As Single
   Dim A As Single
   Dim B As Single
   Dim C As Single
   Dim D As Single
   Dim E As Single
   Dim F As Single
   Dim G As Single
  
  
  A = TextBox1.Text
  B = TextBox2.Text
  C = TextBox3.Text
  D = TextBox4.Text
  G = TextBox7.Txet   '電流密度
  
  
  E = C - A  '時間
  F = D - B  '電位
  TextBox5.Text = E
  TextBox6.Text = F
  
  MC = G * E / F
  TextBox8.Text = MC
   

 End Sub

【7086】Re:マクロに自分の作ったフォームをいれた...
お礼  みさっぴ  - 03/8/22(金) 10:37 -

引用なし
パスワード
   ▼INA さん:
>基本的なコードの書き方が、間違っています。
はずかし〜。すみません、基本的なことがわかってなくて。

INAさんに教わったものを試してみました。
お蔭様でフォームは現れたのですが、
計算結果が表示されません。
コードが足らないのでしょうか。

初歩的なことで大変申し訳ないのですが、
もしよかったら教えてください。

【7087】Re:マクロに自分の作ったフォームをいれた...
回答  INA  - 03/8/22(金) 11:08 -

引用なし
パスワード
   >G = TextBox7.Txet   '電流密度
 ↓
G = TextBox7.Text です。


必要のない変数は使うと遅くなるので、
↓これで十分だと思いますが・・・

Private Sub CommandButton1_Click()
 
  TextBox5.Text = TextBox3.Text - TextBox1.Text '時間
  TextBox6.Text = TextBox4.Text - TextBox2.Text '電位
  
  '電流密度 * 時間 / 電位
  TextBox8.Text = TextBox7.Text * TextBox5.Text / TextBox6.Text
 
End Sub

【7088】Re:マクロに自分の作ったフォームをいれた...
質問  みさっぴ  - 03/8/22(金) 11:24 -

引用なし
パスワード
   ▼INA さん:
すばやい回答ありがとうございます。

>Private Sub CommandButton1_Click()
> 
>  TextBox5.Text = TextBox3.Text - TextBox1.Text '時間
>  TextBox6.Text = TextBox4.Text - TextBox2.Text '電位
>  
>  '電流密度 * 時間 / 電位
>  TextBox8.Text = TextBox7.Text * TextBox5.Text / TextBox6.Text
> 
>End Sub
この、教えていただいたコードをそのままコピーして
使ってみたのですが、なぜか計算をしてくれません。
計算結果が表示されないのです。
コマンドボタンを押したら、そのまま実行中で止まってしまいます。
まだなにか足らないのでしょうか。

それとも、根本的に間違っているのでしょうか。
こんな簡単なプログラムなのに・・・。
もし、お時間ありましたら教えてください。

【7089】Re:マクロに自分の作ったフォームをいれた...
回答  INA  - 03/8/22(金) 11:46 -

引用なし
パスワード
   コードを書く場所を間違えていませんか?
VBEを起動して適切なモジュールに記述してありますか?

ユーザーフォームを使用しているのであれば、
ユーザーフォームモジュールに記述して下さい。

シート上にTextboxを配置しているのであれば、
シートモジュールに記述して下さい。

【7549】Re:マクロに自分の作ったフォームをいれた...
質問  みさっぴ  - 03/9/8(月) 16:00 -

引用なし
パスワード
   ▼INA さん:
回答ありがとうございました。
しばらく仕事先に来ていなかったので、
ずいぶんお礼が遅れてしまいました。
申し訳ありません。

>コードを書く場所を間違えていませんか?
>VBEを起動して適切なモジュールに記述してありますか?
>
>ユーザーフォームを使用しているのであれば、
>ユーザーフォームモジュールに記述して下さい。
>
>シート上にTextboxを配置しているのであれば、
>シートモジュールに記述して下さい。

すみません。多分プログラムを書く場所を間違って
いるのですね。

希望としては、エクセル上に入力ボックスを
出現させ、そこに数値を入力し、
計算結果をエクセル上のテキストボックスに記入する、
ということをしたいのです。

マクロで入力ボックスを出現させるところまでは
いったのですが、そこからは動きません。
この場合、シートモジュールというところに
書けばいいのでしょうか。

【7553】Re:マクロに自分の作ったフォームをいれた...
回答  INA E-MAIL  - 03/9/8(月) 16:16 -

引用なし
パスワード
   >希望としては、エクセル上に入力ボックスを
>出現させ、
1.ユーザーフォームを表示させます。
フォームの表示をシート上のコマンドボタンを押して実行させる場合は、
「コントロールツールボックス」−「コマンドボタン」をシート上に配置。
そのボタンをダブルクリック→VBEが起動。
コードウィンドウに
Private Sub CommandButton1_Click()
 UserForm1.Show
End Sub
とする。

>そこに数値を入力し、
>計算結果をエクセル上のテキストボックスに記入する、
>ということをしたいのです。
2.ユーザーフォーム上にテキストボックスとコマンドボタンを配置。
3.計算および結果の出力は、コマンドボタンで実行する場合、
ユーザーフォーム上のコマンドボタンをダブルクリックして
コードウィンドウに
Private Sub CommandButton1_Click() 
  TextBox5.Text = TextBox3.Text - TextBox1.Text '時間
  TextBox6.Text = TextBox4.Text - TextBox2.Text '電位
  
  '電流密度 * 時間 / 電位
  'ユーザーフォーム上のTextBox8に計算結果を出力
  TextBox8.Text = TextBox7.Text * TextBox5.Text / TextBox6.Text 

  'シート上にTextBox1を配置して、結果を出力。
    '↓このように、どこにあるTextboxかを指示する必要があります。
  Worksheets("Sheet1").TextBox1.Text = _
   TextBox7.Text * TextBox5.Text / TextBox6.Text 
       
End Sub


これで、シート上のボタンを押すとフォームが表示され、
フォーム上のボタンを押すと、計算され結果が出力されます。

【7563】Re:マクロに自分の作ったフォームをいれた...
質問  みさっぴ  - 03/9/8(月) 16:51 -

引用なし
パスワード
   ▼INA さん:
いつもすばやい回答
ありがとうございます。

>>希望としては、エクセル上に入力ボックスを
>>出現させ、
>1.ユーザーフォームを表示させます。
>フォームの表示をシート上のコマンドボタンを押して実行させる場合は、
>「コントロールツールボックス」−「コマンドボタン」をシート上に配置。
>そのボタンをダブルクリック→VBEが起動。

すみません。コントロールツールボックスというのが
分からなくて・・・。

ちなみに、マクロを使って入力ボックスまでは表示できるんです。
以下のコマンドで。


Sub Macro3()
 
  
  UserForm1.Show
End Sub

Private Sub CommandButton1_Click()
 
  TextBox5.Text = TextBox3.Text - TextBox1.Text '時間
  TextBox6.Text = TextBox4.Text - TextBox2.Text '電位
 
  '電流密度 * 時間 / 電位
  TextBox8.Text = TextBox7.Text * TextBox5.Text / TextBox6.Text

End Sub

でも、数値を入力してOKボタンを押しても、
計算どころか、反応がないのです。
こんなに簡単なプログラムなのに・・・。


>コードウィンドウに
>Private Sub CommandButton1_Click()
> UserForm1.Show
>End Sub
>とする。
>
>>そこに数値を入力し、
>>計算結果をエクセル上のテキストボックスに記入する、
>>ということをしたいのです。
>2.ユーザーフォーム上にテキストボックスとコマンドボタンを配置。
>3.計算および結果の出力は、コマンドボタンで実行する場合、
>ユーザーフォーム上のコマンドボタンをダブルクリックして
>コードウィンドウに
>Private Sub CommandButton1_Click() 
>  TextBox5.Text = TextBox3.Text - TextBox1.Text '時間
>  TextBox6.Text = TextBox4.Text - TextBox2.Text '電位
>  
>  '電流密度 * 時間 / 電位
>  'ユーザーフォーム上のTextBox8に計算結果を出力
>  TextBox8.Text = TextBox7.Text * TextBox5.Text / TextBox6.Text 
>
>  'シート上にTextBox1を配置して、結果を出力。
>    '↓このように、どこにあるTextboxかを指示する必要があります。
>  Worksheets("Sheet1").TextBox1.Text = _
>   TextBox7.Text * TextBox5.Text / TextBox6.Text 
>       
>End Sub
>
>
>これで、シート上のボタンを押すとフォームが表示され、
>フォーム上のボタンを押すと、計算され結果が出力されます。

【7564】Re:マクロに自分の作ったフォームをいれた...
回答  INA E-MAIL  - 03/9/8(月) 17:04 -

引用なし
パスワード
   >すみません。コントロールツールボックスというのが
>分からなくて・・・。
「表示」−「ツールバー」−「コントロールツールボックス」です。

>ちなみに、マクロを使って入力ボックスまでは表示できるんです。
>以下のコマンドで。
>Sub Macro3()
>  UserForm1.Show
>End Sub
これでも別に問題ないですよ。私がボタンを配置するのが好きなだけです。
ところで、「入力ボックス」=「ユーザーフォーム」ですよね?
ダイアログとかじゃないですよね?

>Private Sub CommandButton1_Click()
> 
>  TextBox5.Text = TextBox3.Text - TextBox1.Text '時間
>  TextBox6.Text = TextBox4.Text - TextBox2.Text '電位
> 
>  '電流密度 * 時間 / 電位
>  TextBox8.Text = TextBox7.Text * TextBox5.Text / TextBox6.Text
>
>End Sub
>
>でも、数値を入力してOKボタンを押しても、
>計算どころか、反応がないのです。
>こんなに簡単なプログラムなのに・・・。
ユーザーフォームのモジュールに書いてますか?
VBEのプロジェクトエクスプローラを見れば、分かるはずなんですが・・・
ユーザーフォームに配置したボタンをダブルクリックしたところですよ?


私の説明とご自分の操作で、ちょっとでも違うところがあれば言って下さい。
根本的に何か違うかもしれません。
いまさらですが、OSとExcelのバージョンは何でしょうか?
もし、どうしても分からなければ、ファイルをメールしてもらっても構わないです。

【7566】Re:マクロに自分の作ったフォームをいれた...
回答  Jカーター  - 03/9/8(月) 17:30 -

引用なし
パスワード
   おじゃまします。

>でも、数値を入力してOKボタンを押しても、
>計算どころか、反応がないのです。
推測ですが
OKボタンのオブジェクト名が
CommandButton1ではないからでしょうか?

あと
TextBoxの計算の場合(特に足し算)文字連結になりそうなので
Val関数を使った方が確実と思います。

全て読んで無いので、はずしていたらすいません。

【7567】Re:マクロに自分の作ったフォームをいれた...
お礼  みさっぴ  - 03/9/8(月) 17:41 -

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

できました!!
ボタンをダブルクリックしたところに
プログラムをかくのですね!

てっきりマクロの下に書くのだと思っていて・・・。
すごい勘違いでした。
顔から火が出そうです。

こんな低レベルな質問に、長らく丁寧に付き合っていただいて、
ありがとうございました。
親切な方に回答していただくと、
うまくできなくてもまたやる気がでます。
本当にありがとうございました。

【7569】Re:マクロに自分の作ったフォームをいれた...
お礼  みさっぴ  - 03/9/8(月) 17:46 -

引用なし
パスワード
   ▼Jカーター さん:
お答えありがとございます。
答えていただいた内容よりもっと
低レベルなところを間違えていたようです。

どうもありがとうございました。
またよろしくお願いいたします。

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