X



VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
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/
0486デフォルトの名無しさん
垢版 |
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
0488486
垢版 |
2018/01/26(金) 11:04:59.89ID:HJtMv0FJ
あー〜スマン
>表Aのセルの色を付けると同時にB表のセルのイロを変える
この仕様を見逃してたわ
見なかったことにしてくれ
0489デフォルトの名無しさん
垢版 |
2018/01/26(金) 19:09:34.97ID:o3fzSqcU
>>487
入ってます
欲しいデータは1色で統一されてますが
ちなみに他に文字が存在しており、それらはほかの色で存在しています

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

色で判断をなくして、(条件で変えるので)>>483に書いてある欲しいデータ4種類を転記させるものでも良いのですが、難しいでょうか
0491490
垢版 |
2018/01/26(金) 21:06:22.97ID:K81AssZX
パソコンで見たら見えた。
これ、変更したところだけ反映したいの?
それとも、元表の3行目全てを反映したいの?
というか、データだけなら=で結べばいいのでは?
0492デフォルトの名無しさん
垢版 |
2018/01/26(金) 21:17:19.09ID:o3fzSqcU
>>491
そこまでして見ていただいて申し訳ないです

三段目だけを反映させたいのですが、その手書きの表の列、行ともに結構長い表なのです
手っ取り早く一瞬で作れたらと思って質問した次第です
0493デフォルトの名無しさん
垢版 |
2018/01/26(金) 21:21:20.15ID:Vo+OzJVu
Excel VBAスレいけば寄ってたかってみんなで教えまくってくれんじゃね?行けば?
0495490
垢版 |
2018/01/28(日) 01:47:10.17ID:xXGJMKWE
>>492
結構長いというけど、どれくらい?
数十列数十行くらいで、1回だけなら右にオートフィルして、行ごとコピペするのが早いと思う。
=で繋ぐだけなら1回やっておけば、あとは自動でかわる。

マクロでやるとしても、数式で=を入れればいいのか、値を持ってくるようにした方がいいのか。
表の範囲指定はどうするか?
current.regionか、usedrangeか、直接指定するか。(元の表に罫線が引いてあるか、空欄があるかで変わってくる)
0496デフォルトの名無しさん
垢版 |
2018/01/28(日) 14:19:41.49ID:Erw8GBm0
数式だって絶対参照、相対参照をきちんと意識して書けばRange=数式でアドレスに併せて変えてくれるから1回の代入で終わる。

以外と知らずに1セルずつ代入する人もいるけど。
0497デフォルトの名無しさん
垢版 |
2018/01/28(日) 14:51:25.14ID:fbEFMaxh
>>495
3段目に毎回同じ文字がくるとは限らず、最低3種類の文字がくるので、とりあえずif分使って作成しました

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

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

わかりづらくてすいません
0499490
垢版 |
2018/01/28(日) 17:27:50.85ID:z3VzjyNA
>>498
fast-uploader.com/file/7072682105190/

目的のものと全然違うかもしれないけど作ってみました。
データの最初のセルだけは自分で指定してください。
0500490
垢版 |
2018/01/28(日) 17:29:06.20ID:z3VzjyNA
パス 0128
0501デフォルトの名無しさん
垢版 |
2018/01/28(日) 18:08:34.70ID:745uG8BQ
>>499
乙です
老婆心ながらアップする前に「ブックの検査−ドキュメント検査」したほうがよろしいかと。
0502499
垢版 |
2018/01/28(日) 18:41:56.85ID:UOLejiJq
サンクスです。
渡辺明さんになるところだったか。
0504デフォルトの名無しさん
垢版 |
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でもちゃんと相対参照してくれる。
0505499
垢版 |
2018/01/28(日) 23:23:45.53ID:9bi4pzKP
fast-uploader.com/file/7072704922415/

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

>>505
ひとまずダウンロード致しましたので明日内容を確認します
お時間割いて作っていただいて、ただただ感謝です
おやすみなさい
0507デフォルトの名無しさん
垢版 |
2018/01/29(月) 00:48:46.52ID:rWIIKeXW
下から5行くらいにtext ってあるの、valueに直した方がいいかも。
textでも問題ないかもしれないけど。
0508デフォルトの名無しさん
垢版 |
2018/01/29(月) 08:59:53.06ID:flk0qVid
おはようございます

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

