VBAなんでも質問スレ Part2 [転載禁止]©2ch.net

1デフォルトの名無しさん2015/05/21(木) 10:52:44.71ID:KLv0vQmm
VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK

ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください

VBAを開発環境としていろいろ作っちゃいましょう

前スレ

VBAなんでも質問スレ
http://peace.2ch.net/test/read.cgi/tech/1342087380/

関連スレ

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419718732/

Access VBA 質問スレ Part1
http://peace.2ch.net/test/read.cgi/tech/1328536426/

VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/

Excel総合相談所 118 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/bsoft/1430352555/

471デフォルトの名無しさん2017/12/27(水) 11:51:23.41ID:3pB/qkZc
python入る言うてもどのバージョンかとかライブラリかとかアップデートはするのかとか色々課題あるだろ

472デフォルトの名無しさん2018/01/25(木) 12:20:39.14ID:HAPJI9RJ
質問なのですが、別表の項目から他の表の項目(セルの位置)にデータを飛ばしたいんですが、できますか?

473デフォルトの名無しさん2018/01/25(木) 12:55:31.94ID:MSU0yE0z
できます。

474デフォルトの名無しさん2018/01/25(木) 13:07:55.93ID:HAPJI9RJ
ご教授ねがいたいのですが

475デフォルトの名無しさん2018/01/25(木) 13:19:32.33ID:Hqq1J0vI
×ご教授
○ご教示
あと、見も知らぬ他人にタダで教えてもらうんならそれ相応の作法は必要じゃないのって、端で見てて思う

476デフォルトの名無しさん2018/01/25(木) 13:38:48.56ID:ULmYwE81
>>472
もっと具体的にどんなのが作りたいか書いてもらわないと難しいです。

5列目を変更した時に同じシートの1列目を選択するようにしたい、とか。
あるいは、別のシートのA1セルを選択したいとか。

飛ばすといっても、そのタイミングが変更した時なのか、選択したときなのか、特定の数値が入ったときなのか。

477デフォルトの名無しさん2018/01/25(木) 14:35:16.74ID:HAPJI9RJ
こんな感じの表Aがあって、似たような表Bが別シートにあるんですけど、
表Aのセルの色を付けると同時にB表のセルのイロを変える

または、セルの文字も一緒に持ってくる

できますか?
https://i.imgur.com/u3mc1ot.jpg

478デフォルトの名無しさん2018/01/25(木) 14:36:19.20ID:HAPJI9RJ
すいません、よろしくおねがいします

479デフォルトの名無しさん2018/01/25(木) 16:44:16.87ID:WTDPcIn+
できるけど、コード教えてもらって、それを標準モジュールなり、sheet1モジュールなりに書き写せます?
それを使いやすいように改良できます?

480デフォルトの名無しさん2018/01/25(木) 17:08:48.29ID:WTDPcIn+
できるって書いたけど、色を変えるのをイベントにするのは無理だから、マクロをボタンに登録するか、何かほかのイベントに割り当てるかしないとダメだわ。

481デフォルトの名無しさん2018/01/25(木) 17:26:04.37ID:HAPJI9RJ
書き写しくらいはできます!

482デフォルトの名無しさん2018/01/25(木) 18:45:37.13ID:/25QAGMM
>>477
RaiseEventを使う

483デフォルトの名無しさん2018/01/25(木) 19:01:57.40ID:KaDWqQ6/
>>482
お忙しいのにみなさんありがとうございます
ちょっと詳しく説明すると、こんな感じです
左のsheetの表は一項目につき3段、その3段目の情報で仮にA,Bが記載されてある色つきのセルの情報のみを抜き出し、右にある別sheetの表に反映させたいのです

分かりづらかったらすいません

どのように組めば行けるのか、詳しく教えて頂くとありがたいです


https://i.imgur.com/M5bti06.jpg

484デフォルトの名無しさん2018/01/26(金) 08:27:26.24ID:zry4uQ/L
指1本で核ボタン押せる

485デフォルトの名無しさん2018/01/26(金) 08:28:00.51ID:zry4uQ/L
>>484
スマン激しく誤爆

486デフォルトの名無しさん2018/01/26(金) 09:48:49.15ID:zry4uQ/L
おわび
御貴兄たち、何卒添削お願いします。変数colとかrowのほうが良かったな
Const OFFSET_X = 1
Const OFFSET_Y = 1
Const BLOCKS_Y = 3
Const WIDTH = 6
Const HEIGHT = 6
Private Sub CommandButton1_Click()
  Dim src As Worksheet
  Dim dst As Worksheet
