Excel VBA質問箱 IV

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

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


40009 / 76732 ←次へ | 前へ→

【41827】Re:VBAで商品マスターから入力
回答  かみちゃん E-MAIL  - 06/8/23(水) 20:21 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>"L1"の設定ですが下記のように過去ログ参考に作成してみたのですが
>Sub Main()
>Dim X As Long
>
>  Rtn = InputBox("1:一般 2:同業 3:特別のいずれかを入力してください")
>  X = Val(Rtn)
>  Select Case X
>    Case 1
>     Range("L1").Value = "一般"
>    Case 2
>     Range("L1").Value = "同業"
>    Case 3
>     Range("L1").Value = "特別"
>  End Select
>End Sub
>かみちゃんにチェック頂きたいのともっといい方法があれば
>教えてください。

私なら、以下のようにします。
ポイントは、
   Range("A1").Value = Choose(Val(Rtn), "一般", "同業", "特別")
の部分と、
入力値が間違うと再入力を促すようにするエラーチェックをしています。
また、
変数Rtnの宣言もきちんとしておきます。

Sub Main2()
 Dim Rtn As String
 
 Do
  Rtn = InputBox("1:一般 2:同業 3:特別のいずれかを入力してください")
  If Rtn = "" Then Exit Sub
  If Rtn >= "1" And Rtn <= "3" Then
   Range("A1").Value = Choose(Val(Rtn), "一般", "同業", "特別")
   Exit Do
  Else
   MsgBox "単価種別を入力しなおしてください。"
  End If
 Loop
End Sub

>>.Offset(, 3).Value = c.Offset(, 3).Value
>>のコードですから、
>>呼称もということでしたら、
>>.Offset(, 1).Value = c.Offset(, 2).Value
>>も追加するといいということになります。
>>ここが応用になります。
>上記の構文.Offset(, 1).Value = c.Offset(, 2).Valueは、
>C列を基準に1列目2列目を読みに行くと言うことですか?

違います。
.Offset(, 1).Value = c.Offset(, 2).Value
の左辺側である
.Offset(, 1).Value
は、
With Target
 .Offset(, 1).Value
ですので、今回の場合、
B列の入力が行なわれたら、1列右隣のC列を右辺の値とするという意味です。

一方、右辺側の
c.Offset(, 2).Value
は、
商品マスターのA列(ちょっとわかりづらいかもしれませんが)を検索して見つか
ったセルの2列右隣のC列の値ということになります。

>
>>前の仕様が原因というわけではないので、そのままにしておきます。
>>前の仕様のうち、一度入力済みのものは、「商品マスター」から参照してくるので>はなく、入力済みの値を常に参照するようにするということでいいですよね?
>上記仮に"商品マスター"のみ参照がいいなとなった場合
>何処を削除すれば宜しいでしょうか。(セル移動のコードは残しますが)
>前の仕様もいい場合もあるのですが内容により使い分けをしたいと思います。

どのような使い分けをなさるおつもりかわかりませんが、
一応、すべてを商品マスターから取得するのであれば、
以下の部分は、不要です。

  Set myRange = Range("A2", Cells(Cells.Rows.Count, 1).End(xlUp).Offset(-1)).Resize(, 5)
  a = myRange.Value
    Application.EnableEvents = False
    Range("C" & .Row).ClearContents
    Range("E" & .Row).ClearContents
    Application.EnableEvents = True
  For i = 1 To myRange.Rows.Count
   If hinmei = a(i, 1) And keijyou = a(i, 2) Then
    Application.EnableEvents = False
    Range("C" & .Row).Value = a(i, 3)
    Range("E" & .Row).Value = a(i, 5)
    Application.EnableEvents = True
    Exit For
   End If
  Next i

また、上のコードを削除すると
If .Value <> "" And Range("C" & .Row).Value = "" And Range("E" & .Row).Value = "" Then '◆

End If '◆
の2行も意味のないコードになりますので、不要です。

>最後にもう一つあるのですが
>>MsgBox "単価種別が違います [" & Range("L1").Value & "]"
>この条件とはどういう状態の時にでますか。

L1の値が「一般」「同業」「特別」のいずれでもないときです。
そういうことは絶対ないとはいえないですよね?
InputBoxで、「一般」「同業」「特別」以外の文字を入れたらどうなるでしょうか?
また、キャンセルしたらどうなるでしょうか?
言い始めるとキリがありません。。。

0 hits

【41794】VBAで商品マスターから入力 kazuo 06/8/23(水) 2:08 質問
【41795】Re:VBAで商品マスターから入力 かみちゃん 06/8/23(水) 7:24 発言
【41805】Re:VBAで商品マスターから入力 色々な方 06/8/23(水) 11:20 発言
【41806】Re:VBAで商品マスターから入力 kazuo 06/8/23(水) 11:42 発言
【41810】Re:VBAで商品マスターから入力 かみちゃん 06/8/23(水) 14:45 回答
【41813】Re:VBAで商品マスターから入力 kazuo 06/8/23(水) 16:08 質問
【41817】Re:VBAで商品マスターから入力 かみちゃん 06/8/23(水) 17:33 回答
【41825】Re:VBAで商品マスターから入力 kazuo 06/8/23(水) 19:41 質問
【41827】Re:VBAで商品マスターから入力 かみちゃん 06/8/23(水) 20:21 回答
【41841】Re:VBAで商品マスターから入力 kazuo 06/8/23(水) 23:34 発言
【41842】Re:VBAで商品マスターから入力 かみちゃん 06/8/23(水) 23:52 回答
【41843】Re:VBAで商品マスターから入力 kazuo 06/8/23(水) 23:59 発言
【41844】Re:VBAで商品マスターから入力 かみちゃん 06/8/24(木) 0:05 発言
【41845】Re:VBAで商品マスターから入力 kazuo 06/8/24(木) 0:09 発言
【41846】Re:VBAで商品マスターから入力 kazuo 06/8/24(木) 0:14 発言
【41847】Re:VBAで商品マスターから入力 かみちゃん 06/8/24(木) 0:17 発言
【41857】Re:VBAで商品マスターから入力 kazuo 06/8/24(木) 12:26 お礼

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