そのような書籍のうちもっとも簡潔に記述されているような本はないでしょうか?
0512デフォルトの名無しさん
垢版 |
2018/02/04(日) 02:06:08.04ID:Nq0C9+DR
>>511
本職のPGならマイクロソフトのディベロッパーセンターの英語版リファレンスを直に読んだ方が良い
あと、場合によってはVBAとほぼ同じシンタックスになってるVB.NET用のMicrosoft.Office.Interopクラス以下の各アプリケーションのオブジェクトのリファレンスの方が役に立つこともある
0514デフォルトの名無しさん
垢版 |
2018/02/04(日) 09:08:27.88ID:PHOmwLAR
VLOOKUP関数の応用で、2列のリストがあり、検索セルではどちらかを入力するともう片方が入力されるものをVBAで作りたいのですが、、、
0515デフォルトの名無しさん
垢版 |
2018/02/04(日) 09:30:57.37ID:VbMnR6W2
>>514
左をキーにしてvlookup 、次に左をキーにしてvlookup すれば良いんじゃないか?
右と左に同じ内容が存在するとダメだけど。
0517デフォルトの名無しさん
垢版 |
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)みたいに扱いたいのですがどうしたらいいでしょうか
0518デフォルトの名無しさん
垢版 |
2018/02/15(木) 06:58:28.28ID:oNAH0wTr
特定のフォルダ内のすべてのブックにC列に複数存在する特定の文字列『a』のすべてに対して右隣のセルに文字列『aa』を入力して、さらに同じシート内でC列に複数存在する特定の文字列『b』のすべてに対して右隣のセルに文字列『bb』を入力するようにしたいのですがどのような感じになりますでしょうか?
0519デフォルトの名無しさん
垢版 |
2018/02/16(金) 06:08:56.24ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0521デフォルトの名無しさん
垢版 |
2018/02/19(月) 16:09:20.27ID:CaXwZ0Gg
vbacでmdbファイルをcombineしていると、「このアクションを実行するとプロジェクトがリセットされます。実行しますか?」というダイアローグが出てくるのですが、回避策をご存じの方いますか?
0522デフォルトの名無しさん
垢版 |
2018/03/07(水) 08:26:06.09ID:tPOSTBDK
VBA初心者です。
省略可能なキーワードOptionalに関して質問がございます。
・質問内容
以下のコードにおいて、なぜ"ABC"が2回繰り返されるのでしょうか?
Optionalで指定した1が初期値としてtmpに格納され、For〜Nextステートメントの処理が0〜1となり、回答は”ABC”のみだと考えました。

・コード
Sub Sample1()

Call Sample2

End Sub

Sub Sample2(Optional tmp As Long = 1)

Dim i As Long
For i = 0 To tmp
Debug.Print "ABC"
Next i
End Sub

基礎的な質問で恐縮ですが、ご解説いただければ幸いです。
よろしくお願いします。
0523デフォルトの名無しさん
垢版 |
2018/03/07(水) 09:34:45.98ID:1c1zt9Ui
>>522
0も1回と数えるから、i が0の時に1回、1の時に1回、合計で2回です

For i = 1 To tmp
にすれば1回になるよ
0524デフォルトの名無しさん
垢版 |
2018/03/08(木) 09:50:20.87ID:kgkGNmtQ
>>523
解説頂きましてありがとうございます。
0も1と数えるのはややこしいですね。。
しっかり復習します。
0525デフォルトの名無しさん
垢版 |
2018/03/08(木) 17:16:49.20ID:1OkrDYdr
配列は0スタートとか知っておいたほうが良い(VBAの場合はOption Baseで切り替えられるけど)
0526デフォルトの名無しさん
垢版 |
2018/03/08(木) 18:23:37.87ID:bSaoLb8p
>>524
理屈で覚えればややこしくはないぞ。
配列の添字は距離のようなもので、「当該配列の1個目の要素のポインタを起点としたときに、そのポインタにどれだけ(何回)加算した場所に、その要素の格納されているメモリが存在するか」を示す数字。
1個目の要素から1個目の要素に移動するための加算回数=距離は0だから、1個目の要素にアクセスするときの添字は0になる。
0529デフォルトの名無しさん
垢版 |
2018/03/08(木) 21:40:28.86ID:Og1NJDFT
こればかりはプログラマーを混乱させるために導入されたとしか思えない謎仕様
0531デフォルトの名無しさん
垢版 |
2018/03/09(金) 19:02:04.18ID:M2r/B6Zk
>>530
お前はバカなんだからしゃべるな
0533デフォルトの名無しさん
垢版 |
2018/03/09(金) 19:47:08.42ID:M2r/B6Zk
>>532
あれ?発言を許可した覚えはないけど?
0534デフォルトの名無しさん
垢版 |
2018/03/10(土) 04:04:01.67ID:hJ8m/Sii
>>529
C#だとint[] intArray = new int[2]で要素は[0] と[1]になるんだが、
vbaだとdim Array(2) as Longが0,1,2の三つになるからたまにコンパイルエラーで悩む。Collectionは一から始まるが
Dictionaryは0からというのもたまに嵌る。
0535デフォルトの名無しさん
垢版 |
2018/03/10(土) 12:36:10.36ID:f+B2oLbA
>>534
> vbaだとdim Array(2) as Longが0,1,2の三つになるからたまにコンパイルエラーで悩む。
0,1,2になるか1,2になるかはOption Baseによる
コンパイルエラーは意味わからんが

