出産前後の痔にはご注意!

初心者です。
リストボックス内で
A---
B---
C---
D---
E---
B---
F---
C---
という行数で表示しているものを
onclickで重複しているBとCとの行数を消したいのですが
どうすればいいのでしょうか?
消すものは6、8行目のBとCです。
実際は行がもっと多いので
for文で上から見て消していくというようにしたいです。
困ってます。よろしくお願いします。

A 回答 (1件)

こんにちはmikaninuさん、xruzです。


こんな感じでよかったでしょうか?
(Ie5.5sp2、NN4.75、NN6.1動作確認済み)

<html>
<head>
<title>select001</title>
</head>
<script Language="JavaScript">
<!--
function lstClear() {
var optValue=new Array();
var optIndex="";
var j=0;
with(document.frm.sel) {
for(var i=0;i<options.length;i++) {
if(optIndex.indexOf(options[i].text,0)==(-1)) {
optValue[j++]=options[i];
optIndex=optIndex+"\t"+options[i].text;
}
}
options.length=optValue.length;
for(var i=0;i<optValue.length;i++) {
options[i].text=optValue[i].text;
options[i].value=optValue[i].value;
}
}
}
//-->
</script>
<body>
<form method="post" name="frm">
<select name="sel" size="1">
<option value="a">a---
<option value="b">b---
<option value="c">c---
<option value="d">d---
<option value="e">e---
<option value="b">b---
<option value="f">f---
<option value="c">c---
</select>
<input type="button" value="Restruct" onClick="lstClear();">
</form>
</body>
</html>

がんばってくださいね。
    • good
    • 0
この回答へのお礼

ありがとうございました。
これでやってみます。

お礼日時:2001/10/29 10:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QListBoxにAddItemする際、重複しないようにしたい

 ユーザーフォームで作成するListBoxにAddItemでデータを次々に追加したいのですが、データ自体に重複があるため、単純に順番に追加するとListBoxのデータも重複してしまいます。
 重複を回避する方法はいろいろあるのではないかとは思いますが、ListBoxに追加するデータが既に入っているかどうかを調べる方法はないでしょうか。
 よろしくお願いします。

Aベストアンサー

私は、先日、同じ事象を下記参考URLを参考にして解決しました。

参考URL:http://www3.plala.or.jp/sardonyx/smart/vb/ctrl/5.html

Q【Excel】リストボックスにデータを重複せず昇順に表示する方法

教えてください。
ユーザーフォームにリストボックス(Listbox1)があり、日付が昇順で入力されるようになっています。
ただし、この日付データは重複が多いため重複されないよう表示しようと下記のコードを記述しましたが「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです」と表示されてしまいます。
これを回避し、実行させるためにはどういう風に記述を修正したらよいでしょうか?
================================================================
Private Sub UserForm_Initialize()

Dim i As Long
For i = 2 To 2000
ListBox1.AddItem Worksheets("データ").Cells(i, 1)

Dim myValue As Variant
Dim myRng As Range, myCell As Range

Set myRng = Worksheets("データ").Cells(i, 1).End(xlUp)
myValue = myRng.Value

Application.ScreenUpdating = False

myRng.Sort Worksheets("データ").Cells(i, 1), xlAscending, Header:=xlYes


With ListBox1
.Clear
For Each myCell In myRng.Resize(myRng.Rows.Count - 1).Offset(1) _
.SpecialCells(xlCellTypeVisible)
.AddItem myCell.Value
Next
.ListIndex = 0
End With
Next i
ListBox1.ListIndex = 0
End Sub
================================================================

教えてください。
ユーザーフォームにリストボックス(Listbox1)があり、日付が昇順で入力されるようになっています。
ただし、この日付データは重複が多いため重複されないよう表示しようと下記のコードを記述しましたが「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです」と表示されてしまいます。
これを回避し、実行させるためにはどういう風に記述を修正したらよいでしょうか?
================================================================
Private Sub UserForm_In...続きを読む

