[過去ログ] VBAなんでも質問スレ Part2 [転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
664: 2018/11/16(金)07:44 ID:fQoG7lNZ(2/3) AAS
elseやelseifは先行条件でTrueにならない場合にしか実施されない仕組みなことを理解しましょう
665(1): 2018/11/16(金)08:11 ID:nU0jfNiC(1) AAS
>>661
このレベルを形で覚えようとしている貴方にプログラミングは向いてない
666: 2018/11/16(金)09:26 ID:RKO+v0zL(1) AAS
ID変ったかも知れませんが>>656です
皆さんありがとうございます
>>665
手痛いレスですが、出来るところまで頑張ろうと思います。プログラマーではないですが基本は覚えないと連携し辛い位置の役職のため頑張ります。
667: 2018/11/16(金)09:39 ID:fQoG7lNZ(3/3) AAS
本当のプログラミング初学者なら仕方ない。制御構文なんてどの言語も似てるので、1つ覚えれば次は勘が効くようになるよ、長い目でがんばりなされ
668(1): 2018/11/17(土)01:11 ID:A0ACnair(1) AAS
最大値を求めたいならWorkSheetFunction.MAX使えば良いんじゃね?
669: 2018/11/17(土)12:08 ID:vo1go4s2(1/2) AAS
自民党ですらエクセル操作ミスるくらいだからな
670: 2018/11/17(土)12:09 ID:vo1go4s2(2/2) AAS
税金の計算もおかしくね?って思う
671: 2018/12/16(日)00:58 ID:SwJ6GlUb(1/2) AAS
>>668
わにわに
672: 2018/12/16(日)01:01 ID:SwJ6GlUb(2/2) AAS
パニックを、5人がかりでやれば楽勝だろ、とか言ってるようなもの。
673: 2018/12/17(月)09:39 ID:5sE/cfMN(1) AAS
エクセルVBAじゃなかったらどうするの
674: 2018/12/18(火)22:55 ID:A6rQVaax(1) AAS
確かに。
エクセロかも知れないもんな。
675(7): 2018/12/26(水)21:53 ID:KrpjpPkw(1) AAS
VBA初心者です。少し長くなってしまいますが質問です。
・やりたいこと
1:現マクロ有効ブックのsheet1にフォームボタン設置する。
2:押すとC:\Users\Public\動物まとめ.xlsx をバックグラウンドで開き、その中のシート名"カピバラ情報"の E列4行目から5行目6行目...と、空白が来るまでの情報を取得しする。
3:現マクロ有効ブックに新しくsheet2を作り、その新シートのA1からA2A3...に取得した情報を書き込む。
現在のマクロは下記ですが上手くいかないです。
Option Explicit
Sub practice()
Dim i As Long
i = 4
Dim fullPass As String
'セルのB3に C:\Users\Public\動物まとめ.xlsxと記述
fullPass = Range("B3")
Dim wb As Workbook
Dim Anothersheet As Worksheet
Workbooks.Open fullPass
Set Anothersheet = wb.Worksheets("カピバラ情報")
Sheets.Add After:=ActiveSheet
Range("A1").Select
Do While Cells(5, i).Value <> ""
i = i + 1
Loop
Call wb.Close
End Sub
上手く情報を取得できないのでアドバイスお願いします。
676(1): 2018/12/27(木)00:53 ID:coxr7jtk(1/6) AAS
>>675
wbに何も代入されてない。
AnotherSheetへの代入もこけるはず。
AnotherSheetが正しく生成されたとしても、その後使用されていないから何かとってこれるはずがない。
677: 2018/12/27(木)00:55 ID:coxr7jtk(2/6) AAS
>>675
fullpass じゃなくて、fullpath ね。
678: 2018/12/27(木)01:02 ID:coxr7jtk(3/6) AAS
>>675
行列指定が逆?
5行目を右方向に評価してくような感じになってるけど、新規に作ったシートが対象になってるから、一周もループしてないよね?
679: 2018/12/27(木)01:09 ID:coxr7jtk(4/6) AAS
>>675
Cell値を取るときは、デフォルトにまかせずちゃんとプロパティ指定しよう。
680(2): 2018/12/27(木)01:16 ID:coxr7jtk(5/6) AAS
>>675
バックで開いたつもりのブックに新規シート作っちゃってない?
ブックのフォーカスを制御するとか必要かも。
681: 2018/12/27(木)09:18 ID:psUgzr4+(1/5) AAS
ID変わりましたが>>675です。
>>676‐>>680
遅い時間帯でありながら見てくださって
ありがとうございます。
色々と不十分だったのですね。
指摘箇所を直したりして
また報告しようと思います。
682(1): 2018/12/27(木)09:19 ID:lhYnw8ev(1/5) AAS
>>675
最初に注意すべきなのは、いきなりRangeやCellsは絶対に使うべきじゃないってこと。
ちゃんと省略せずにWorkbookやWorksheetから書くようにする。
しかしそれだとコ―ドが長くなるのでそのために今回のコードのように変数で受けるかWith文を使う。
以下はスマホ上で書いてるんで動くかは不明です。
683: 2018/12/27(木)09:20 ID:lhYnw8ev(2/5) AAS
Option Explicit
Sub practice()
Dim i As Long
Dim fullPath As String
Dim wb As Workbook
'Anothersheetじゃ分かりにくいんでopnShtに変更。
Dim opnSht As Worksheet
'追加シートは変数に受けないの?
Dim addSht As Worksheet
'セルのB3てどこ?
'多分ボタンのあるシートかなと推測。
fullPass = Thisworkbook.Worksheets("Sheet1").Range("B3").Value
'B3に出鱈目書いて動かしたらどうなるんだろう?
Set wb = Workbooks.Open(fullPath)
Set opnSht = wb.Worksheets("カピバラ情報")
With Thisworkbook
Set addSht = .WorkSheets.Add( After:=.WorkSheets("Sheet1"))
End With
'Range("A1").Selectって何の為に有るの?
'iの初期値を一番最初に書いてたけど、初めて見たとき何だか分からんかった。
'使う直前に関連処理と一緒にまとめた方が分かり易いよね。
i=4
Do While opnSht.Cells(5, i).Value <> ""
i = i + 1
Loop
'元のCall wb.Closeなどという書き方をしたことが無いのでいつもの自分の書き方に変更。
wb.Close False
End Sub
684(1): 2018/12/27(木)09:22 ID:lhYnw8ev(3/5) AAS
>>680
フォーカスを制御すべきじゃない。
いきなりRangeやCellsを使うから上手くいかないのであって、きちんとブックやシートから書けばフォーカスを制御しなければならないことは滅多に無い。
685(1): 2018/12/27(木)09:26 ID:lhYnw8ev(4/5) AAS
早速間違いだ。
fullPassと書いてる所が一ヶ所ある。
fullPathに直しておいてね。
686: 2018/12/27(木)11:21 ID:coxr7jtk(6/6) AAS
>>684
まぁ、そうかもね。
でも最初はいろいろ試してもいいんじゃない?
687: 2018/12/27(木)11:57 ID:psUgzr4+(2/5) AAS
>>682‐685
ありがとうございます
深夜のご指摘から>>685まで参考にしていて
現在デバッグしてますが、“カピバラ種類”のシートが上手く取得できていないようです。
ちなみに
'セルのB3てどこ?
'多分ボタンのあるシートかなと推測。
その通りです、分かりづらくてすいません。
改行制限のためいくつかコメントは掲示板に書き込むとき省いてしまいました。
'Range("A1").Selectって何の為に有るの?
ですが 、新シートのA1から書き込む為に書きましたが、デフォルトでA1から書き込むみたいですので
無駄なマクロでしたね。
688(1): 2018/12/27(木)12:23 ID:psUgzr4+(3/5) AAS
少し言葉足らずでした。
iのカウント(空白行までループ)は上手く出来ているので、現マクロ有効ブックの新シートに取得情報を
書き込めていないようです。
689: 2018/12/27(木)12:57 ID:lhYnw8ev(5/5) AAS
>>688
うん?
Do〜Loopの中はiのカウントアップしてるだけなので、あなたが省略した(と勝手に思ってるんだけど)コードが動いていないということ?
念のためにいうと、元々のコードには情報を取得するコードが全く無いからこのコードだけじゃ取り込めないのは当たり前だよね。
690: 2018/12/27(木)13:47 ID:psUgzr4+(4/5) AAS
すいません、
不覚に気づき、
dim j as long
j = 1
を追加し、ループを
Do While opnSht.Cells(5, i).Value <> ""
addSht.cells(j,1) = opnSht.Cells(i, 5)
j = i
i = i + 1
Loop
にして上手くいきました、ありがとうございます。
691: 2018/12/27(木)13:57 ID:psUgzr4+(5/5) AAS
細かい修正として
j = i
i = i + 1
の部分も
i = i + 1
j = i - ○
のようにして、
無駄にできてしまう空白もなくしました。
お付き合いしてくださった方、
ありがとうございました。
692(1): 2019/01/03(木)04:15 ID:aAVkqECP(1/3) AAS
質問です
ワークシート上にすでに引かれている複雑な枠線をコードとしてどうにか変換というか取得できる方法はないでしょうか…
693(1): 2019/01/03(木)04:35 ID:Em9anKIf(1/3) AAS
>>692
描くのの逆をするだけじゃ?
上下前次1-新書関写板覧索設栞歴
あと 309 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.015s