Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


214 / 13645 ツリー ←次へ | 前へ→

【81492】VBAでどのようにコードを書いたらいいのかわかりません。 mi 20/9/26(土) 1:55 質問[未読]
【81493】Re:VBAでどのようにコードを書いたらいいの... γ 20/9/26(土) 7:12 発言[未読]
【81494】Re:VBAでどのようにコードを書いたらいいの... mi 20/9/26(土) 9:53 発言[未読]
【81495】Re:VBAでどのようにコードを書いたらいいの... γ 20/9/26(土) 12:28 発言[未読]
【81496】Re:VBAでどのようにコードを書いたらいいの... mi 20/9/26(土) 15:07 発言[未読]
【81497】Re:VBAでどのようにコードを書いたらいいの... γ 20/9/26(土) 17:15 回答[未読]
【81498】Re:VBAでどのようにコードを書いたらいいの... mi 20/9/26(土) 17:51 発言[未読]
【81499】Re:VBAでどのようにコードを書いたらいいの... mi 20/9/27(日) 9:49 お礼[未読]
【81500】Re:VBAでどのようにコードを書いたらいいの... γ 20/9/27(日) 15:52 発言[未読]
【81501】Re:VBAでどのようにコードを書いたらいいの... mi 20/9/27(日) 16:27 お礼[未読]

【81492】VBAでどのようにコードを書いたらいいの...
質問  mi  - 20/9/26(土) 1:55 -

引用なし
パスワード
   a列のどこかに(複数個)入力され登録ボタンを押すと自動的にその入力された行列のc列に田中さんと表示さすにはどのようにプログラムを書いたらよろしいのでしょうか?
VBA全くのド素人なのです。どうか宜しくお願いいたします

【81493】Re:VBAでどのようにコードを書いたらいい...
発言  γ  - 20/9/26(土) 7:12 -

引用なし
パスワード
   一行目からA列の最終行までの各行で以下を繰り返す。
  A列に入力されていたら(cells(k,"A")<>"")
  C列に"田中さん"と入力 (cells(k,"C").Value="田中さん")
Next
というようなことかと思いますが、
どのあたりが不明ですか?
For .. Nextを使った繰り返しですか?
それとも最終行の取得ですか?

【81494】Re:VBAでどのようにコードを書いたらいい...
発言  mi  - 20/9/26(土) 9:53 -

引用なし
パスワード
   実は在庫管理表を作っていてシート1が入力フォームでシート2がシリアル番号を入れているのですが、シート1のa列にお客様管理番号、b列にシリアル番号を入力すると、シート2のa列にindex,mach関数を入れていてシート1のb列と一致したシリアル番号の行のa列にお客様管理番号が表示されているのですが、シート2にボタンフォーム(登録ボタン)を作りその登録ボタンをクリックするとシート2のa列に表示された行のc列に田中さんと表示させたいのです。
sub ボタン1_click()の所にプログラムを書くと思うのですがどのように書けばいいのか悩んでいます。
出来れば同時にa列に入れてる関数も消してしまいたいのですが。
ややこしく申し訳ございませんがよろしくお願いいたします

【81495】Re:VBAでどのようにコードを書いたらいい...
発言  γ  - 20/9/26(土) 12:28 -

引用なし
パスワード
   具体例で説明してください。
   A列    B列
1行
2
のような形式で、具体的な計算式も合わせて説明してもらうと
回答も集まりやすいでしょう。
また、唐突な"田中さん"の意味も併せて書いてください。

# それにしても、最初の質問からはまったく想像がつかない内容ですな。

【81496】Re:VBAでどのようにコードを書いたらいい...
発言  mi  - 20/9/26(土) 15:07 -

引用なし
パスワード
   ▼γ さん:
>具体例で説明してください。
>   A列    B列
>1行
>2
>のような形式で、具体的な計算式も合わせて説明してもらうと
>回答も集まりやすいでしょう。
>また、唐突な"田中さん"の意味も併せて書いてください。
>
># それにしても、最初の質問からはまったく想像がつかない内容ですな。

 シート1(入力フォーム)      シート2(機器のシリアル番号)
 A列     B列          A列     B列    C列
お客様番号 シリアル番号     お客様番号 シリアル番号 機器交換者
0001    1134225               11134111
0002    1134227               11134112
                   0001    11134225   田中
                        11134226
                   0002    11134227   田中
シート2(機器のシリアル番号)のA列に計算式を入れておりシート1(入力フォーム)
のB列のシリアル番号を入力すると、シート2(機器のシリアル番号)に登録されてる
シリアル番号と一致した時A列に自動的反映されるようにしております。
シート2(機器のシリアル番号)に登録ボタンを作ってその登録ボタンを押すと
お客様管理番号が反映された所に機器交換者である田中という文字をいれたいのです。と同時に反映された所の計算式もその部分だけをけしたいのです。
わかりにくく申し訳ありませんでした。
上記でわかるでしょうか?

【81497】Re:VBAでどのようにコードを書いたらいい...
回答  γ  - 20/9/26(土) 17:15 -

引用なし
パスワード
   シリアル番号の桁数が揃っていない(7桁,8桁)ことに気づくのに時間がかかりました。

