2007年7月22日日曜日

第25回目 ジャンプのマクロ

○第25回目 ジャンプのマクロ

 同一シート内への任意場所へジャンプするマクロを考えます。
 ジャンプ先の与え方は、列-行とします。26-15とかですね。
 いやいや、列記号のほうがやりやすい。すると、aa-15とかになりますね。
 今カーソルがあるセルに注目して、そのセルと同じ列で行を指定するとか、同じ行で列だけ指定する、というものありそうですね。
 これらを全部まとめてしまいましょう。

 ポイントは、入力値の分析・分解と、ジャンプです。

 ジャンプはそのセルに行けばいいのですから、
 Cells(gyo, retu).select で十分ですね。

 入力形式は、27-20、AA-20、27-、AA-、-20となります。後半の三つは、指示されていない部分はアクティブセルの行または列を使います。
 アクティブセルの座標は、
ActiveCell.Select
bbb = Selection.Address
retu = Range(bbb).Column
  gyo = Range(bbb).Row
 でした。
 
 さて入力値の分解です。
 "-"の位置が問題になります。
 "-"の位置は、
  p1 = InStr(hh, "-")となります。
 ない場合は、指定間違いですので、処理を終了させましょう。 exit sub
 位置が1の場合は、列の省略形です。
 位置が1でない場合は、その位置が、文字の長さと一致していると、行の省略形となります。
 文字の長さは、 len(AA) となります。

列部分が数値でなければ、列記号による指定です。これは、
 if IsNumeric(Left(hh, p1 - 1)) = true で判断できます
 もう一つ大切なのは、列記号を列番号に変える方法です。
 列記号がAAにはいっているとすると、
 Range(AA & "1").column で列番号になります。
 
 
 あとは、変数名の整合性と、ロジックの組み立てだけです。
 がんばって作ってみてください。
 

0 件のコメント: