Excel VBA質問箱 IV

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

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


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

【34518】2つの条件が一致したら入力するには・・・ エクセラ 06/2/4(土) 21:08 質問[未読]
【34520】Re:2つの条件が一致したら入力するには・... [名前なし] 06/2/4(土) 23:53 発言[未読]
【34527】Re:2つの条件が一致したら入力するには・... エクセラ 06/2/5(日) 11:25 質問[未読]
【34529】Re:2つの条件が一致したら入力するには・... [名前なし] 06/2/5(日) 11:57 発言[未読]
【34533】Re:2つの条件が一致したら入力するには・... エクセラ 06/2/5(日) 18:15 質問[未読]
【34537】Re:2つの条件が一致したら入力するには・... [名前なし] 06/2/5(日) 20:58 発言[未読]
【34538】Re:2つの条件が一致したら入力するには・... エクセラ 06/2/5(日) 22:00 質問[未読]
【34542】Re:2つの条件が一致したら入力するには・... [名前なし] 06/2/5(日) 23:42 回答[未読]
【34568】Re:2つの条件が一致したら入力するには・... エクセラ 06/2/6(月) 21:11 質問[未読]

【34518】2つの条件が一致したら入力するには・・...
質問  エクセラ  - 06/2/4(土) 21:08 -

引用なし
パスワード
   コンボボックス1にはA、B、C、D、Eという名前が入ってます。
コンボボックス2には月〜金の曜日が入ってます。
ここで、2つのコンボボックスからAと月を選んだら「週別管理」のE33に文字を入力し、Aと火を選んだらシートAのM33に文字を入力したいと思います。

条件がどちらか一つの場合は

Private Sub CommandButton9_Click()
Dim ListIdx As Integer
Dim varWS As Variant
Dim AryAdr
AryAdr = Array("E33", "E72", "E111", "E150", "E189")
ListIdx = Me.ComboBox1.ListIndex
    Sheets("週別管理").Range(AryAdr(ListIdx)).Value = Me.TextBox127.Value
End Sub

で表示されたのですが、二つの条件が揃った場合に入力される場所を変えるようにするにはどうしたらいいのでしょうか?

【34520】Re:2つの条件が一致したら入力するには...
発言  [名前なし]  - 06/2/4(土) 23:53 -

引用なし
パスワード
   ▼エクセラ さん:
>ここで、2つのコンボボックスからAと月を選んだら「週別管理」のE33に文字を入力し、Aと火を選んだらシートAのM33に文字を入力したいと思います。

の部分と、

>AryAdr = Array("E33", "E72", "E111", "E150", "E189")

を見る限り、行・列とも等間隔のようなので以下のような感じで
いけるかと。

Private Sub CommandButton9_Click()
Const ColStep = 8
Const RowStep = 39

Dim ListIdx1 As Long
Dim ListIdx2 As Long
Dim varWS As Variant

  ListIdx1 = Me.ComboBox1.ListIndex
  ListIdx2 = Me.ComboBox2.ListIndex
  Sheets("週別管理").Range("E33").Offset(ListIdx1 * RowStep, ListIdx2 * ColStep).Value = _
  Me.TextBox127.Value
End Sub

【34527】Re:2つの条件が一致したら入力するには...
質問  エクセラ  - 06/2/5(日) 11:25 -

引用なし
パスワード
   ありがとうございます!
早速試したところうまくいきました!

ただ、これだと月曜日を選択した場合にE列に入れるというのはうまくいくのですが、他の曜日だとどうなるんでしょうか?

 Sheets("週別管理").Range("E33").Offset(ListIdx1 * RowStep, ListIdx2 * ColStep).Value = _

のE33を他の列にして列の数だけ増やせばよいのでしょうか???

【34529】Re:2つの条件が一致したら入力するには...
発言  [名前なし]  - 06/2/5(日) 11:57 -

引用なし
パスワード
   ▼エクセラ さん:
> Sheets("週別管理").Range("E33").Offset(ListIdx1 * RowStep, ListIdx2 * ColStep).Value = _
>
>のE33を他の列にして列の数だけ増やせばよいのでしょうか???

その前に、

MsgBox Range("E33").Offset(ListIdx1 * RowStep, ListIdx2 * ColStep).Address

を追加して、セルアドレスがどうなるかを曜日を変えて確かめてみてください。
(E33はそのままで)

火曜までしか書いていなかったので、もし曜日ごとの間隔がことなるのなら、
水・木・金がそれぞれどの列かわからないことには回答のしようがありません。

