• 締切済み

VBAについて

すいません、VBA初心者です。 以下の事をやる時にはどうしたらいいか教えて頂きたく思っています。 現在、社内でカードリーダーを使った荷物の受け取り管理を行えるVBAを構築しようと奮闘しています。 仕組みは簡単で、受け取り番号を指定入力して、受取人が自分のIDをカードリーダーにかざし、受取人情報取得し、確定ボタンを押すと授受リストへコピペされるというものです。 現在、VBAで入力フォームを作成しており、受け取り番号入力欄を3つあり、デフォルト値(1233-00)が設定されています。 1) 1233-00 (Text Box1) 2) 1233-00 (Text Box2) 3) 1233-00 (Text Box3) ここで 1〜3の入力された受け取り番号が授受リストに存在しているかどうかの検索をかけて検証しながら作業完了させたいのですが、、、 1にしか受け取り番号が入力されていない場合(他はデフォルト値のままを意味)は1の数字のみを授受リストに検索をかけてコピペ。 1と2のみにしか受け取り番号が入力されていない場合は1と2の数字のみを授受リストに検索をかけてコピペ。 1〜3すべてに受け取り番号が入力されている場合はすべてを授受リストに検索をかけてコピペ。 これを実現するにはどのようなコードを組んだらいいのでしょうか? 教えて下さい

みんなの回答

回答No.3

すみません、文書が煩雑で要件を読み取れません。 しかし「コピペ」という言葉が散見されます。 これをまともにVBAでコピーアンドペーストするのだけは 避けてください。 あるセルの値からコピーしたいセルの値に直接代入して下さい。 例:Thisworkbook.worksheets(1).cells(1,1).value = Thisworkbook.worksheets(2).cells(2,3).value というように、書いてください。 人間が操作することを、そのままプログラムにさせるのは無駄です。 FreeBSDから書いており、手元にofficeが無いので、 記憶を頼りに書いていますので、間違ってたらすみません。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.2

> 受取人が自分のIDをカードリーダーにかざし、受取人情報取得し この部分はどうするのか分かりませんが > 受け取り番号を指定入力して ということなので 3が新規入力されて1と2が未入力の場合とかどうするのか不明なので以下の方法で試してみて下さい。 1,2,3無関係で新規入力されている受け取り番号を対象にするとした場合 (質問以外の入力がされることが無い場合も) Private Sub CommandButton1_Click() Dim mArray As Variant Dim i As Long mArray = Array(Me.TextBox1.Value, Me.TextBox2.Value, Me.TextBox3.Value) For i = 0 To UBound(mArray) If mArray(i) <> "1233-00" Then '授受リストに検索をかけてコピペのコード End If Next End Sub 質問の状態以外は認めないとした場合(たとえば1,3が入力されていても1だけ検索) Private Sub CommandButton1_Click() Dim mArray As Variant Dim i As Long mArray = Array(Me.TextBox1.Value, Me.TextBox2.Value, Me.TextBox3.Value) For i = 0 To UBound(mArray) If mArray(i) <> "1233-00" Then '授受リストに検索をかけてコピペのコード If i = UBound(mArray) Then Exit For ElseIf mArray(i + 1) = "1233-00" Then Exit For End If End If Next End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • kon555
  • ベストアンサー率52% (1761/3379)
回答No.1

 お望みの回答ではないと思いますが、アドバイスとして一つ。  質問文を読む限り、どうもかなりガッチリと社内の業務の一環として運用し、かつ複数名が使用するモノを想定しているように見受けられますが、それを「初心者です。どのようなコードを組んだらいいのでしょうか?」という技量で作るのはやめておいた方がいいです。  想定外の入力でエラーが出る、業務のやり方が変わる、何か新たな要望が出る、そうした事態の際にどうしようもなくなります。  自分1人で使うちょっとした便利ツールならともかく、業務に組み込み多人数で使用する『システム』には相応の責任が伴います。  きちんと予算をとり、既存のソフトやシステムを購入するか、適したモノがなければシステム屋さんに外注すべきです。結局それが一番安く済みます。  もしこの件が、貴方も誰か上役にスキルオーバーの指示をされているなら「私には無理です」と断りなさい。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAについて教えてください。

    下記の手順でVBAを組みたいのですが どのようにすればよいかご教示いただけないでしょうか。 手順 (1)【A様sheet】>E9に入っている数字を<請求書sheet>E11にコピペ。 (2)【A様sheet】>J9に入っている数字を<請求書sheet>E12にコピペ。 (3)【A様sheet】>E3に入っている数字を<請求書sheet>E13にコピペ。 (4)<請求書sheet>E13に―100。  (5)【A様sheet】>A1に入っている文字列を<請求書sheet>C11以下にコピペ。 ※(2)が〈0〉だった場合には何も入力せず、(3)に進む。 ※(4)-100は固定数値です。 ※(5)は数字が入った分だけ繰り返します。 完成系は添付の画像のような結果です。 毎月数100件の処理が発生するためVBAで行いたいと思っています。 どうぞよろしくお願いいたします。

  • エクセルVBAについて質問です。

    初心者なので説明が足りなかったらごめんなさい。 顧客リストを作成するためのユーザーフォームを作成しました。そして、 リスト内の顧客情報を編集する場合には、まず顧客検索するためのユーザーフォーム(テキストボックスに顧客ID(数字のみ)を入力して検索する)で検索を行い、発見したら編集用のユーザーフォームが開きます。 これまでにエクセルで管理されている顧客リストをいちいち登録用のユーザーフォームで登録するのが面倒なので、既存の顧客情報はコピペでエクセルに直接移しました。 ここで困った現象がおきているのですが、登録用のユーザーフォームを使って登録した顧客は検索用のユーザーフォームで検索すると見つかるのですが、 コピペで移してきた顧客は発見されません。(検索条件である顧客IDはちゃんとリストに存在します。) ユーザーフォームを使って登録した顧客ID(数字のみ)はテキストボックスを介しているのでリスト内では文字列として登録されています。 それに対してコピペした顧客IDはセルの書式設定が標準であったため、これが原因かと思い文字列に変えたのですが、相変わらず検索にヒットしません。 何が原因で検索されないのでしょうか。 ちなみに検索に使っているのはFor...Nextステートメントです。 何とぞよろしくお願いします。

  • VBAマクロで検索をしたい

    VBAマクロで検索をしたい 1つの列に8~11桁の数字がならんでいます。 別シートに検索シートを作り、下4桁(右から4桁)で抽出したすべての数字を出すにはどうしたらいいでしょうか?><; 例)  シート1   A列 1 0001234555 2 12345678  3 3211234555 4 987654321 5 3211234555 6 1111114555 7 12344555 8 あ123い4555  シート2  A列検索  4555 ← 入力   ↓以下が検索される  0001234555  3211234555  3211234555  1111114555  12344555  あ123い4555 ※同じ数字が並ぶ場合もあり、その場合は複数あることを示すため、その個数分出して欲しい。 ※右4桁は数字のみだがそれ以外はひらがな、カタカナが入る場合がある どなたか教えてください><;

  • リストの数字を自動入力するツールを探しています。

    リストの数字を読み取り、キーボード入力をしてくれるフリーソフトを探しています。 『Aリスト』にある10桁の会員番号を『Bリスト』へ入力すると云う作業をしているのですが…… 数が膨大なので、手打ちでやると、非常に手間が掛かっています。 『Aリスト』はエクセルで作られたリストですが、 『Bリスト』は顧客管理ソフトなのでコピペで貼り付けも出来ません。 『Aリスト』 0000000000 2222222222 3333333333 4444444444 のように会員番号が並んでます。 『Bリスト』 □□□□□□□□□□ □□□□□□□□□□ □□□□□□□□□□ □□□□□□□□□□ のように数字を入力するマスがあります。 この作業を自動でしてくれるようなフリーソフトは無いでしょうか? 検索しても見つけきれなかったモノですから(-.-;) ご存じの方は教えて頂けると非常に助かります。 よろしくお願いします。

  • VBAでの質問です。

    VBAで予約フォームを作っているのですが、 入力画面(userform1) 名前 住所 希望日 希望部屋番号 電話番号 の入力をするのですが、 名前だったら、日本語じゃないとエラー(例えば、数字入力されたらエラー)表示 電話番号だったら、数字じゃないとエラー(例えば、ひらがなやかたかなで入力されたらエラー)表示 をしたいのですが、やり方がわかりません。 分かる方いましたら、教えてください。 エラー表示は、userform1でラベルに表示されるようにしています。

  • エクセルvbaで発音記号を入力するには

    エクセルvbaで発音記号を入力したいのですが、例えば https://en.wikipedia.org/wiki/Schwa の文字をA1セルに入力するにはどういうコードでできますでしょうか。 ネットからコピペすればいいのですが、大量に入力したい場合は手間が掛かり過ぎます。 Chr関数を使えばいいのかと思いますが、そもそもその文字のコード番号がわかりません。 よろしくお願いします。

  • 1~10までの整数のみを入力できるようにしたい。

    主にExcel2007または2003を使っています。 1~10までの整数のみを入力できるようにしたいのです。 入力規則を設定しても、他のファイルからコピペされれば4.3みたいな数字が入ってしまいます。 VBAを使って、コピペの場合でも入力する値を制限することは可能でしょうか? 識者の方、よろしくお願いします。

  • スライドのスライド番号を取得したいのですがVBAで

    パワポのVBAについて教えてください。 1あああ 2いいい 3ううう のようにした時に、 「ううう」のスライドのスライド番号を取得したいのですがVBAで可能でしょうか? そもそも 全てのスライドをFor Eachでループさせて ブレースホルダに「ううう」が入力されてるかどうかを検索する方法がわかりません。 ご回答よろしくお願いします。

  • エクセルVBAでの検索機能です

    エクセルのVBAでリストの検索をしたいと思います エクセルは2002です 下記のリストで、例えばA2からB5のリストの中からE2に検索項目商品“A”と入力したら、G2に検索結果のすべての商品名と価格を貼り付けるようにするには、どうすれば良いか教えてください。 宜しくお願いします。 |―|-A-|-B-|-C―|-D-|-E-|-F―|-G-|-H-| |1|商品|価格|――|――|検索|――|商品|価格| |2|-A-|\300|――|――|――|――|――|――| |3|-B-|1000|――|――|――|――|――|――| |4|-A-|\350|――|――|――|――|――|――| |5|-C-|1500|――|――|――|――|――|――| 

  • エクセルVBA 教えてください

    VBA初心者です。 現在エクセルで書類作成のテンプレート原本を作成しています。 その中に 1.携帯電話 2.ポケットベル 3.固定電話 4.その他 というように複数の中から選択する項目があります。リストボックスでとも考えていたのですが、選ばれていない項目も表示しておきたいので、数字にオートシェイプで丸を付けてもらおうと思っています。 そこで質問なのですが、この書式テンプレートを入力する際には入力フォームを呼び出します。そのフォーム内で □1.携帯電話 □2.ポケットベル □3.固定電話 □4.その他 のように複数選択可能なチェックボックス形式の入力欄を作成します。入力フォームの全ての項目が入力され、実行ボタンを押したのち、チェックの入れられた数字の上にのみオートシェイプで丸が入ることは可能でしょうか? 何分VBAの素人なので、何を書いている部分なのか等をわかりやすく教えてくれると幸いです。 よろしくお願いします。