|
こんにちは。かみちゃん です。
>"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で、「一般」「同業」「特別」以外の文字を入れたらどうなるでしょうか?
また、キャンセルしたらどうなるでしょうか?
言い始めるとキリがありません。。。
|
|