検索を繰り返す
検索を繰り返す
FindNext(after) //次を検索:検索の返り値を引数にする
FindPrevious(after) //前を検索
検索を繰り返す
「特定の範囲を検索する」で、検索の方法について説明しました。
この記事では複数検索にヒットする状況の場合の、繰り返し方法を説明します。
複数の検索条件に合致するセルがあった場合に、次のセル、次のセルと移動する処理を実現するためFindNextやFindPreviousを使います。
EXCEL = CREATEOLEOBJ("Excel.Application") EXCEL.visible = True EXCEL.workbooks.add() FOR i = 0 TO 3 EXCEL.ActiveCell.value = "a" + i EXCEL.ActiveCell.Offset(1,0).Select NEXT After = EXCEL.Range("A1:A10").Find("a") EXCEL.Range("A1:A10").Find("a").Select EXCEL.Range("A1:A10").FindNext(After).Select EXCEL.Range("A1:A10").FindPrevious(After).Select
メッセージを出しながら検索を繰り返す
上記のスクリプトでは、一瞬のうちに処理が完了してしまうので、挙動しているのか確認が難しいです。
次のスクリプトで、メッセージによる処理のコメント、背景色の変更が行われるので、検索の繰り返しがわかりやすく確認できます。
スクリプトは下記のようになります。
タグ
2012年11月28日 | コメントは受け付けていません。 |
カテゴリー:UWSCとExcel
特定の範囲を検索する
特定の範囲を検索する
文字列を指定し、検索に合致するセルに移動する
範囲を指定(Range(X:X)し、Findを実行することで、該当キーワードに一致するセルの位置情報を取得できます。
以下のサンプルにおいて、「a」と入力してから、セルの移動を行い、その後でFindで見つけた位置を選択しています。
EXCEL = CREATEOLEOBJ("Excel.Application") EXCEL.visible = True EXCEL.workbooks.add() EXCEL.ActiveCell.value = "a" EXCEL.ActiveCell.Offset(10,10).Select A = EXCEL.Range("A1:J10").Find("a").Select
検索にヒットした箇所の背景色を変えてみる
上記のスクリプトでは、一瞬のうちに処理が完了してしまうので、本当に挙動したかわかりにくいです。
次のスクリプトで、メッセージによる処理のコメントや、検索結果セルの背景色の変更を実施してみます。
これで処理の流れがわかりやすくなると思います。
スクリプトは下記のようになります。
タグ
2012年11月24日 | コメントは受け付けていません。 |
カテゴリー:UWSCとExcel
対象セルを含む領域の終端を取得する
対象セルを含む領域の終端を取得する
end(-4161).Address() //右終端セルのアドレス情報
end(-4159).Address() //左終端セルのアドレス情報
end(-4162).Address() //上終端セルのアドレス情報
終端を取得する
下記のサンプルでは3 × 3の範囲で値を入力した範囲の終端のアドレスを取得しています
EXCEL = CREATEOLEOBJ("Excel.Application") EXCEL.visible = True EXCEL.workbooks.add() FOR A = 0 TO 2 EXCEL.ActiveCell.Offset(A,0).value = RANDOM(30) FOR B = 0 TO 2 EXCEL.ActiveCell.Offset(A,B).value = RANDOM(30) NEXT NEXT PRINT "下終端:" + EXCEL.ActiveCell.End(-4121).Address() PRINT "右終端:" + EXCEL.ActiveCell.End(-4161).Address() PRINT "左終端:" + EXCEL.ActiveCell.End(-4159).Address() PRINT "上終端:" + EXCEL.ActiveCell.End(-4162).Address() NEXT
上記のスクリプトを実行することで、終端の情報が取得できます。
冒頭の例や、サンプルスクリプトではAddressで位置情報を取得していますが、
Selectによる移動、Valueによる値取得も行えます。
30 × 30の範囲で終端のアドレス、値を取得する
上記のサンプルより規模を大きくし、
かつ位置情報以外にもセル移動や値取得をしてみましょう。
スクリプトは下記のようになります。
タグ
2012年11月21日 | コメントは受け付けていません。 |
カテゴリー:UWSCとExcel
セルを絶対移動、相対移動する
セルを絶対移動、相対移動する
ActiveCell.Offset(行, 列).Select //現在位置から相対移動
セルを移動してみる
絶対移動で行のアルファベット、列の数字を組み合わせたセル位置を入力し、Selectすることで該当場所へ移動できます。
ActiveCell.Offsetで行の数字、列の数字を入力し、Selectすることで該当場所へ移動できます。
EXCEL = CREATEOLEOBJ("Excel.Application") EXCEL.visible = True EXCEL.workbooks.add() //絶対移動 EXCEL.Range("A30").Select //相対移動 EXCEL.ActiveCell.Offset(1,2).Select NEXT
上記のスクリプトを実行することで、セルの移動結果を確認できます。
まずはA30の位置に移動、
そしてそこから下行に1つ、右列に2つ相対移動します。
セルの位置を確認しながら実行する
上記のサンプルだと、一瞬のうちに移動してしまうので確認がしづらいです。
分かりやすい様にメッセージを出しながら実行してみましょう。
スクリプトは下記のようになります。
タグ
2012年11月14日 | コメントは受け付けていません。 |
カテゴリー:UWSCとExcel
2012年12月8日(土)UWSC Cafeを開きます
日ごろのご愛顧ありがとうございます。
第二回目のUWSC CAFEを開催します!
今回は皆様からリクエストの多かったマンツーマンのセミナーになります。
勉強を始めたけど、分からないところがあって止まっている
作りたいスクリプトのアドバイスが欲しい
勉強のやり方を教えて欲しい
などなど、できる限り参加していただく方の希望を叶えたいと思います。
12/8(土) UWSC CAFE詳細
2012/12/08(土) 13:00~20:00 いずれかの時間帯
【参加費】
5,000円/1コマ
【場所】
高南自治会館
アクセス方法はコチラ
【住所】
〒166-0003 東京都杉並区高円寺南3-36-16
【持ち物】
ノートPC推奨
※必須ではありませんが、説明時などスムーズになります。
※またUQ WiMAXなどの無線LANをお持ち頂くとネットの接続時もスムーズになります。
【注意事項】
予め聞きたい内容をご連絡頂けると、スムーズに進むかと思います。
下記のスケジュールで予約を受付けます。
早いもの勝ちです!
※予約状況の更新が遅れる場合がございます。何卒ご了承ください。
※次のコマとの入れ替えの為残り5分を切った時点で、切りの良いところで終了する点ご了承ください。
ID | 時間帯 | 予約状況 |
---|---|---|
1 | 13-14時 | 予約済 |
2 | 14-15時 | 予約済 |
3 | 15-16時 | 空き |
4 | 16-17時 | 予約済 |
5 | 17-18時 | 予約済 |
6 | 18-19時 | 予約済 |
7 | 19-20時 | 予約済 |
申込みフォーム
タグ
2012年11月9日 | コメントは受け付けていません。 |
カテゴリー:UWSC 勉強会
セルの行や列の位置を取得する
セルの行や列の位置を取得する
Column //列
新規ワークブックを追加した際の現在のセルの行や列の位置を取得する
EXCEL = CREATEOLEOBJ("Excel.Application") EXCEL.visible = True EXCEL.workbooks.add() PRINT "列の位置:" + EXCEL.ActiveCell.Row PRINT "行の位置:" + EXCEL.ActiveCell.Column
上記のスクリプトを実行することで、結果を確認できます。
ワークブックを新規追加すると、
A1の位置にセルが置かれています。
行は行番号となり、
列の場合はAから採番されているので、対応する数値が返ります。
セルの位置を変更してから取得してみる
上記のサンプルだと、結果がどちらも1となります。分かりやすい様にセルの位置を変えてから、再度取得してみましょう
サンプルは下記のようになります。
タグ
2012年11月7日 | コメントは受け付けていません。 |
カテゴリー:UWSCとExcel