Excel VBA質問箱 IV

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

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


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

【60501】ボックス間の掛け算とその解の表示 ヒロ 09/2/24(火) 20:32 質問[未読]
【60502】Re:ボックス間の掛け算とその解の表示 neptune 09/2/24(火) 22:18 発言[未読]
【60535】Re:ボックス間の掛け算とその解の表示 ヒロ 09/2/26(木) 11:35 質問[未読]
【60536】Re:ボックス間の掛け算とその解の表示 neptune 09/2/26(木) 11:59 回答[未読]
【60552】Re:ボックス間の掛け算とその解の表示 ヒロ 09/2/27(金) 18:49 お礼[未読]

【60501】ボックス間の掛け算とその解の表示
質問  ヒロ  - 09/2/24(火) 20:32 -

引用なし
パスワード
   商品データを入力するためのユーザーフォームを改良しています。
ぜひ皆様お助けください。

ボックスA(定価)
ボックスB(掛率)
ボックスC(原価)

という設定で、定価のボックスAと掛率のボックスBが入力されると
原価がボックスCに自動で表記され、最終的に登録ボタンで
ABCがすべてワークシートに反映されるようにしたいと思います。



ボックスA \1000
ボックスB 60%
↓自動で計算され表記
ボックスC \600
↓  
登録

ユーザーフォームであえてボックスCを設置せずに
登録されるワークシートの段階で計算するようなセルの設定も
考えましたが、入力者への原価への意識付けの為に上記の様な
ものを必要としています。

【60502】Re:ボックス間の掛け算とその解の表示
発言  neptune  - 09/2/24(火) 22:18 -

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

こんにちは

先ず、ボックスという言葉が付くコントロールはパッと思いつくだけで3つ
ほどあります。textboxと思いますが、用語はキチンと書きましょう。

余りこういう事は書きたくないのですが、
>商品データを入力するためのユーザーフォームを改良しています。
改良ならば、どこまで出来て、どの部分がわからないか書かなければ、
質問の体をなしてないです。

何がわからないかをキチンと書く事をお勧めします。
その方が親切なResが付きやすいです。

【60535】Re:ボックス間の掛け算とその解の表示
質問  ヒロ  - 09/2/26(木) 11:35 -

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

>改良ならば、どこまで出来て、どの部分がわからないか書かなければ、
>質問の体をなしてないです。

率直なご意見助かります。

1.textbox1→1000入力
2.combobox1→65%選択
3.textbox2→650入力

という入力・選択の流れのなかで
現在は3.の段階で電卓で計算しています。
簡単な計算ならばいいのですが
1.が細かい数字の場合があります。

できれば1.2.の入力・選択の結果が3.に反映されるもの、
1.2.を変更したら3.が変更されるものにしたいのです。

コードは以下の通りです。