とりあえず、Offsetが何か、ListIndexが変わるとOffset(ListIdx1 * RowStep,
ListIdx2 * ColStep)の部分がどうなるかを調べてみると、仕組みがわかると
思います。

【34533】Re:2つの条件が一致したら入力するには...
質問  エクセラ  - 06/2/5(日) 18:15 -

引用なし
パスワード
   ご回答ありがとうございます。
火曜日のときはM列、水曜日はU列、木曜日はAC列、金曜日はAK列に入力したいと思います。

仕組みのほうなのですが、MsgBox Range("E33").Offset(ListIdx1 * RowStep, ListIdx2 * ColStep).Addressを追加して曜日を変えると$E$33というメッセージが出ました。
ListIndexが変わるとOffset(ListIdx1 * RowStep,ListIdx2 * ColStep)の部分がどうなるかというところはわかりませんでした・・・。

【34537】Re:2つの条件が一致したら入力するには...
発言  [名前なし]  - 06/2/5(日) 20:58 -

引用なし
パスワード
   ▼エクセラ さん:
>火曜日のときはM列、水曜日はU列、木曜日はAC列、金曜日はAK列に入力したいと思います。

なら、あのまま何も変えないで問題ないですね。

>仕組みのほうなのですが、MsgBox Range("E33").Offset(ListIdx1 * RowStep, ListIdx2 * ColStep).Addressを追加して曜日を変えると$E$33というメッセージが出ました。

それを、名前を変えたり曜日を変えたりして、メッセージで出てくるアドレスが
出力したいセルアドレスと同じかどうか確かめてくださいということだったん
ですけど。

>ListIndexが変わるとOffset(ListIdx1 * RowStep,ListIdx2 * ColStep)の部分がどうなるかというところはわかりませんでした・・・。

Range("E33").Offset(0,0) → E33のまま
Range("E33").Offset(1,0) → E33の1つ下 → E34
Range("E33").Offset(0,1) → E33の1つ右 → F33
Range("E33").Offset(1,1) → E33の1つ下で1つ右 → F34

ということは、ListIdx1、ListIdx2が両方とも1の時は、
 Range("E33").Offset(1 * 39,1 * 8)
→Range("E33").Offset(39,8) → E33の39個下で8個右のセルなので・・・

http://www.biwa.ne.jp/~k-haizen/excel/activex/lesson08/activex25.htm
あたりを見るとよくわかるかと。

【34538】Re:2つの条件が一致したら入力するには...
質問  エクセラ  - 06/2/5(日) 22:00 -

引用なし
パスワード
   ありがとうございます。
よくわかりました。
ただ、ListIdx1、ListIdx2が両方とも1の時はちゃんと入力されるのですが、それ以外では何も表示されません。
何か設定が間違ってるのでしょうか?

【34542】Re:2つの条件が一致したら入力するには...
回答  [名前なし]  - 06/2/5(日) 23:42 -

引用なし
パスワード
   ▼エクセラ さん:
>ただ、ListIdx1、ListIdx2が両方とも1の時はちゃんと入力されるのですが、それ以外では何も表示されません。
>何か設定が間違ってるのでしょうか?

実際どんなコードで試しているのかわからないので答えようがないです。

【34568】Re:2つの条件が一致したら入力するには...
質問  エクセラ  - 06/2/6(月) 21:11 -

引用なし
パスワード
   Private Sub UserForm_Initialize()
Me.ComboBox1.RowSource = "年間目標!A9:A13"
With UserForm1.ComboBox1
ComboBox2.AddItem "(月)"
ComboBox2.AddItem "(火)"
ComboBox2.AddItem "(水)"
ComboBox2.AddItem "(木)"
ComboBox2.AddItem "(金)"
End With
End Sub
Private Sub UserForm1_Initialize()
 With UserForm1.ComboBox1
  .List = Sheets("年間目標").Range("A9:A13").Value
 End With
End Sub
Private Sub CommandButton9_Click()
Const ColStep = 8
Const RowStep = 39

Dim ListIdx1 As Long
Dim ListIdx2 As Long
Dim varWS As Variant

  ListIdx1 = Me.ComboBox1.ListIndex
  ListIdx2 = Me.ComboBox2.ListIndex
  Sheets("週別管理").Range("E33").Offset(ListIdx1 * RowStep, ListIdx2 * ColStep).Value = _
  Me.TextBox127.Value
End Sub

としております。
色々と試してはみたのですが、どうしてもE列以外には入力されませんでした・・・。
どこか間違ってますでしょうか?

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