[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入力規制のリストの設定で1つ目のセルで...』(後藤)
[入力規制のリストの設定で1つ目のセルでリストから選んだら、自動で次のセルのリストを表示する方法を教えて下さい]
Excelのバージョンは何ですか? (INA)
(後藤)
横レス失礼します。 A B C 1 5000 2000 2 3000 3 4000 4 5000 5 6000 6 7000 7 8000 8 9000 9 10000 10 A2の入力規則=IF(A1="",(C1:C9),INDIRECT("C"&A1&":C9")) でしょうか。 (川野鮎太郎)
VBAのChangeイベントで A1 のリストを選択したときに、B1のリストを表示する方法です。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "A1" Then Range("B1").Select SendKeys "(%{DOWN})" End If End Sub
(INA)
ごめんなさい・・・。 とんでもない勘違いのレスをしてたようです(TェT) (川野鮎太郎)
(INA)さん、(川野鮎太郎)さんありがとうございます。 次から次にしたい場合はどのようにすればいいのですか? VBAのChangeイベントはやった事がないので できれば教えて下さい (後藤)
私はこちらの後半のようなことかな、とおもったんですが・・・。 [[20040512192223]] 『入力規制のドロップダウンリスト』(じゃけ) (みやほりん)
1.シートタブで右クリック→コードの表示 2.開かれたコードウィンドウに、コードをコピペする。 です。 (INA)
数式でやる場合の例です。 A B C 1 5000 2000 2 6000 3000 3 7000 4000 4 8000 5000 5 9000 6000 6 10000 7000 7 8000 8 9000 9 10000
A2=INDEX($C$1:$C$9,MATCH(A1,$C$1:$C$9,0)+1,1) 以下コピー A1のリストを選択するとそれ以降リストの値が下方に出るようにしてます。 (川野鮎太郎)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then Range("B1").Select SendKeys "(%{DOWN})" End If End Sub
これのやり方だとA1からB1でおわりですよね
そのままC1、D1、A2、B2、C2、D2、A3、B3・・・・・と
続けたいのですがお願いします
条件を Target.Offset(0, -Target.Column + 1).Address = "$A$1"
として
選択するセルを target.offset(0,1).select としてはどうでしょうか?
(Null)
すみませんが、詳しく教えて頂けないでしょうか
同時進行するのやめません?
(INA)
すいません どっちですすめていけばいいですかぁ?
(Null)
迷惑かけてすいません
僕も初めてで、よくわからないのでごちゃごちゃになってしまいました。
すみませんでしたm(__)m
こちらでお願いします
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(0, 0) Case "C1" Range("D1").Select
Case "D1" Range("A2").Select
Case "A2" Range("B2").Select
End Select
SendKeys "(%{DOWN})" End Sub
という風に地道に打っていくしかないのでしょうか?
いい方法を教えて下さい(後藤)
if Target.Column > 4 then target.offset(0,Target.Column+1).select 'E列いこうはひとつしたの行のA列を選ぶ else target.offset(0,1).select 'そうでない場合は横にひとつづつづれていくぅぅ end if
こんな方法もありますが・・・ 結構強引なんで(INA)さん の方法が確実だと思われます。
(Null)
VBAをよく分かっていないようだったので、分かりやすいサンプルを掲載しましたが 「いい方法」ということであれば、Nullさんの書かれたように 条件で判定するのがよいです。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Target.Column >= 5 Then Exit Sub
If Target.Column = 4 Then Cells(Target.Offset(1).Row, 1).Select Else Target.Offset(0, 1).Select End If
SendKeys "(%{DOWN})" End Sub
(INA)
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(0, 0) Case "C1" Range("D1").Select
Case "D1" Range("A2").Select
Case "A2" Range("B2").Select
End Select
SendKeys "(%{DOWN})" End Sub
という風に地道に打っていってるのですが
数が多くて途中で
コンパイルエラー:プロシャージが大きすぎます と、出てくるのですがいい方法はありますか?
規則性があるならINAさん、NULLさんの方法で、 ないならということで。 (ramrun)
Private Sub Worksheet_Change(ByVal Target As Range) Dim n As Long Dim cl As Variant
cl = Array( _ "C1", "D1", "A2", "B2", _ "G5", "H10", "E9", "F3", _ "K4", "L7", "I6", "J8" _ )
For n = 0 To UBound(cl) If Target.Address(0, 0) = cl(n) Then If UBound(cl) = n Then Range(cl(0)).Select Else Range(cl(n + 1)).Select End If SendKeys "(%{DOWN})" Exit For End If Next n End Sub
(ramrun)さんありがとうございます 数を増やすとエラーになってしまうのですが どのように増やせばいいのですか?(後藤)
cl = Array("C1", "D1", "A2", "B2", "G5", "H10", "E9", "F3", "K4", "L7", "I6", "J8")
↑を区切るのに _を使います。
cl = Array("C1", "D1", "A2", "B2", _ "G5", "H10", "E9", "F3", "K4", "L7", "I6", "J8")
また区切るとこうなります。
cl = Array("C1", "D1", "A2", "B2", _ "G5", "H10", "E9", "F3", _ "K4", "L7", "I6", "J8")
あんまり _で区切りすぎると数が多いときはやはりエラーが出るので 区切らない方がいいかも(汗)。 (ramrun)
(ramrun)さんたびたびすいません 数がたくさんありますので入れてもエラーになってしまいます (後藤)
みなさんおっしゃってますように、行と列に規則性があれば、For Nextでループさせたほうが良いような・・・。 (川野鮎太郎)
(川野鮎太郎)さんありがとうございます For Nextって何でしょうか?初心者的質問ですいません (後藤)
具体的にどのセルに入れていくのか判りませんので、考え方だけ・・・。 C1、D1,E1 C2,D2、E2 C3,D3、E3 と順番に入れるとすれば、 C1を基準にNullさん、INAさんが書いておられるOFFSET関数との組み合わせで、 オフセットさせる行と列を増やしていく方法です。
※数が多いとのことですが、列がどこからどこまで、行がどこからどこまでかを提示されれば、 具体的な解決策が出やすいと思います。 (川野鮎太郎)
D8〜AH8までいったらD9〜AH9という風に 371までやりたいのですが ご指導宜しくお願いします
鮎太郎さん、フォローありがとうございます。 とりあえずシート2のA1から↓のように入力しておいて
A B 1 C1 2 D1 3 A2 4 B2 5 G5 6 H10 7 E9 8 F3 9 K4 10 L7 11 I6 12 J8
シート1で↓のコード。
Private Sub Worksheet_Change(ByVal Target As Range) Dim n As Long, ep As Long Dim cl As Variant
ep = Sheet2.Range("A1").CurrentRegion.Count Set cl = Sheet2.Range("A1").CurrentRegion
For n = 1 To ep If Target.Address(0, 0) = cl(n) Then If ep = n Then Range(cl(1)).Select Else Range(cl(n + 1)).Select End If SendKeys "(%{DOWN})" Exit For End If Next n End Sub
(ramrun)でどうでっしゃろ。
とあげたら衝突、規則性があるんですね(汗)。 一応記念にあげときまっさ。
INAさんのやつ。(ramrun)
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Target.Column < 4 Then Exit Sub If Target.Column > 34 Then Exit Sub If Target.Row < 8 Then Exit Sub If Target.Row > 371 Then Exit Sub
If Target.Column = 34 Then Cells(Target.Offset(1).Row, 4).Select Else Target.Offset(0, 1).Select End If
SendKeys "(%{DOWN})" End Sub
今はじめて気づきました(^_^A; これって次々にセルの入力規則を表示させるんですね( ̄ー ̄;A アセアセ・・・
てっきり入力規則に設定してあるリストを最初のセルで選んだら、 自動的に値が順番に入力されていくものかと思ってました(^_^A; それでFor Nextって提案してしまいました_/ ̄|○ il||li (川野鮎太郎)
みなさんありがとうございました。 僕の言葉がへたくそなのでみなさんにご迷惑をかけてしまいすみませんでした。 皆さんのおかげでどうにかできました。 (後藤)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.