Aベストアンサー

> 抽出されたデータが重複しているものが3件あるはずなのに2件しか抽出
> されません。

すみません。寝ぼけてたみたいです。#3 もおかしなコードですね...
AddItem ではなく、 List の方が楽なので変更しましたが、これで大丈夫な
はずです。きっと(´・ω・`)

Private Sub UserForm_Initialize()

  Dim i      As Long
  Dim lngR    As Long
  Dim myRng    As Range
  Dim Buffer   As Variant
  
  With Worksheets("データ")
    lngR = .Cells(65536, "A").End(xlUp).Row
    Set myRng = Range(.Cells(1, "A"), .Cells(lngR, "A"))
    myRng.Sort Key1:=myRng(1, 1), Order1:=xlAscending, Header:=xlYes
    .Range("B:B").ClearContents
    myRng.AdvancedFilter Action:=xlFilterCopy, _
               CopyToRange:=.Range("B1"), _
               Unique:=True
    lngR = .Cells(65536, "B").End(xlUp).Row
    Buffer = Range(.Cells(2, "B"), .Cells(lngR, "B")).Value
  End With
  With ListBox1
    .Clear
    .List = Buffer
    .ListIndex = 0
  End With

End Sub

> 抽出されたデータが重複しているものが3件あるはずなのに2件しか抽出
> されません。

すみません。寝ぼけてたみたいです。#3 もおかしなコードですね...
AddItem ではなく、 List の方が楽なので変更しましたが、これで大丈夫な
はずです。きっと(´・ω・`)

Private Sub UserForm_Initialize()

  Dim i      As Long
  Dim lngR    As Long
  Dim myRng    As Range
  Dim Buffer   As Variant
  
  With Worksheets("データ")
    lngR = .Cells(65536, "A"...続きを読む

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

Qリストボックスでの選択項目分削除について。

こんばんは。
リストボックスでのマルチセレクトで選択した項目を削除する
方法で悩んでいます。
(リストボックスで3項目選択したとして、この3項目を削除する方法)

解答は現在勉強している本に掲載されているのですが意味が分からず。

解答のコードの方にはリストを後ろから削除しているみたいなのですが、
前から削除しても大丈夫だと思いやってみましたが、エラーが出てしまいます。

解説には、先頭から削除するとその時点でリストのインデックス値がずれて
しまう。と書いてあるのですが、後ろから削除しても一緒だと考えこんでいます。

解答コード
**********************************************************
Private Sub Command2_Click()
Dim i As Integer

'選択状態(Selected=true)の項目だけ削除
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected(i) = True Then
List1.RemoveItem i
End If
Next i

End Sub
*********************************************************

と言う解答コードを自分は、前から削除するように

自分なりのコード
*********************************************************
Private Sub Command2_Click()
Dim i As Integer

For i = 0 To listcount-1
If List1.Selected(i) = True Then
List1.RemoveItem i
End If
Next i

End Sub

*************************************************************
で作成してみましたが、やっぱりエラーが。

なぜ、前から削除するとエラーになってしまうのか、
もう少し具体的に教えてくれると助かります。

よろしくお願いします。m(__)m

こんばんは。
リストボックスでのマルチセレクトで選択した項目を削除する
方法で悩んでいます。
(リストボックスで3項目選択したとして、この3項目を削除する方法)

解答は現在勉強している本に掲載されているのですが意味が分からず。

解答のコードの方にはリストを後ろから削除しているみたいなのですが、
前から削除しても大丈夫だと思いやってみましたが、エラーが出てしまいます。

解説には、先頭から削除するとその時点でリストのインデックス値がずれて
しまう。と書いてあるのですが、...続きを読む

Aベストアンサー

こんにちわ。

コードの処理に沿って順番に説明しますね。
リストの内容はA~Eの5個あり、BとDを選択した状態だとします。

*リストの内容**
1|A
2|B ←選択
3|C
4|D ←選択
5|E
**************

これを解答コードのように後ろから削除する場合、5から1まで繰り返し判定するわけですが、
1回目(5):Eは選択されていませんので何もしません。
2回目(4):Dが選択されているので削除します。

*リストの内容**
1|A
2|B ←選択
3|C
4|E
**************

3回目(3):Cは選択されていませんので何もしません。
4回目(2):Bが選択されているので削除します。

*リストの内容**
1|A
2|C
3|E
**************

5回目(1):Aは選択されていませんので何もしません。
結果、以下のようなリストになり正常に動作します。

*リストの内容**
1|A
2|C
3|E
**************

同じ様にmineral01さんのコードのように前から削除する場合、
1回目(1):Aは選択されていませんので何もしません。
2回目(2):Bが選択されているので削除します。

*リストの内容**
1|A
2|C
3|D ←選択
4|E
**************

3回目(3):Dが選択されているので削除します。
(この時点でインデックスがずれているためCの判定が飛ばされてしまいます。)

*リストの内容**
1|A
2|C
3|E
**************

4回目(4):4番目の要素が無いためエラーになります。
この段階ではもうリストの内容が3つしかないために、4番目の内容を取得しようとするとインデックスエラーとなってしまいます。

どうしても前から削除したい場合は、以下のコードで大丈夫だと思います。
mineral01さんのコードに追記してみました。
*********************************************************
Private Sub Command2_Click()
Dim i As Integer

For i = 0 To List1.listcount - 1
If List1.Selected(i) = True Then
List1.RemoveItem i
i = i - 1
End If
If i >= List1.ListCount - 1 Then
Exit For
End If
Next i

End Sub

*************************************************************

長文なってしまい、申し訳無いです。参考になれれば幸いです。

こんにちわ。

コードの処理に沿って順番に説明しますね。
リストの内容はA~Eの5個あり、BとDを選択した状態だとします。

*リストの内容**
1|A
2|B ←選択
3|C
4|D ←選択
5|E
**************

これを解答コードのように後ろから削除する場合、5から1まで繰り返し判定するわけですが、
1回目(5):Eは選択されていませんので何もしません。
2回目(4):Dが選択されているので削除します。

*リストの内容**
1|A
2|B ←選択
3|C
4|E
**************...続きを読む

Qテーブル内の文字サイズを変更したい。

HTMLのテーブル内の文字サイズを変更したいのですが。
イマイチ上手くいかずに悩んでいます。
出来れば全体的に<TABLE></TABLE>のほうでいじれますか?
<TD>タグや<TR>タグのところでいじくるのですか?

Aベストアンサー

いろいろやり方はありますが
文字単位でサイズを変更するには
#2の方法ですね。

テーブルごとやセル(<TD>)ごとにサイズを変更するには
スタイルシート(CSS)を使用します。

テーブルごとにサイズを変更する場合
<TABLE style="font-size : 20px;">

セル(<TD>)ごとにサイズを変更する場合
<TD style="font-size : 20px;">あああ</TD>

#1の方法だとページ内の全てのセル(<TD>)に設定することになります。

スタイルシート(CSS)はこれら以外にも
いろいろな設定方法があります。

Qで配列(複数の要素)を渡したいとき?

こんにちわ,

今HTML+PHPで
$hoge[]にいくつかの要素が入っているとき,
それをあるfoo.phpというページに渡したいとき,
echo '<form action="foo.php" method="POST">';
echo '<input type="hidden" name="$hoge[]" >';
echo '</form>';
としたのですが,うまくいきません。

どうしたらよろしいでしょうか。

Aベストアンサー

nameじゃなく、valueでは?
あとやるなら、
for($i=0;$i<count($hoge);$i++){
print "<input type=\"hidden\" name=\"$hoge[$i][0]\" value=\"$hoge[$i][1]\">";
}
とか?

Q