Dim x As Integer, y As Integer
Dim des_x As Integer, des_y As Integer
  Set src = ThisWorkbook.Sheets("sheet2")
  Set dst = ThisWorkbook.Sheets("sheet3")
  dst.Cells.Clear
  des_x = 1 + OFFSET_X
  des_y = 1 + OFFSET_Y
  For y = 1 + 3 To HEIGHT * BLOCKS_Y Step 3
    For x = 1 To WIDTH
      If src.Cells(y, x + OFFSET_X).Value <> "" Or _
        src.Cells(y, x + OFFSET_X).Formula <> "" Or _
        src.Cells(y, x + OFFSET_X).Interior.ColorIndex <> xlNone Then 'エラー判定は無し
        src.Range(src.Cells(y, x + OFFSET_X), src.Cells(y, x + OFFSET_X)).Copy _
           Destination:=dst.Cells(des_y, des_x)
      End If
      des_x = des_x + 1
    Next x
    des_x = 1 + OFFSET_X
    des_y = des_y + 1
Next y
End Sub

487デフォルトの名無しさん2018/01/26(金) 10:05:41.40ID:cX+GX3c5
これ色付き以外のセルにも文字列は入ってるんだよな?

4884862018/01/26(金) 11:04:59.89ID:HJtMv0FJ
あー〜スマン
>表Aのセルの色を付けると同時にB表のセルのイロを変える
この仕様を見逃してたわ
見なかったことにしてくれ

489デフォルトの名無しさん2018/01/26(金) 19:09:34.97ID:o3fzSqcU
>>487
入ってます
欲しいデータは1色で統一されてますが
ちなみに他に文字が存在しており、それらはほかの色で存在しています

>>488
お手数お掛けしております
ほんとにありがとうございます

色で判断をなくして、(条件で変えるので)>>483に書いてある欲しいデータ4種類を転記させるものでも良いのですが、難しいでょうか

490デフォルトの名無しさん2018/01/26(金) 19:28:54.13ID:s5W3X/Fy
できると思うけど、見本の写真がよく見えない。

4914902018/01/26(金) 21:06:22.97ID:K81AssZX
パソコンで見たら見えた。
これ、変更したところだけ反映したいの?
それとも、元表の3行目全てを反映したいの?
というか、データだけなら=で結べばいいのでは?

492デフォルトの名無しさん2018/01/26(金) 21:17:19.09ID:o3fzSqcU
>>491
そこまでして見ていただいて申し訳ないです

三段目だけを反映させたいのですが、その手書きの表の列、行ともに結構長い表なのです
手っ取り早く一瞬で作れたらと思って質問した次第です

493デフォルトの名無しさん2018/01/26(金) 21:21:20.15ID:Vo+OzJVu
Excel VBAスレいけば寄ってたかってみんなで教えまくってくれんじゃね?行けば?

494デフォルトの名無しさん2018/01/28(日) 00:24:57.82ID:NUwCXosq
>>493
いまはゴキブリが湧いてるからあっちは行かない方が良さそう

4954902018/01/28(日) 01:47:10.17ID:xXGJMKWE
>>492
結構長いというけど、どれくらい?
数十列数十行くらいで、1回だけなら右にオートフィルして、行ごとコピペするのが早いと思う。
=で繋ぐだけなら1回やっておけば、あとは自動でかわる。

マクロでやるとしても、数式で=を入れればいいのか、値を持ってくるようにした方がいいのか。
表の範囲指定はどうするか?
current.regionか、usedrangeか、直接指定するか。(元の表に罫線が引いてあるか、空欄があるかで変わってくる)

496デフォルトの名無しさん2018/01/28(日) 14:19:41.49ID:Erw8GBm0
数式だって絶対参照、相対参照をきちんと意識して書けばRange=数式でアドレスに併せて変えてくれるから1回の代入で終わる。

以外と知らずに1セルずつ代入する人もいるけど。

497デフォルトの名無しさん2018/01/28(日) 14:51:25.14ID:fbEFMaxh
>>495
3段目に毎回同じ文字がくるとは限らず、最低3種類の文字がくるので、とりあえずif分使って作成しました

横に日数1年分、縦に各項目50程です

絵にある通り、全く同じ表をコピペして使いますが(線あり)、ほんとは転記先の表は1段で済ませたい所でした
日替わりで最低3種類のうちのひとつが返ってきたらいいので

わかりづらくてすいません

498デフォルトの名無しさん2018/01/28(日) 14:52:48.13ID:fbEFMaxh
>>496
そうなんです
やり方を知らないので今は1セルずつ代入しています

4994902018/01/28(日) 17:27:50.85ID:z3VzjyNA
>>498
fast-uploader.com/file/7072682105190/

目的のものと全然違うかもしれないけど作ってみました。
データの最初のセルだけは自分で指定してください。

5004902018/01/28(日) 17:29:06.20ID:z3VzjyNA
パス 0128

501デフォルトの名無しさん2018/01/28(日) 18:08:34.70ID:745uG8BQ
>>499
乙です
老婆心ながらアップする前に「ブックの検査−ドキュメント検査」したほうがよろしいかと。

5024992018/01/28(日) 18:41:56.85ID:UOLejiJq
サンクスです。
渡辺明さんになるところだったか。

