[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コメントではない方法で』(英)
昨日、上長より、エクセルのコメントを使わずに、セルを押したら、その内容を表示する事はできないか?と相談をうけました。そこで、表示と非表示のマクロを組んで見ましたが、どうも、違うようで、宿題となってしまいました。内容を聞いてみると以下の感じでした。
科目名 科目コード 金額 月 ・・・・
この科目コードが全部で5桁(大科目3桁+小科目2桁)からなっています。
通常は3桁のみなのですが、この部分を押す(選択したら)その小科目まで、表示させたいらしいのです。ただ、現在全営業所で、使用しているので、表は大きくする事ができない という事で却下されてしまいました。
実際のエクセルには、小科目の表示はされておらず、大科目のみになっています。
(別セル?を表示させて内容を反映させたいらしいのです)
表示のさせ方は、コメントみたいに というのが希望らしいのですが・・・。
前に何かのマニュアルにその様な方法が書いてあったらしいのですが、現在そのマニュアルは行方不明です。
一体どの様な方法があるのでしょうか?
宜しくお願いいたします。
OS はWin2000 エクセルは EXCEL97 です。
科目コードを、2つのセルに分けてもOKでしょうか?
たとえば、Sheet1 に、英さんのように入力。ただし、セルB1とセルC1を結合させて科目コード。セルB2、セルC2は結合無し。
次に、Sheet2 に、下記のように入力。
A B C D E F
1 大科目 小科目101 小科目102 小科目103 小科目104 小科目105
2
3 101 10 20 30 40 50
4 102 11 21 31 41 51
5 103 12 22 32 52
6 104 24 34
7 105 35
セルA2〜A7を選択した状態で、挿入→名前→定義で、名前を大科目にしてからOK。 セルB2〜B5を選択した状態で、挿入→名前→定義で、名前を小科目101にしてからOK。 ・ ・ ・ 小科目105まで、定義する。
Sheet1 に戻り、セルB2を選択し、データ→入力規則、設定の入力値の種類を”リスト”。 元の値に、”=大科目”と入力。
セルC2を選択し、データ→入力規則、設定の入力値の種類を”リスト”。
元の値に、”=INDIRECT("小科目"&$B$2)”と入力。
これでOKかな?
はずしてたら、すいません。(よくはずしてるしな・・・)
(ken)
(KEN)さま
私の説明不足で申し訳ないです。
A列 B列 C列 D列 E列
科目名 科目コード 予算金額 月別金額 月別・・・・
となっていて基本的にこのシートの列や行を増やすことが不可能なのです。
(E/A:損益計算書)になっているので、科目コードは3桁表示のみになっています。
小科目は、勘定科目 的にはあるのでが、小科目を表示させると、ものすごい
事(行数が多くなりすぎて、見ることが不可能な状態に陥ってしまうのです)
になってしまうのです。
只、情報として、記入したり、参照をしたい。
記入するのだから、大科目の金額(C列の予算金額)まで、変更をさせたい ということなのです。
ちなみに、元の(E/A)には、小科目は記入されていません。
すいません。私には、よく分かりません。。。
初めの御質問で、 >小科目まで、表示させたい 2回目では、 >小科目を表示させると、ものすごい事になってしまうのです
????
(ken)
お邪魔します。
Sheet2のA列に何か適当なデータを入力して
Sheet1のB列にも適当なデータを入力してください。
次に、このコードをSheet1の見出しを右クリック→コードを表示させてそこに貼り付けます。
Sheet1のB列で右クリックするとコンボボックスを表示して
選択された文字とTargetの値を連結します。
こんなことでしょうか?
勘違いでしたら、お許しをm(__)m
Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'*********************************
'変数を宣言します。
Dim x As Double, y As Double
Dim xx As Double, yy As Double
Dim MyBar As CommandBar
Dim MyCom As CommandBarComboBox
Dim i As Long
'**********************************
'TargetがB列じゃなかったら中止します。
If Target.Column <> 2 Then Exit Sub
'複数選択されている場合は中止します。
If Target.Count > 1 Then Exit Sub
'右クリックを無効にします。
Cancel = True
'既にMyMenuがある場合は削除します。
For Each MyBar In CommandBars
If MyBar.Name = "MyMenu" Then
MyBar.Delete
Exit For
End If
Next
'MyBarを作ります。Temporary をTrueにして終了後は削除します。
Set MyBar = CommandBars.Add("MyMenu", msoBarPopup, , True)
'MyBarにコンボボックスを追加します。
Set MyCom = MyBar.Controls.Add(msoControlComboBox)
'追加したコンボボックスにアイテムを追加します。
'追加するアイテムはSheet2のA列にあるとしています。
With Sheets("Sheet2")
For i = 1 To .Range("A65536").End(xlUp).Row
MyCom.AddItem .Cells(i, 1).Value, i
Next
End With
'アクティブウィンドウの距離を求めます。
With ActiveWindow
xx = .PointsToScreenPixelsX(0)
yy = .PointsToScreenPixelsY(0)
End With
'左上端からの距離を求めます。
x = Range("A1:" & Target.Address).Width
y = Rows("1:" & Target.Row).Height
'ピクセル単位に変換します。
x = xx + x * 1.333
y = yy + y * 1.333
'MyBarをTargetの右下に表示します。
MyBar.ShowPopup x, y
'Targetの値とコンボボックスのTextをつなぎます。
With Target
.Value = .Value & MyCom.Text
End With
'変数を開放します。
Set MyCom = Nothing
Set MyBar = Nothing
End Sub
#複数選択時にエラーになるのでちょっと訂正しました。m(__)m
(SoulMan)
(KEN)さま
私の説明不足により、重ね重ね申し訳ありませんでした。
(SoulMan)さま
ハイパーリンクは、すっかり忘れてました。
上記の方法を参照してチャレンジしてみます。
ありがとうございました。
(英)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.