>>533
お前が黙っとけよ w
0536デフォルトの名無しさん
垢版 |
2018/03/11(日) 13:41:16.21ID:1qbV0tMy
>>535
オマエも黙っとけハゲ
0539デフォルトの名無しさん
垢版 |
2018/03/11(日) 16:09:32.52ID:auu5o0Ru
>>535
cell番地が1から始まるからbaseも1じゃなきゃ書けないバカはレス禁止
0540デフォルトの名無しさん
垢版 |
2018/03/11(日) 16:12:01.55ID:ULAXnW5C
Cellsはコレクションオブジェクトを返すプロパティ関数だから、インデクサが1オリジンなのは文法上当たり前
0541デフォルトの名無しさん
垢版 |
2018/03/11(日) 16:16:16.76ID:auu5o0Ru
>>540
配列の話してんだよバカチョン黙ってろや
0543デフォルトの名無しさん
垢版 |
2018/03/11(日) 17:04:17.63ID:sEfAJdP7
Excelが開発された当初はまだ0の発見前だったからだろ。
今作るなら0から始まるようになる。
0544デフォルトの名無しさん
垢版 |
2018/03/11(日) 19:02:59.32ID:lvju0XX+
あーこれはスベったな
0545素人
垢版 |
2018/03/11(日) 22:39:56.16ID:/xAIuEgQ
こんばんは! おしえてください!
VBAでフリーフォームを書いたり、既にあるフリーフォームの頂点編集をしようとしています。
書く方は上手くいって、Shapes.BuildFreeformに、AddNodesコマンドで10点頂点を追加して、
楕円を書きました。

続いて、頂点の編集を行うべく、書かれたshapeのnodesや、Verticesで頂点情報を取得したら、
なぜか30点あります。ベジェ曲線で描かれた頂点の座標はもう残っていないのでしょうか??
0546デフォルトの名無しさん
垢版 |
2018/03/15(木) 07:48:53.70ID:O8Mn8lcP
>>545
コード貼ればレス付くかも
0547デフォルトの名無しさん
垢版 |
2018/03/24(土) 15:42:57.45ID:5WWUtLn7
こんにちは。
VBA初心者です。
Excelで知恵袋のような社内用のQ&Aを作成中です。
質問フォームに入力すると質問が縦に書き込まれていくところまで作りました。
しかし回答を質問に対応させることができません。
回答は対象の質問の横に入力されていくように作りたいですが、どうしたらよろしいでしょうか。
教えて下さい。

分かりづらいかもしれませんが、下記のように作りたいです。

質問1 回答1 回答2 回答3…
質問2 回答2-1 回答2-2…
質問3
0550デフォルトの名無しさん
垢版 |
2018/04/26(木) 06:16:16.15ID:5eP/vpMI
htmlからidやnameに属さない、独自の名前を付けられた値を取得したいです。
<li id="result_1" result-rank="1" data-original="hoge">
<li id="result_2" result-rank="2" data-original="fuga">
・・・
<li id="result_123" result-rank="123" data-original="hage">

data-original="hoge"の「hoge」を取得したいです。
常にidのresult_1を取得したいわけではなく、またidの値も検索結果によっては変動します。
data-originalは必ずliタグの中にあります。
htmlは変更できません。