503デフォルトの名無しさん2018/01/28(日) 21:37:23.53ID:4m06L1KL
>>499
見れないのですが、消されたのでしょうか

504デフォルトの名無しさん2018/01/28(日) 23:12:38.58ID:Erw8GBm0
>>498
やり方も何も、例えばA1からA列に1、2、3、・・・と入力されてるとしてRange("B1:B10").Value="=A1"を動かしてみな。
全部A1を参照したいならRange("B1:B10").Value="=$A$1"とする。
本当はValueではなくてFormulaだけどValueでもちゃんと相対参照してくれる。

5054992018/01/28(日) 23:23:45.53ID:9bi4pzKP
fast-uploader.com/file/7072704922415/

パス 0128

506デフォルトの名無しさん2018/01/29(月) 00:30:08.47ID:flk0qVid
>>504
>>505
みなさん、無知ですみません
ほんとに助かります
ありがとうございます

>>505
ひとまずダウンロード致しましたので明日内容を確認します
お時間割いて作っていただいて、ただただ感謝です
おやすみなさい

507デフォルトの名無しさん2018/01/29(月) 00:48:46.52ID:rWIIKeXW
下から5行くらいにtext ってあるの、valueに直した方がいいかも。
textでも問題ないかもしれないけど。

508デフォルトの名無しさん2018/01/29(月) 08:59:53.06ID:flk0qVid
おはようございます

昨日ダウンロードさせてもらったファイル開かないのですが、どうやったら開きますか?

509デフォルトの名無しさん2018/01/29(月) 18:12:06.82ID:acQcDZwj
エクセルのバージョンは?
当方2013で開けましたよ。

510デフォルトの名無しさん2018/01/29(月) 21:31:37.99ID:flk0qVid
>>509
2010です

すいません、どうやって開きました?

511デフォルトの名無しさん2018/02/03(土) 14:43:09.33ID:xQQ90zOV
プログラマですがvbaの初心者です。
C,java,lisp,python 基本的な言語とその意味論はだいたい知ってます。
vbaで書籍を探すと、大抵業務問題の解決という文脈で本が書かれているようですが
純粋に言語的な機能を抽出した言語仕様、あるいはリファレンスに相当するものを求めています。

そのような書籍のうちもっとも簡潔に記述されているような本はないでしょうか?

512デフォルトの名無しさん2018/02/04(日) 02:06:08.04ID:Nq0C9+DR
>>511
本職のPGならマイクロソフトのディベロッパーセンターの英語版リファレンスを直に読んだ方が良い
あと、場合によってはVBAとほぼ同じシンタックスになってるVB.NET用のMicrosoft.Office.Interopクラス以下の各アプリケーションのオブジェクトのリファレンスの方が役に立つこともある

513デフォルトの名無しさん2018/02/04(日) 09:03:45.01ID:PHOmwLAR
テスト

514デフォルトの名無しさん2018/02/04(日) 09:08:27.88ID:PHOmwLAR
VLOOKUP関数の応用で、2列のリストがあり、検索セルではどちらかを入力するともう片方が入力されるものをVBAで作りたいのですが、、、

515デフォルトの名無しさん2018/02/04(日) 09:30:57.37ID:VbMnR6W2
>>514
左をキーにしてvlookup 、次に左をキーにしてvlookup すれば良いんじゃないか?
右と左に同じ内容が存在するとダメだけど。

516デフォルトの名無しさん2018/02/09(金) 20:30:22.36ID:fQxgZtkH
テスト

517デフォルトの名無しさん2018/02/12(月) 15:08:18.20ID:IVihLGwq
グラフを作成するときにXValuesってすべての系列で統一しないといけないんですか?
x1={0., 1., 2.}, y2={0., 1., 4.}
x2={0., 0.5, 1., 1.5, 2.},y2={0., 0.25, 1., 2.25, 4.}
みたいな2つの系列があったときにplot(x1,y1), plot(x2,y2)みたいに扱いたいのですがどうしたらいいでしょうか

518デフォルトの名無しさん2018/02/15(木) 06:58:28.28ID:oNAH0wTr
特定のフォルダ内のすべてのブックにC列に複数存在する特定の文字列『a』のすべてに対して右隣のセルに文字列『aa』を入力して、さらに同じシート内でC列に複数存在する特定の文字列『b』のすべてに対して右隣のセルに文字列『bb』を入力するようにしたいのですがどのような感じになりますでしょうか?

519デフォルトの名無しさん2018/02/16(金) 06:08:56.24ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

520デフォルトの名無しさん2018/02/17(土) 15:07:23.94ID:1VKCp1qU
518ですが、自己解決しました。

521デフォルトの名無しさん2018/02/19(月) 16:09:20.27ID:CaXwZ0Gg
vbacでmdbファイルをcombineしていると、「このアクションを実行するとプロジェクトがリセットされます。実行しますか?」というダイアローグが出てくるのですが、回避策をご存じの方いますか?

新着レスの表示
レスを投稿する