こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルでマクロ?を使ってファイルを作るんですが

ロータスで作られてるファイルをエクセルに作り直すことになったんですが
これにマクロが組まれてるようで、それをエクセルでも再現して欲しいといわれました。

マクロを起動すると
強制的にB7にカーソルが移動します。そこからデータ入力が開始になりまして
B7~L7まで入力が終わると、そこに入力されたデータが消えて
B14~L14に入力されます。次にデータを入れるとB15~L15といった感じです。
B列は通し番号で10000から始まり10ずつ増えていきます。
マクロを起動するとB7に次に入れる番号が勝手に入力されます。
おそらくB列の一番下?を参照して+10してるのだと思うのですが。

B7でエンターを押すとC7、入力してエンターを押すとD7に
といった感じで強制的に次に入力する場所にカーソルが移動します。

ただ一箇所だけH7の次が 別のシートに飛びまして
そこで例えば 補助* といれると
その下に補助で始まる品名が(補助シート、補助パネル、補助制御盤など)
候補?としてあらわれて、例えば補助パネルにあわせてエンターを押すと
最初のシートに戻ってI7にそれが入力されているといった感じになってます。
ここは別のシートに品名一覧を最初に作っておいて
そこから呼び出してるんだと思いますが。

入力が終わるとコントロールブレイク?というのでマクロが終了してました。
ロータスは初めて使ったのでさっぱりわかりませんので
うまく説明できなくて申し訳ないです。

エクセルでこんな感じのマクロを組まないといけないのですが
どのようにすればよいのかをわかる方いませんか?


あと、今後このようにマクロやら関数やらを使ったファイルを作ってくれ
という仕事がやたらと回ってきそうなんですが(というか回ってきてる)
殆ど素人の私が一から学んでいく上で
参考になるサイトや本とかありましたら教えていただけたらと思います。

投稿日時 - 2007-05-30 14:07:07

QNo.3042674

すぐに回答ほしいです

質問者が選んだベストアンサー

例えば以下のマクロを入力シートの「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けて、シートに戻ると「ある程度希望に沿う」動作はすると思います。

でも実際の使われ方も分からないので「希望どおり」とはいかないでしょう。ましてや、
>そこで例えば 補助* といれると
などは実際のシートと動きを見なければ作りようがありません。
ですからご自身でマクロを書くときの「参考」程度として見てください

Private Sub Worksheet_Activate()
Dim wkMax As Long
 On Error GoTo end0
 Application.EnableEvents = False
 wkMax = Application.Max(Range("B14:B65536"))
 If wkMax = 0 Then
  Range("B7").Value = 10000
 Else
  Range("B7").Value = wkMax + 10
 End If
 Range("C7").Select
end0:
 Application.EnableEvents = True
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Dim wkMax As Long
 On Error GoTo end0
 If Not Intersect(Target, Range("B7:K7")) Is Nothing Then
  Target.Offset(0, 1).Select
 End If
 Application.EnableEvents = False
 If Target.Address = "$L$7" Then
  wkMax = Application.Max(Range("B14:B65536"))
  If wkMax = 0 Then
   Range("B7:L7").Copy Destination:=Range("B14")
  Else
   Range("B7:L7").Copy Destination:=Range("B65536").End(xlUp).Offset(1, 0)
  End If
  Range("B7").Value = Range("B7").Value + 10
  Range("C7:L7").ClearContents
  Range("C7").Select
 End If
end0:
 Application.EnableEvents = True
End Sub

投稿日時 - 2007-05-30 15:01:36

お礼

物凄く素早い回答をありがとうございます。
この短時間でこうも簡単に構文とか書けるのがうらやましいです。
試しに貼ってみて、動きの方を見させていただきました。
このように書けばこう動くというのが見えて凄く参考になります。
一つ一つの単語(関数?)を検索かけてどういう効果なのかを調べながら
もう少し考えてみます。
ありがとうございます!

入ったばかりの会社で若い人がおらず・・・私も若くは無いですが。
何とかやってくれといわれて苦労してます。

投稿日時 - 2007-05-30 16:46:32

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問