こんにちは良です。いつもお世話になっております。
動作環境はVB.NET2003 EXCEL2003 WINXP
スプレッドはグレープシティ社の
Far PointSpread 6.0です。
スプレッド(データグリッド)の一列目に「社員ID」
二列目に「社員名(姓)」三列目に「社員名(名)」
四列目に「印刷フラグ」があります。
四列目の印刷フラグだけチェック可能でそれ以外は
クリックしても値は変更不可能です。
印刷フラグにチェックが入っているもの
だけ一列目の「社員ID」を変数に格納するにはどうしたら
よろしいでしょうか?
以下試してみたソースになります。
intDataCntはRowの数です。
'スプレッド(データグリッド)
'列の設定
.Col = 4
'チェックボックスにチェックがされていたら変数にはそこの列の1列目の値(社員ID)を格納
For intX = 0 To intDataCnt
'チェックが入っていた場合
If .Value = True Then
'チェックが入っていた項目の一列目の社員IDを格納する
nameChk = .GetText(1, intDataCnt, objVal(intCnt))
intCnt += intCnt
End If
Next
これだとエラーは起こらないですがnameChkとobjVal(intCnt)両方とも値が入っていませんでした。
すみませんがご教授のほどをよろしくお願いいたしますm(__)m.
スプレッドではなくてデータグリッドのやりかたでもいいので
よろしくお願いいたします。
すみません。 頭に
With Me.setNameList
をつけるの忘れていました。
試したソースは
'スプレッド(データグリッド)のチェックボックスの値を格納
With Me.setNameList
'列の設定
.Col = 4
'チェックボックスにチェックがされていたら変数にはそこの列の1列目の値(社員ID)を格納
For intX = 0 To intDataCnt
'チェックが入っていた場合
If .Value = True Then
'チェックが入っていた項目の一列目の社員IDを格納する
nameChk = .GetText(1, intDataCnt, objVal(intCnt))
intCnt += intCnt
End If
Next
End With
提示されたソースにコピペミスが無いものとした場合、下記事項が気になります。
VB.NETは全然詳しくなく、実行してみる環境も無いので
間違っているかもしれませんが・・・
1.スプレッドのチェック対象行が変わっていない?
2.GetTextで取得する値が常に最終行の値?
3.「intCnt += intCnt」って、展開すると
「intCnt = intCnt + intCnt」ですよね?
以上です。お役に立てれば幸いです。
こんにちは良です。
>旅芸人さん
お返事ありがとうございます。
すみません。あの式はかなりおかしかったです。
別の問題が発生しましたのでこちらは「解決」といたします。
それが解決できれば終わりそうです。
ちなみにもう少しの問題とは
'スプレッドのチェックボックスの値を格納
With Me.setNameList
'チェックボックスにチェックがされていたら変数にはそこの列の1列目の値(社員ID)を格納
For intX = 1 To intDataCnt
'列の設定
.Col = 4
.Row = intX
'チェックが入っていた場合
If .Value = True Then
'チェックが入っていた項目の一列目の社員IDを格納する
.GetText(1, intX, objVal)
nameChk &= CInt(objVal)
objVal = Nothing
End If
Next
End With
変数nameChkに値がどんどん入っていくんですがこの場合ですと
nameChkに「1001」と「1006」が入った場合「10011006」となってしまいます
それをカンマ区切りにしたい場合はどうしたらよろしいでしょうか?
これは新規に質問いたします
ツイート | ![]() |