ウィザード級の方々何卒お力をお貸しくださいませ。m(_ _)m
0551550
垢版 |
2018/04/27(金) 04:34:25.39ID:HRYENVs1
自己解決しました。
0552デフォルトの名無しさん
垢版 |
2018/04/27(金) 17:39:47.51ID:Ewgb7+aM
ExcelVBAの質問です
adodbStreamを使って、jisコード(ISO-2022-JP)で書かれたテキストファイルを読み込んで色々するマクロを作っています
対象のテキストは1行120バイトのレコードが何行も含まれるという体裁になっているファイルです
このファイルを入力ファイルに指定したところ、なぜか3行目のみ最初の12バイト分が読み込まれません
レコードの内容を変えて何度か試してみたのですが、決まって3行目のみ行頭の12バイトが抜け落ちてしまいます
adodbを使う際に何か必要なことがあるのでしょうか?
0553デフォルトの名無しさん
垢版 |
2018/04/27(金) 17:40:39.83ID:Ewgb7+aM
上げておきます
0554デフォルトの名無しさん
垢版 |
2018/05/07(月) 00:53:53.60ID:Zjii9/TV
Webにあるスクリプト入れても動いたり動かなかったり
厳しいね、これは。
0555デフォルトの名無しさん
垢版 |
2018/05/11(金) 11:32:55.94ID:Vbz54Hwk
ファミコンゲームを再現したいんですが、単純な構造のゲームってありますか?
0556デフォルトの名無しさん
垢版 |
2018/05/11(金) 12:17:07.84ID:Pz/tQeeR
シート1のA44:I44のセルの内容を、マクロでシート2の最後列に貼り付けていきたいです。
下記のマクロだと、シート1のA44のセルをシート2の最後列のAのセルにのみ、コピーするだけになってしまいます。
どう変更すればいいのか、よかったら教えて頂きたいです。
よろしくお願いします。

Sub テスト()
Dim LastRow As Long
With Worksheets("シート2")
LastRow = Worksheets("シート2").Range("A"&Rows.Count).End(xlUp).Row + 1
Range("A"&LastRow).Value=Worksheets("シート1").Range("A44:I44").Value
End With
End Sub
0559デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:25:31.94ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

HCSP8
0561デフォルトの名無しさん
垢版 |
2018/05/30(水) 16:34:41.89ID:C5TotkC4
VBAってリボンにメニューを作成出来る?
0563デフォルトの名無しさん
垢版 |
2018/05/31(木) 22:00:54.69ID:mTNxmz5w
出来ないだろ
0564デフォルトの名無しさん
垢版 |
2018/05/31(木) 22:10:43.12ID:tlOTml64
シートにボタンがいくつかあって、押したときの処理が結構複雑なんです
とりあえずclickedをシートモジュールに書いて、そこから呼び出される関数も全部シートモジュールに書いたら分量がすごいことになりました
やっぱりクリック検出だけにしぼって残りは全部標準モジュールにすべきなんですかね。そのシートでしか呼び出されないわけで分けるのも分かりにくいような気もして
0565デフォルトの名無しさん
垢版 |
2018/05/31(木) 23:13:50.53ID:eZ3BghFT
>>563
Excel2003までのツールバーにメニュー追加するコードを書くと2007以降ではリボンにメニューが追加されるけど違う話かな?
0566デフォルトの名無しさん
垢版 |
2018/07/02(月) 19:23:11.48ID:kZ0RH16R
Access2016でコンボボックスの規定値をnullから1へ変更したくて
フォーム!コンボボックス.DefaultValue = """1"""とするフォーム上は1と表示されるんだが、プロパティーシート上は全く変化なくて、フォームをとじてから開くと規定値が変わっていなくてNullのまま。
VBAからは既定値の変更が出来ないのかな?
0567デフォルトの名無しさん
垢版 |
2018/07/04(水) 18:36:07.99ID:uOrTSuCX
フォームを閉じるときに変更を保存しなけりゃ普通に考えてもとに戻るわけだが
0569デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:40:17.29ID:gFgZc5FG
5OK
0574デフォルトの名無しさん
垢版 |
2018/08/01(水) 19:27:32.96ID:sloNm1e3
Wordで読みとり専用推奨で保存されてるファイルをVBAで書き込み可で開いて編集して上書き保存したいんですが、やる方法はありますか?
0576デフォルトの名無しさん
垢版 |
2018/08/01(水) 22:05:26.28ID:oaZVWoyy
マジだったカオスと思ったが
開くと読み取り専用か聞いてくるのか

まあ、OS側でなくワード側で制御してそうだから、回避は厳しそうな気がする
0580デフォルトの名無しさん
垢版 |
2018/08/02(木) 00:14:28.59ID:isxfR7GW
>>576
VBAを使わずにファイルを開いてダイアログのウィンドウをつかまえて「いいえ」ボタンにメッセージを送るという力技ぐらいしか方法はないんでしょうか?

Excelでは開くときにIgnoreReadOnlyRecommenedというのを指定すれば良さそうなんですが
0583デフォルトの名無しさん
垢版 |
2018/08/02(木) 12:49:47.07ID:rM6odxjs
>>574
ありません。
Wordは手動でやるしかない。
Excelとは違いますから。
0584デフォルトの名無しさん
垢版 |
2018/08/02(木) 18:55:35.87ID:kRv3+o5C
>>580
VBAでもその力業で出来るけどね。
でも読み取り専用推奨で保存する目的はそのメッセージを出すことにあると思うからそれをスキップするコードを書くべきかという問題もある。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況