VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
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/ おわび
御貴兄たち、何卒添削お願いします。変数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 これ色付き以外のセルにも文字列は入ってるんだよな? あー〜スマン
>表Aのセルの色を付けると同時にB表のセルのイロを変える
この仕様を見逃してたわ
見なかったことにしてくれ >>487
入ってます
欲しいデータは1色で統一されてますが
ちなみに他に文字が存在しており、それらはほかの色で存在しています
>>488
お手数お掛けしております
ほんとにありがとうございます
色で判断をなくして、(条件で変えるので)>>483に書いてある欲しいデータ4種類を転記させるものでも良いのですが、難しいでょうか パソコンで見たら見えた。
これ、変更したところだけ反映したいの?
それとも、元表の3行目全てを反映したいの?
というか、データだけなら=で結べばいいのでは? >>491
そこまでして見ていただいて申し訳ないです
三段目だけを反映させたいのですが、その手書きの表の列、行ともに結構長い表なのです
手っ取り早く一瞬で作れたらと思って質問した次第です Excel VBAスレいけば寄ってたかってみんなで教えまくってくれんじゃね?行けば? >>493
いまはゴキブリが湧いてるからあっちは行かない方が良さそう >>492
結構長いというけど、どれくらい?
数十列数十行くらいで、1回だけなら右にオートフィルして、行ごとコピペするのが早いと思う。
=で繋ぐだけなら1回やっておけば、あとは自動でかわる。
マクロでやるとしても、数式で=を入れればいいのか、値を持ってくるようにした方がいいのか。
表の範囲指定はどうするか?
current.regionか、usedrangeか、直接指定するか。(元の表に罫線が引いてあるか、空欄があるかで変わってくる) 数式だって絶対参照、相対参照をきちんと意識して書けばRange=数式でアドレスに併せて変えてくれるから1回の代入で終わる。
以外と知らずに1セルずつ代入する人もいるけど。 >>495
3段目に毎回同じ文字がくるとは限らず、最低3種類の文字がくるので、とりあえずif分使って作成しました
横に日数1年分、縦に各項目50程です
絵にある通り、全く同じ表をコピペして使いますが(線あり)、ほんとは転記先の表は1段で済ませたい所でした
日替わりで最低3種類のうちのひとつが返ってきたらいいので
わかりづらくてすいません >>496
そうなんです
やり方を知らないので今は1セルずつ代入しています >>498
fast-uploader.com/file/7072682105190/
目的のものと全然違うかもしれないけど作ってみました。
データの最初のセルだけは自分で指定してください。 >>499
乙です
老婆心ながらアップする前に「ブックの検査−ドキュメント検査」したほうがよろしいかと。 >>499
見れないのですが、消されたのでしょうか >>498
やり方も何も、例えばA1からA列に1、2、3、・・・と入力されてるとしてRange("B1:B10").Value="=A1"を動かしてみな。
全部A1を参照したいならRange("B1:B10").Value="=$A$1"とする。
本当はValueではなくてFormulaだけどValueでもちゃんと相対参照してくれる。 fast-uploader.com/file/7072704922415/
パス 0128 >>504
>>505
みなさん、無知ですみません
ほんとに助かります
ありがとうございます
>>505
ひとまずダウンロード致しましたので明日内容を確認します
お時間割いて作っていただいて、ただただ感謝です
おやすみなさい 下から5行くらいにtext ってあるの、valueに直した方がいいかも。
textでも問題ないかもしれないけど。 おはようございます
昨日ダウンロードさせてもらったファイル開かないのですが、どうやったら開きますか? エクセルのバージョンは?
当方2013で開けましたよ。 >>509
2010です
すいません、どうやって開きました? プログラマですがvbaの初心者です。
C,java,lisp,python 基本的な言語とその意味論はだいたい知ってます。
vbaで書籍を探すと、大抵業務問題の解決という文脈で本が書かれているようですが
純粋に言語的な機能を抽出した言語仕様、あるいはリファレンスに相当するものを求めています。
そのような書籍のうちもっとも簡潔に記述されているような本はないでしょうか? >>511
本職のPGならマイクロソフトのディベロッパーセンターの英語版リファレンスを直に読んだ方が良い
あと、場合によってはVBAとほぼ同じシンタックスになってるVB.NET用のMicrosoft.Office.Interopクラス以下の各アプリケーションのオブジェクトのリファレンスの方が役に立つこともある VLOOKUP関数の応用で、2列のリストがあり、検索セルではどちらかを入力するともう片方が入力されるものをVBAで作りたいのですが、、、 >>514
左をキーにしてvlookup 、次に左をキーにしてvlookup すれば良いんじゃないか?
右と左に同じ内容が存在するとダメだけど。 グラフを作成するときに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)みたいに扱いたいのですがどうしたらいいでしょうか 特定のフォルダ内のすべてのブックにC列に複数存在する特定の文字列『a』のすべてに対して右隣のセルに文字列『aa』を入力して、さらに同じシート内でC列に複数存在する特定の文字列『b』のすべてに対して右隣のセルに文字列『bb』を入力するようにしたいのですがどのような感じになりますでしょうか? ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ vbacでmdbファイルをcombineしていると、「このアクションを実行するとプロジェクトがリセットされます。実行しますか?」というダイアローグが出てくるのですが、回避策をご存じの方いますか? 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
基礎的な質問で恐縮ですが、ご解説いただければ幸いです。
よろしくお願いします。 >>522
0も1回と数えるから、i が0の時に1回、1の時に1回、合計で2回です
For i = 1 To tmp
にすれば1回になるよ >>523
解説頂きましてありがとうございます。
0も1と数えるのはややこしいですね。。
しっかり復習します。 配列は0スタートとか知っておいたほうが良い(VBAの場合はOption Baseで切り替えられるけど) >>524
理屈で覚えればややこしくはないぞ。
配列の添字は距離のようなもので、「当該配列の1個目の要素のポインタを起点としたときに、そのポインタにどれだけ(何回)加算した場所に、その要素の格納されているメモリが存在するか」を示す数字。
1個目の要素から1個目の要素に移動するための加算回数=距離は0だから、1個目の要素にアクセスするときの添字は0になる。 >>514
if文でセルの指定範囲の時実行で1列目の時と2列目の時で分けたらどうですか? >>525
0スタートどころか-100スタートとかも可能 こればかりはプログラマーを混乱させるために導入されたとしか思えない謎仕様 >>531
配列添字の範囲指定なんてPascalの時代からあるのにバカって悲しいな w >>529
C#だとint[] intArray = new int[2]で要素は[0] と[1]になるんだが、
vbaだとdim Array(2) as Longが0,1,2の三つになるからたまにコンパイルエラーで悩む。Collectionは一から始まるが
Dictionaryは0からというのもたまに嵌る。 >>534
> vbaだとdim Array(2) as Longが0,1,2の三つになるからたまにコンパイルエラーで悩む。
0,1,2になるか1,2になるかはOption Baseによる
コンパイルエラーは意味わからんが
>>533
お前が黙っとけよ w ExcelのCellsの添え字が1オリジンだからデフォルトで使うしかない >>535
cell番地が1から始まるからbaseも1じゃなきゃ書けないバカはレス禁止 Cellsはコレクションオブジェクトを返すプロパティ関数だから、インデクサが1オリジンなのは文法上当たり前 >>540
配列の話してんだよバカチョン黙ってろや >>539
誰にレスしてんだよ、ボケ w
>>540
アホすぎ、そんなもん仕様によるだろ Excelが開発された当初はまだ0の発見前だったからだろ。
今作るなら0から始まるようになる。 こんばんは! おしえてください!
VBAでフリーフォームを書いたり、既にあるフリーフォームの頂点編集をしようとしています。
書く方は上手くいって、Shapes.BuildFreeformに、AddNodesコマンドで10点頂点を追加して、
楕円を書きました。
続いて、頂点の編集を行うべく、書かれたshapeのnodesや、Verticesで頂点情報を取得したら、
なぜか30点あります。ベジェ曲線で描かれた頂点の座標はもう残っていないのでしょうか?? こんにちは。
VBA初心者です。
Excelで知恵袋のような社内用のQ&Aを作成中です。
質問フォームに入力すると質問が縦に書き込まれていくところまで作りました。
しかし回答を質問に対応させることができません。
回答は対象の質問の横に入力されていくように作りたいですが、どうしたらよろしいでしょうか。
教えて下さい。
分かりづらいかもしれませんが、下記のように作りたいです。
質問1 回答1 回答2 回答3…
質問2 回答2-1 回答2-2…
質問3 シートを別にする
質問ごとにIDを振って回答にその質問IDを保持させる 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 ExcelVBAの質問です
adodbStreamを使って、jisコード(ISO-2022-JP)で書かれたテキストファイルを読み込んで色々するマクロを作っています
対象のテキストは1行120バイトのレコードが何行も含まれるという体裁になっているファイルです
このファイルを入力ファイルに指定したところ、なぜか3行目のみ最初の12バイト分が読み込まれません
レコードの内容を変えて何度か試してみたのですが、決まって3行目のみ行頭の12バイトが抜け落ちてしまいます
adodbを使う際に何か必要なことがあるのでしょうか? Webにあるスクリプト入れても動いたり動かなかったり
厳しいね、これは。 ファミコンゲームを再現したいんですが、単純な構造のゲームってありますか? シート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 >>556
Resizeで貼り付ける範囲を広げてあげる
幅を9セルにしたいならResize(, 9)って付け足す 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
HCSP8 シートにボタンがいくつかあって、押したときの処理が結構複雑なんです
とりあえずclickedをシートモジュールに書いて、そこから呼び出される関数も全部シートモジュールに書いたら分量がすごいことになりました
やっぱりクリック検出だけにしぼって残りは全部標準モジュールにすべきなんですかね。そのシートでしか呼び出されないわけで分けるのも分かりにくいような気もして >>563
Excel2003までのツールバーにメニュー追加するコードを書くと2007以降ではリボンにメニューが追加されるけど違う話かな? Access2016でコンボボックスの規定値をnullから1へ変更したくて
フォーム!コンボボックス.DefaultValue = """1"""とするフォーム上は1と表示されるんだが、プロパティーシート上は全く変化なくて、フォームをとじてから開くと規定値が変わっていなくてNullのまま。
VBAからは既定値の変更が出来ないのかな? フォームを閉じるときに変更を保存しなけりゃ普通に考えてもとに戻るわけだが ここはjscriptはアカンけ?outlookをjsで弄りたいんだが Wordで読みとり専用推奨で保存されてるファイルをVBAで書き込み可で開いて編集して上書き保存したいんですが、やる方法はありますか? マジだったカオスと思ったが
開くと読み取り専用か聞いてくるのか
まあ、OS側でなくワード側で制御してそうだから、回避は厳しそうな気がする カオス言いたい年頃なのでどうか大目に見てやって下さい カオスは天地が分かれる前の状態 あるいは光と闇が分かれる前の状態 >>576
VBAを使わずにファイルを開いてダイアログのウィンドウをつかまえて「いいえ」ボタンにメッセージを送るという力技ぐらいしか方法はないんでしょうか?
Excelでは開くときにIgnoreReadOnlyRecommenedというのを指定すれば良さそうなんですが document.openメソッドにも引数readonly があるみたいだけど >>581
ReadOnlyにFalseを渡しても読みとり専用で開かれるのは確認済みです >>574
ありません。
Wordは手動でやるしかない。
Excelとは違いますから。 >>580
VBAでもその力業で出来るけどね。
でも読み取り専用推奨で保存する目的はそのメッセージを出すことにあると思うからそれをスキップするコードを書くべきかという問題もある。 ■ このスレッドは過去ログ倉庫に格納されています