[過去ログ] VBAなんでも質問スレ Part2 [転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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
描くのの逆をするだけじゃ?
694
(1): 2019/01/03(木)13:29 ID:aAVkqECP(2/3) AAS
>>693
返事ありがとうございます
すみません、私の頭では理解できません…よかったらもう少し詳しく教えてもらえませんか
695
(1): 2019/01/03(木)14:57 ID:9QrYctZ6(1) AAS
何をしたいのか書いてよ
罫線の設定状況を知りたいだけならRange.Borders見なよとしか言えないし
外部リンク:docs.microsoft.com
696
(1): 2019/01/03(木)15:15 ID:Em9anKIf(2/3) AAS
>>694
罫線を描く動作は理解できてる?
マクロ記録で簡単に調べられますよ。
例えば、2行2列選んで、縦横斜め全てに実線入れて
記録されたものを見ればどのような構造で描かれているのか
分かります。
記録の際は、xl〜の定数でよいですが、取得の際は数値で
返ってくるので注意。
調べたければオブジェクトブラウザで調べてもよいですが、
イミディエイトで、?xlThin みたいに簡単に確認する方法も
あります。
でも、取得して使うなら数値のままでもOKです。
ここまではOK?
697
(2): 2019/01/03(木)16:26 ID:+aY40et6(1) AAS
>>695
>>696
会社でとある先人の作ったエクセルのフォーマットがあるのですが、それを使って作業するおばあちゃんが度々壊してしまうのです
セル結合やセルの幅など複雑になっている物なので、壊してしまったパソコンの不得意なおばあちゃんはいつも四苦八苦していて、どうにか入力された数値以外の罫線や列幅などだけボタン1つ簡単に戻せるものを作ってあげたいと考えています

頂いたヒントを元にもう少し頑張ってみます
結局わからなければまた質問させてください
ありがとうございました
698
(1): 2019/01/03(木)16:38 ID:CdG5H8Qg(1) AAS
>>697
シートの保護じゃダメなの?
おばあちゃんには特定セルに数値入力させてるだけなんでしょ?
699
(1): 2019/01/03(木)17:30 ID:Em9anKIf(3/3) AAS
>>697
シート保護で十分みたいですね。
もし何らかの理由で保護できないのであれば、
同フォーマットの隠しシートから書式貼り付けした方が早そう。
セル結合もあるし、1セルずつ罫線情報取得とか効率悪すぎ。
700
(1): 2019/01/03(木)22:01 ID:aAVkqECP(3/3) AAS
>>698
>>699
それがわかりながらあらゆる所(不規則)を動かさないといけない時があったりで、保護だと都合が悪かったんです
フォーマット自体を大幅に変更できればもっと色々と簡単にできるのですが、それも他のおばあちゃんたちが前の方が良かった〜なんて必ず言うので見た目を崩すことはできません
担当のおばあちゃんorおばさんが変われば書式貼り付けのための範囲選択も上手くできないだろうから(全選択など知りません)また誰かが黙って長時間四苦八苦する事になってしまいます
無駄にすべて最初からやろうとしたりも平気であります
平均年齢49才の職場なので仕方ないんです
誰にも聞かずに戻したい部分を戻せるような、とーーってもわかりやすい説明付きのボタンをユーザーフォーム上にでもいくつか作ってあげたいと思っています
崩してしまうパターンはだいたい把握できているので、それが最善かなと…
701
(1): 2019/01/04(金)02:06 ID:+nkelZ7z(1) AAS
>>700
いや、だから隠しシートから自動的に書式修復をかければという意味で言うたのですが、、
トリガーはファイルオープンでも、ボタンでも。

試しにやってみたけど、罫線やセル結合は問題なく修復できるみたい。
入力規則とかは引き継げないみたいなので別にケアする必要があるかも。
行挿入、列挿入とかされて座標がかわるようなことされないならこれで十分では?

自分がよくやるのは、表のエリア毎に範囲名をつけて、そのエリア単位で最初に表組みした
ときと同じ要領で表作成を記録していき、コードを整理して修復マクロにします。
これなら起点となるセルが壊されなければ行挿入、列挿入にもある程度柔軟に対応
できるし、式や入力規則の修復も追加できる。
まぁ、利用者は作成者の想定を軽く超えてきますけどね。
702: 2019/01/04(金)08:59 ID:jYRqvj54(1) AAS
>>701
理解力なくてすみません、、、
そしてありがとうございます
そのやり方を取り入れてとりあえず一度作ってみます!
703: 2019/01/19(土)20:28 ID:gUifgf+0(1) AAS
ディム a アズ インテジャー
コンスト b アズ バリアント = ファルス

この読み方はあってますか?
704: 2019/01/19(土)20:32 ID:b1memYXI(1) AAS
さいごフォルス
705: 2019/01/20(日)08:43 ID:KJwN8fo6(1) AAS
マジか!
自信なくなってきたわ。
フォー イーチ 〇 イン、スターコンブ、ブイビーナロウ、コンカット、
ナンバーフォーマットローカル、ドゥ ホワイル、イズナメリック、
デカー ファンクション セットウインドウロング リブ "ユーザー32" エリアス、
バイバル 〇 アズ ブーラン、アプリケーション.ハウンド、オプション エクスプリシト。
706: 2019/01/20(日)09:19 ID:1t0h4eLG(1/2) AAS
numeric ニューメリック
alias エイリアス
boolean ブーリアン
707
(1): 2019/01/20(日)09:40 ID:brNktcWU(1) AAS
ディクレィア
708: 2019/01/20(日)12:50 ID:gJkAP+bh(1) AAS
ぶーりーんっておもってた
1-
あと 294 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.018s