二つ載せます。
test1はごく基本的なもの。行数によっては時間がかかるかもしれません。
test2はオートフィルタを使ったもの。

いずれもテストをしてから使って下さい。
(こちらの環境ではOKでしたが、そちらの環境では不明です。色々ありますから。
 A列に今回以外の何か値が残っていると、それも対象になるので注意)

Sub test1()
  Dim rng As Range
  Dim k As Long
  With Worksheets("sheet2")
    For k = 2 To .Cells(.Rows.count, "A").End(xlUp).Row
      If .Cells(k, "A").Value <> "" Then
        .Cells(k, "A").ClearContents
        .Cells(k, "C").Value = "田中"
      End If
    Next
  End With
End Sub

Sub test2()
  Dim rng As Range, body As Range
  
  Set rng = Worksheets("Sheet2").Range("A1").CurrentRegion
  Set body = Intersect(rng, rng.Offset(1))
  
  rng.AutoFilter Field:=1, Criteria1:="<>", Operator:=xlAnd
  body.Columns(3).Value = "田中"
  body.Columns(1).ClearContents
  rng.AutoFilter
End Sub

【81498】Re:VBAでどのようにコードを書いたらいい...
発言  mi  - 20/9/26(土) 17:51 -

引用なし
パスワード
   ▼γ さん:
>シリアル番号の桁数が揃っていない(7桁,8桁)ことに気づくのに時間がかかりました。
>
>二つ載せます。
>test1はごく基本的なもの。行数によっては時間がかかるかもしれません。
>test2はオートフィルタを使ったもの。
>
>いずれもテストをしてから使って下さい。
>(こちらの環境ではOKでしたが、そちらの環境では不明です。色々ありますから。
> A列に今回以外の何か値が残っていると、それも対象になるので注意)
>
>Sub test1()
>  Dim rng As Range
>  Dim k As Long
>  With Worksheets("sheet2")
>    For k = 2 To .Cells(.Rows.count, "A").End(xlUp).Row
>      If .Cells(k, "A").Value <> "" Then
>        .Cells(k, "A").ClearContents
>        .Cells(k, "C").Value = "田中"
>      End If
>    Next
>  End With
>End Sub
>
>Sub test2()
>  Dim rng As Range, body As Range
>  
>  Set rng = Worksheets("Sheet2").Range("A1").CurrentRegion
>  Set body = Intersect(rng, rng.Offset(1))
>  
>  rng.AutoFilter Field:=1, Criteria1:="<>", Operator:=xlAnd
>  body.Columns(3).Value = "田中"
>  body.Columns(1).ClearContents
>  rng.AutoFilter
>End Sub
ありがとうございます。色々わかりにくく書いてしまいます申し訳ありません。
緊急がはいりこれから仕事なのでまたあとで確認してみます。
入力フォームは毎日clearにしてしようしますので機器シリアル番号番号のA列は常に残ったままです。機器は約12000台位ありこのシリアル番号の機器は0001というお客様宅に田中が取り付けに行ったという管理なのです。後々は日付も管理しますが始めたばかりでどれ位管理しないとだめなのか全く不明なのでとりあえず思いついた方法でやってみようかと。

【81499】Re:VBAでどのようにコードを書いたらいい...
お礼  mi  - 20/9/27(日) 9:49 -

引用なし
パスワード
   お忙しい中回答して頂きありがとうございます。質問なのですがClearContentsならお客様番号が消えてしまいませんでしょうか?
計算式のみ消したいので、ClearContentsはつかえなくまた今現在の在庫数が1200台ありあと少なくとも1万台程増える予定なのでかなりの時間がかかり現実的ではなかったのであきらめます。設置者で田中をプルダウン方式にしwithをつかい
.valu=.valuでシンプルにして上手くいきましたのでその方式で管理しようかと。使う人はExcelじたい使えない人もいて信用も出来ない人ばかりなので一つずつ確実に確認していったほうがミスも少ないのでは?と皆さんの意見もあったので

【81500】Re:VBAでどのようにコードを書いたらいい...
発言  γ  - 20/9/27(日) 15:52 -

引用なし
パスワード
   シート2のA列にはすでに""ではないシリアル番号が表示されているものがあるなら、
<>""だけでは判定できないですよ。
>A列に今回以外の何か値が残っていると、それも対象になるので注意)
と書いたとおりのことだったわけですね。

シート2の例に、シリアル番号が残っているケースも書いてもらうと間違いがなかった。
最初に、シート2のA列に値が表示されたら、
という質問だったのでそれに沿って回答しました。

フィルタオプションを使って、絞り込んだらどうですか?
マクロ記録をとって研究してみて下さい。

【81501】Re:VBAでどのようにコードを書いたらいい...
お礼  mi  - 20/9/27(日) 16:27 -

引用なし
パスワード
   ごめんなさい素人な者で。最初にシート2A列に記載されてる計算式のみも同時に消したいと書いいたのですが。
A列にはすでに設置ずみのお客様固有番号(個人情報保護法)により設置されたお客様名は書けないのです。
シリアル番号もお客様番号も設置者も常に残っています。
正直文章で全てを伝えるって難しいですね。大変申し訳ありませんでした。

214 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free