検索を繰り返す

検索を繰り返す


after = Find(keyword) //検索の返り値
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

特定の範囲を検索する

特定の範囲を検索する


Find(keyword)

文字列を指定し、検索に合致するセルに移動する

範囲を指定(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(-4121).Address() //下終端セルのアドレス情報
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

セルを絶対移動、相対移動する

セルを絶対移動、相対移動する


Range(セル位置).Select //絶対移動(例:A100、AC32)
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時 予約済

申込みフォーム

お名前 (必須)

メールアドレス (必須)

電話番号

参加可否
 参加 不参加

メッセージ本文
ご希望の時間帯を上記の表を参考にIDでご記載ください。

※希望時間が重なることも想定されますので、
第3希望くらいまであると予約が取りやすいです。

captcha

タグ

2012年11月9日 | コメントは受け付けていません。 |

カテゴリー:UWSC 勉強会

セルの行や列の位置を取得する

セルの行や列の位置を取得する


Row //行
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

このページの先頭へ