Excel VBA質問箱 IV

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

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


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

【46398】ユーザーフォームの共有使用について vang 07/2/1(木) 21:30 質問[未読]
【46400】Re:ユーザーフォームの共有使用について ichinose 07/2/1(木) 21:43 発言[未読]
【46401】Re:ユーザーフォームの共有使用について ponpon 07/2/1(木) 21:49 発言[未読]
【46404】Re:ユーザーフォームの共有使用について Kein 07/2/1(木) 22:30 回答[未読]
【46405】Re:ユーザーフォームの共有使用について vang 07/2/1(木) 23:03 発言[未読]
【46408】Re:ユーザーフォームの共有使用について ichinose 07/2/2(金) 9:03 発言[未読]
【46537】Re:ユーザーフォームの共有使用について vang 07/2/6(火) 9:51 発言[未読]
【46558】Re:ユーザーフォームの共有使用について ichinose 07/2/6(火) 20:22 発言[未読]

【46398】ユーザーフォームの共有使用について
質問  vang  - 07/2/1(木) 21:30 -

引用なし
パスワード
   お世話になります。
ユーザーフォームについて教えて下さい。
現在ユーザーフォームを使用し任意シートに書き込みを行っているですが
シートが1月〜12月と12シートあり、ユーザーフォームから書き込むコード
を考えると

Private Sub CommandButton1_Click()
If 行選択 = 0 Then 行選択 = 6
Sheets("1月").Range("B" & 行選択) = TextBox1.Text
Sheets("1月゚").Range("D" & 行選択) = TextBox2.Text
Sheets("1月゚").Range("E" & 行選択) = TextBox3.Text
Sheets("1月゚").Range("G" & 行選択) = TextBox4.Text
Sheets("1月゚").Range("O" & 行選択) = TextBox5.Text
End Sub

そのシートを選択しなくてはならないコードしか思いつきません。
これだと各シート事にユーザーフォームを作っておかなければならず
大変容量が大きくなってしまいます。
ユーザーフォームは1つで各シートから呼び出したときに
そのシートに書き込みができるようなコードは作成できるのでしょうか。
どなたか御指導下さい。

【46400】Re:ユーザーフォームの共有使用について
発言  ichinose  - 07/2/1(木) 21:43 -

引用なし
パスワード
   ▼vang さん:
こんばんは。

>お世話になります。
>ユーザーフォームについて教えて下さい。
>現在ユーザーフォームを使用し任意シートに書き込みを行っているですが
>シートが1月〜12月と12シートあり、ユーザーフォームから書き込むコード
>を考えると
>
>Private Sub CommandButton1_Click()
>If 行選択 = 0 Then 行選択 = 6

activesheet.Range("B" & 行選択) = TextBox1.Text
'としてみては?
>Sheets("1月゚").Range("D" & 行選択) = TextBox2.Text
>Sheets("1月゚").Range("E" & 行選択) = TextBox3.Text
>Sheets("1月゚").Range("G" & 行選択) = TextBox4.Text
>Sheets("1月゚").Range("O" & 行選択) = TextBox5.Text
>End Sub
>
>そのシートを選択しなくてはならないコードしか思いつきません。
>これだと各シート事にユーザーフォームを作っておかなければならず
>大変容量が大きくなってしまいます。
>ユーザーフォームは1つで各シートから呼び出したときに
>そのシートに書き込みができるようなコードは作成できるのでしょうか。
>どなたか御指導下さい。

【46401】Re:ユーザーフォームの共有使用について
発言  ponpon  - 07/2/1(木) 21:49 -

引用なし
パスワード
   ▼vang さん:
>ユーザーフォームは1つで各シートから呼び出したときに
>そのシートに書き込みができるようなコードは作成できるのでしょうか。

アクティブなシートからフォームを呼び出すなら、

>Private Sub CommandButton1_Click()
>If 行選択 = 0 Then 行選択 = 6
 With ActiveSheet
  .Range("B" & 行選択) = TextBox1.Text
  .Range("D" & 行選択) = TextBox2.Text
  .Range("E" & 行選択) = TextBox3.Text
  .Range("G" & 行選択) = TextBox4.Text
  .Range("O" & 行選択) = TextBox5.Text
 End With
>End Sub

もしくは、ユーザーフォームに1から12までを選ぶコンボボックスか
何か設けてシート(月)を選択させるかな?

【46404】Re:ユーザーフォームの共有使用について
回答  Kein  - 07/2/1(木) 22:30 -

引用なし
パスワード
   ユーザーフォームにコンボボックスを配置しておき

Private MyS As String

Private Sub UserForm_Initialize()
  Dim i As Integer

  For i = 1 To 12
   Me.ComboBox1.AddItem i & "月"
  Next i
End Sub

Private Sub ComboBox1_Change()
  With ComboBox1
   If .ListIndex = -1 Then Exit Sub
   MyS = .Value
  End With
End Sub

Private Sub CommandButton1_Click()
  If MyS = "" Then
   MsgBox "先に入力するシートを選択して下さい", 48
   Exit Sub
  End If
  If 行選択 = 0 Then 行選択 = 6
  With Sheets(MyS)
   .Range("B" & 行選択) = TextBox1.Text
   .Range("D" & 行選択) = TextBox2.Text
   .Range("E" & 行選択) = TextBox3.Text
   .Range("G" & 行選択) = TextBox4.Text
   .Range("O" & 行選択) = TextBox5.Text
  End With
End Sub

というように、シート名を選択する形にしたらどうでしょーか ?

【46405】Re:ユーザーフォームの共有使用について
発言  vang  - 07/2/1(木) 23:03 -

引用なし
パスワード
   沢山の方々、ありがとうございます。
参考にさせていただきます。つまづいたらまた御指導お願いします。

ユーザーフォームを作成し、呼び出す為のコードなんですが

UserForm1.show

でいいですよね?
今までこれで出来ていたのですがこのコードを組んでみたら

実行時エラー'424'
オブジェクトが必要です。

とのメッセージが出てきました。
これはどういうことなのでしょう?
オブシェクトは UserForm1 で間違いないのですが。

【46408】Re:ユーザーフォームの共有使用について
発言  ichinose  - 07/2/2(金) 9:03 -

引用なし
パスワード
   ▼vang さん:
おはようございます。

>
>ユーザーフォームを作成し、呼び出す為のコードなんですが
>
>UserForm1.show
>
>でいいですよね?
>今までこれで出来ていたのですがこのコードを組んでみたら
>
>実行時エラー'424'
>オブジェクトが必要です。
>
>とのメッセージが出てきました。
>これはどういうことなのでしょう?
>オブシェクトは UserForm1 で間違いないのですが。

これが間違いないとすると・・・、
Userform1のモジュール内に記述したコードに問題がある可能性があります。

VBEにて、

「ツール」----「オプション」とクリックして、「オプション」ダイアログを
表示させてください。

「全般」タブをクリックして「エラートラップ」という箇所に注目してください。

「エラー処理対象外で中断」が選択されていませんか?

そうであるなら、真ん中の「クラスモジュールで中断」を選択して「OK」ボタンを
クリックしてください。

これで実行してみてください。Userform1の中のコードに問題があるなら、
その問題コードの箇所でプログラムが中断されるはずですが・・・。

試してみてください。

尚、原因究明後は、オプションを元に戻。

【46537】Re:ユーザーフォームの共有使用について
発言  vang  - 07/2/6(火) 9:51 -

引用なし
パスワード
   ichinose様
ichinose様のおっしゃるとおりUserform1のモジュール内に記述したコードに問題が
ありました。解説できました。ありがとうございました。

1つ質問してもよろしいでしょうか?
VBAを含んだエクセルを立ち上げるとき「マクロを有効にする」「マクロを無効にする」とのメッセージが出てくるのですが、これをエクセルを立ち上げたときに
マクロを有効にしてメッセージ画面が出てこないコードっていうのはありますか?
過去ログにあったような気がして探してみたんですが見つからないので
分かれば教えてください。
よろしくお願いします。

【46558】Re:ユーザーフォームの共有使用について
発言  ichinose  - 07/2/6(火) 20:22 -

引用なし
パスワード
   ▼vang さん:
こんばんは。

>VBAを含んだエクセルを立ち上げるとき「マクロを有効にする」「マクロを無効にする」とのメッセージが出てくるのですが、これをエクセルを立ち上げたときに
>マクロを有効にしてメッセージ画面が出てこないコードっていうのはありますか?
>過去ログにあったような気がして探してみたんですが見つからないので
>分かれば教えてください。
これは、
セキュリティレベル(「ツール」---「マクロ」---「セキュリティ」とクリック)を
「低」に設定する以外の方法ということですか?

だとしたら、「デジタル署名」をする方法があります。

Selfcert.exe(検索してどこのフォルダにあるか確認してください)
というプログラムを実行することによって証明書を作成します。

作成した証明書をVBEの「ツール」---「デジタル署名」で登録することにより
セキュリティレベル中で確認メッセージが表示されずにマクロの実行が
可能になります。

試してみてください。

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