'
'新規登録ボタンがクリックされた場合の処理
'
Private Sub CommandButton1_Click()

  '使用する変数の宣言
  'Dim 変数名 As データ型
  
  Dim Meekaamei As String   'メーカー名
  Dim Shiriizumei As String  'シリーズ名
  Dim Shohinmei As String   '商品名
  Dim Teika As String     '定価
  Dim Shubetu As String    '種別
  
  Dim Shiiresaki As String  '仕入
  Dim Kakeritu As String   '掛率
  Dim Genka As String     '原価
  Dim Baika As String     '売価
  
  Dim Yoteibi As String    '予定日
  Dim Hacchuusuuct As String '発注数CT
  Dim Hacchuusuubox As String '発注数BOX
  Dim Hacchuusuuko As String '発注数コ
  
  Dim Kensuu As Long     '登録されているデータの件数
  Dim Gyou As Long      'ワークシートの何行目に書き込むか
  
  Dim MaxGyou As Long     '
    
  'コントロールに入力された値を変数に代入
  '変数名 = オブジェクト名.プロパティ名
  
  Meekaamei = ComboBox1.Text
  Shiriizumei = ComboBox2.Text
  Shohinmei = TextBox1.Text
  Teika = TextBox2.Text
  Shubetu = ComboBox3.Text
  
  Shiiresaki = ComboBox4.Text
  Kakeritu = ComboBox5.Text
  Genka = TextBox3.Text
  Baika = TextBox4.Text
  
  Yoteibi = TextBox5.Text
  Hacchuusuuct = ComboBox6.Text
  Hacchuusuubox = ComboBox7.Text
  Hacchuusuuko = TextBox6.Text
          
    '商品名が入力されていない場合は登録しない

    If Shohinmei = "" Or Teika = "" Or Genka = "" Or Baika = "" Or _
    Yoteibi = "" Or Hacchuusuuko = "" Then
      MsgBox "商品名・定価・原価・売価・予定日・発注数は入力して下さい。"
      Exit Sub
    End If
  
    '登録件数からワークシートに書き込む行を計算する
  
    Kensuu = Worksheets("Sheet1").Cells(4, 18).Value  'セルR4の値=注意!
  
    Kensuu = Kensuu + 1   '新規に入力されたので件数を1つ増やす
  
    Gyou = Kensuu + 4    'ワークシトの4行目までは見出しなので
                'データを書き込む行は件数+4行目となる
              
  '変数の値をワークシートに書き込む
  
  Worksheets("Sheet1").Cells(Gyou, 1).Value = Meekaamei
  Worksheets("Sheet1").Cells(Gyou, 2).Value = Shiriizumei
  Worksheets("Sheet1").Cells(Gyou, 3).Value = Shohinmei
  Worksheets("Sheet1").Cells(Gyou, 4).Value = Teika
  Worksheets("Sheet1").Cells(Gyou, 5).Value = Shubetu
  
  Worksheets("Sheet1").Cells(Gyou, 6).Value = Shiiresaki
  Worksheets("Sheet1").Cells(Gyou, 7).Value = Kakeritu
  Worksheets("Sheet1").Cells(Gyou, 8).Value = Genka
  Worksheets("Sheet1").Cells(Gyou, 9).Value = Baika
  
  Worksheets("Sheet1").Cells(Gyou, 10).Value = Yoteibi
  Worksheets("Sheet1").Cells(Gyou, 11).Value = Hacchuusuuct
  Worksheets("Sheet1").Cells(Gyou, 12).Value = Hacchuusuubox
  Worksheets("Sheet1").Cells(Gyou, 13).Value = Hacchuusuuko
  
    '登録件数の値を更新(セルR4の値=注意!)
  
    Worksheets("Sheet1").Cells(4, 18).Value = Kensuu
    
    '登録件数から最終データの行番号を取得
  
    MaxGyou = Cells(4, 18).Value + 4  'セルR4の値+4
  
    '予定日の昇順で並べ替える操作を「新しいマクロの記録」で出力し
    '並べ替え対象のセル範囲Range()の内容などを変更したもの
  
    Range(Cells(5, 1), Cells(MaxGyou, 15)).Select  '並べ替えるセルの範囲を指定=注意!
    Selection.Sort Key1:=Range("J3"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
      :=xlPinYin, DataOption1:=xlSortNormal
  
    '次の入力のためにテキストボックスを空にする
  
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox3.Value = ""
    TextBox4.Value = ""
    TextBox5.Value = ""
    TextBox6.Value = ""
  
  
End Sub

'
'終了ボタンがクリックされた場合の処理
'
Private Sub CommandButton0_Click()

  End   'コマンドボタンをクリックしたら終了

End Sub

【60536】Re:ボックス間の掛け算とその解の表示
回答  neptune  - 09/2/26(木) 11:59 -

引用なし
パスワード
   ▼ヒロ さん:
こんにちは

>1.textbox1→1000入力
>2.combobox1→65%選択
>3.textbox2→650入力
>
>という入力・選択の流れのなかで
>現在は3.の段階で電卓で計算しています。
>簡単な計算ならばいいのですが
>1.が細かい数字の場合があります。
>
>できれば1.2.の入力・選択の結果が3.に反映されるもの、
>1.2.を変更したら3.が変更されるものにしたいのです。

こういうことですか??
簡単なサンプル。
新規userformにtextbox 2個 ,combobox 1個
を配置

Private Sub ComboBox1_Change()
  Call Calc
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  Call Calc
End Sub

Private Sub Calc()
Dim strTxt As String
Dim stCmb As String
  strTxt = TextBox1.Text
  stCmb = ComboBox1.Text
  If IsNumeric(strTxt) Then
    If IsNumeric(stCmb) Then
      'データ型は自分の環境に合わせて適当に変更の必要アリ
      TextBox2.Text = CStr(CCur(strTxt) * CCur(stCmb))
    End If
  End If
End Sub


Private Sub UserForm_Initialize()
Dim i As Long
    For i = 50 To 100 Step 5
      Me.ComboBox1.AddItem i
    Next i
End Sub

【60552】Re:ボックス間の掛け算とその解の表示
お礼  ヒロ  - 09/2/27(金) 18:49 -

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

コードで回答していただけるなんてすごいですね。
検証するのに時間がかかりそうですが
お礼を言わせてください。
ありがとうございました。

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