vba裏技,技,論理 - コマンド色々な書き方

①  合計 

あるセルの数から連続するある下のセルまでの足し算合計

 r1=Cells.Find(“数量”).Offset(1).Row

r2=Cells.Find(“合計”).Row

Selection.FormulaR1C1=”=sum(R[” & r1 – r2 & “]C:R[-1]C)”

これは数量のセルと合計のセルの交点に数量が入力されている一つ下から合計が入力されている一つ上までに入力されている数の合計を返す式。この場合の「R」は行、「C」は列である。列は数量の列を示すので、不変である。

勿論ある列から左のある列までの合計足し算も「R」を{C}に替えればできる。

②  計算式

あるセルの上の数+左二つ目の数-左横の数の結果は

 Selection.FormulaR1C1=”=R[-1]C+RC[-2]-RC[-1]”

で表される。「”=R[-1]C+RC[-2]-RC[-1]”」は選択されたセルにこの数式を挿入せよというコマンドである。従って例えば左横の数が変われば当然選択されたセルの数は変化する。但し数式は画面上現れない。

③  日付

question = InputBox(“本日は Enter” & Chr(10) & “明日なら 1” & Chr(10) & “その他は 2” & Chr(10) & Chr(10) & “を入力”)

 If question = “” Then

日付 = Date

ElseIf qestion = 1 Then

日付 = Date + 1

Else

y = InputBox(“今年ですね” & Chr(10) & Chr(10) & “そうなら Enter” & Chr(10) & “そうでないなら 西暦年号をフルに” & Chr(10) & Chr(10) & “入力”)

If y = “” Then

y = Year(Date)

End If

m = InputBox(“月を入力” & Chr(10) & Chr(10) & “今月は Enter” & Chr(10) & “その他は その月を”)

If m = “” Then

m = Month(Date)

End If

d = InputBox(“日にちを入力”)

End If

日付=DateValue(y & “-“ & m & ”-“ & d)

ユーザーには入力が楽にできるようできるだけテンキーだけを使わせるようにすることが肝心だ。プログラマー本位の書き方をすれば

  日付=Inputbox(“日付を入力して下さい”)

とコーデイングすればいいのだが、入力するユーザーは面倒で仕方がない。

  できるだけ親切にサンプルのように書いておけば喜ばれる。

④  顧客名

1. まず「あいうえお」のリストを分かりやすく作る

2. その「あいうえお」の前に連番を入れておく

3. ユーザーに連番を入力させる。そこで

連番=InputBox(“顧客の頭文字の前の連番を入力して下さい”)

顧客頭文字=Cells.Find(連番).Next.Value

とテンキーだけで入力させる。

4. 顧客リストのシートに移動する。そこでは顧客名の前にやはり連番が入れてある。次のコーディングは下記の通りである。

Set 最初=Cells.Find(顧客頭文字)

Set 最後=Cells.Find((顧客頭文字,searchdirection:=xlPrevious)

Range(最初、最後).Select

連番=Inputbox(“顧客名の前の連番を入力して下さい”)

顧客名=Cells.Find(連番).Next.Value

これで顧客名はテンキーを打つだけで特定できたことになる。

⑤ 住所

 住所=InputBox(“全角で郵便番号を入力”)

Msgbox “スペースキーを押して下さい”

 これで郵便番号に該当する住所が表示される。

Vba酒巻修平

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です