Excel VBA 質問スレ Part36 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2015/01/09(金) 16:59:02.80ID:GzFHQ3J4★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Applications』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
前スレ:Excel VBA 質問スレ Part35
http://peace.2ch.net/test/read.cgi/tech/1414186311/
関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
0002デフォルトの名無しさん
2015/01/09(金) 17:00:05.94ID:GzFHQ3J402 http://pc11.2ch.net/test/read.cgi/tech/1168308855/
03 http://pc11.2ch.net/test/read.cgi/tech/1180192018/
04 http://pc11.2ch.net/test/read.cgi/tech/1189814602/
05 http://pc11.2ch.net/test/read.cgi/tech/1197448064/
06 http://pc11.2ch.net/test/read.cgi/tech/1205231499/
07 http://pc11.2ch.net/test/read.cgi/tech/1212587819/
08 http://pc11.2ch.net/test/read.cgi/tech/1219673793/
09 http://pc11.2ch.net/test/read.cgi/tech/1228372971/
10 http://pc12.2ch.net/test/read.cgi/tech/1235332603/
11 http://pc12.2ch.net/test/read.cgi/tech/1241885130/
12 http://pc12.2ch.net/test/read.cgi/tech/1247566074/
13 http://pc12.2ch.net/test/read.cgi/tech/1254281104/
14 http://pc12.2ch.net/test/read.cgi/tech/1262748898/
15 http://pc12.2ch.net/test/read.cgi/tech/1271261239/
16 http://hibari.2ch.net/test/read.cgi/tech/1280045912/
17 http://hibari.2ch.net/test/read.cgi/tech/1289182437/
18 http://hibari.2ch.net/test/read.cgi/tech/1298240666/
19 http://hibari.2ch.net/test/read.cgi/tech/1305754555/
20 http://hibari.2ch.net/test/read.cgi/tech/1312435844/
0003デフォルトの名無しさん
2015/01/09(金) 17:00:35.92ID:GzFHQ3J422 http://toro.2ch.net/test/read.cgi/tech/1322400978/
23 http://toro.2ch.net/test/read.cgi/tech/1327763113/
24 http://toro.2ch.net/test/read.cgi/tech/1334305148/
25 http://toro.2ch.net/test/read.cgi/tech/1341722983/
26 http://toro.2ch.net/test/read.cgi/tech/1345363310/
27 http://toro.2ch.net/test/read.cgi/tech/1353842387/
28 http://toro.2ch.net/test/read.cgi/tech/1359607536/
29 http://toro.2ch.net/test/read.cgi/tech/1364689772/
30 http://toro.2ch.net/test/read.cgi/tech/1370088822/
31 http://toro.2ch.net/test/read.cgi/tech/1376371376/
32 http://toro.2ch.net/test/read.cgi/tech/1381151995/
33 http://peace.2ch.net/test/read.cgi/tech/1382015080/
34 http://peace.2ch.net/test/read.cgi/tech/1403911485/
35 http://peace.2ch.net/test/read.cgi/tech/1414186311/
0004デフォルトの名無しさん
2015/01/09(金) 17:28:33.56ID:BcP6vX0h正しい次スレはこちらです
http://peace.2ch.net/test/read.cgi/tech/1419718732/l50
0005デフォルトの名無しさん
2015/01/10(土) 23:41:25.43ID:xy8zfnqHメモ張から見てわかりますでしょうか
0006デフォルトの名無しさん
2015/01/11(日) 02:32:30.02ID:RQUzAnWcこのスレはテンプレが絶対です。
あなたの質問は>>1★2に抵触します。
VBAの質問で無ければ例え雑談と言えどもスレ違いとなりますので、他でやって下さい。
0007デフォルトの名無しさん
2015/01/11(日) 13:10:14.57ID:tSIQw0Ly今はなにかしらのコーディングがされてるはず
0008デフォルトの名無しさん
2015/01/11(日) 15:49:05.34ID:FbuCuKO8フォルダ選択画面を出してファイル選択をしたいんだか、
そんなツールボックスってある?
0009デフォルトの名無しさん
2015/01/11(日) 16:01:58.35ID:KxuOmHMJ0010デフォルトの名無しさん
2015/01/12(月) 11:15:48.18ID:RtAs6kiOThanks!
これを使えばユーザーフォームのコントロール(ツールボタン?)から
CommandButtomでファイル名選択、取得出来ることはわかったんですが、
CommandButtom以外にエクスプローラのような形式で選択できる
コントロールフォームはあるのですか?
0011デフォルトの名無しさん
2015/01/12(月) 13:03:43.73ID:b1cfo7LIファイルをセーブするのに GetSaveAsFilename
0012デフォルトの名無しさん
2015/01/12(月) 14:23:59.22ID:RtAs6kiOラージャー
今休日作戦実施中だがなにせ二等兵の見習いなんで。。。
イメージとしては、ユーザホーム上でフォルダーやファイルを選択する
ボタンやリストを乗っけて、そこからフォルダー名、ファイル名をを取得して、
選択したファイルに対して、行数カウントやらセル値操作をするボタンを
乗っけるというイメージ
(いろいろファイルを選択して、最後はOKボタンで処理実行のイメージ)
前段の
> フォルダを選択するのに FileDialog
> ファイルをセーブするのに GetSaveAsFilename
はなんとかできそうなんですが、
これらから取得した変数を次のフォーム(CommandButtom等)に引き渡せないでござる。
どうしてもだめならば、一つのボタンで、全処理実行した方いいかな。。。
0013デフォルトの名無しさん
2015/01/12(月) 14:41:53.61ID:fKsWZoh+0014デフォルトの名無しさん
2015/01/12(月) 15:21:26.81ID:RtAs6kiOpublic finenam01 As String
ってな感じで
いくつかの
sub xxxxxxx ()
End Sub
内でまたいで使用するってな感じでよろしいでんがな?
0015デフォルトの名無しさん
2015/01/12(月) 16:23:20.27ID:32vMhpLcAのエクセルブックには更新の起点となるVBAマクロがあります。
A〜Zには他のエクセルのセルやシートを参照したり変更したりしている状態になっています。
こういった状態の相関関係が複雑になってしまっているものを、チャート化するようなVBAマクロってないですか?
0016デフォルトの名無しさん
2015/01/12(月) 16:33:37.49ID:32vMhpLcどこのエクセルマクロがどこをいじって、その結果どこが影響を受けて・・・というのを
0017デフォルトの名無しさん
2015/01/12(月) 16:43:32.25ID:b1cfo7LI0018デフォルトの名無しさん
2015/01/13(火) 11:52:36.91ID:lD3kwP9C言いたいことは分かったけど
そういう機能を備えたVBAマクロが存在してるかどうかは知らない
(世界中で色んな人が色んなマクロ作ってるんだから、
どこにどんなマクロが存在しているのかなんて誰にも分るわけがない)
自前で作る事は理論上は可能だと思うけど、俺にはできない
小規模なものならできるだろうけど、
例えばひとつのブックが他のブックから数万セルの参照を受けてる、
それが数十個ある、みたいな場合に
全体の状況をチャート化するとかとてもじゃないが無理
0019デフォルトの名無しさん
2015/01/13(火) 15:44:10.28ID:HMyF52zP0020デフォルトの名無しさん
2015/01/13(火) 19:03:56.97ID:JHzht5gPそれをEXCEL VBAで複数ブック対応でグラフィカル表示出来ればいいんだろ
まあ、探せば誰か作ってるかもしれん
0021デフォルトの名無しさん
2015/01/13(火) 23:15:59.28ID:NDl0wVUrAccessだとそんな感じのツールは見かけたことがある。
0022デフォルトの名無しさん
2015/01/14(水) 20:42:54.30ID:uhw4RigZA B C D E
1 あ い う え お
2 か き く け こ
3
4
こういうシートがあったとします。
この場合一番最後の行は2行目ですが、別シートからの文章を、
一番最後の行からさらに指定した行の下に持って期待と思っております
例えば【最後の行から1行下に「さしすせと」と入力】と行った場合、
図の4行目に「さしすせそ」が入力されるといった具合です。
こういった「指定したシートの一番最後の行から、さらに指定した行を空けて文章を
入力する、持ってくる」ことができるようなメソッドはありますでしょうか?
わかりづらかったら申し訳ありません。
指摘して頂ければお答えいたします。よろしくお願いいたします。
0023デフォルトの名無しさん
2015/01/14(水) 21:43:19.63ID:zsXJlWOxlastrow = Cells(Rows.Count, "A").End(xlUp).Row
で出来る
後はそういうロジックを自分で作ればいい
0024デフォルトの名無しさん
2015/01/15(木) 08:01:20.21ID:2+tcuFL8Range(Cells(3, 1), Cells(LastRow, 7)).Copy Range(Cells(3, 1), Cells(LastRow, 7)).Insert
と書いて実行してもエラーが出ます
Rows("3:LastRow").Copy Rows("3:LastRow").Insert
行コピーでもいいんですが、やはりエラーが出ます
0025デフォルトの名無しさん
2015/01/15(木) 17:08:28.33ID:TM6j+YgZまあ「: 」(コロン)でつないでやればできるけど
ただ、コード見る限りセル範囲Aの真下に同じものを複製したいだけで、セル範囲Aの下にデータはないみたいだから
copyしてinsertなんてせずに、
Cellsの引数のLastRowをLastRow+1にするなり
コピー元のセル範囲を変数に入れといてそれをoffsetするなり
したセル範囲に代入するのがいいんじゃない
0026デフォルトの名無しさん
2015/01/15(木) 20:08:01.85ID:0Z20SaSZ0027デフォルトの名無しさん
2015/01/15(木) 21:27:14.27ID:oKiGnD+ESub 請求書作成()
Dim i As Integer
Dim Cnt As Integer
Dim Kokyaku As String
Cnt = 12
Kokyaku = "A商事"
Worksheets("請求書雛形").Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Kokyaku
Worksheets(Kokyaku).Range("A6").Value = Kokyaku
Worksheets(Kokyaku).Range("E2").Value = Date
For i = 4 To 32
If Worksheets("販売").Cells(i, 2).Value = Kokyaku Then
Worksheets(Kokyaku).Cells(Cnt, 1).Value = Worksheets("販売").Cells(i, 1).Value
Worksheets(Kokyaku).Cells(Cnt, 2).Value = Worksheets("販売").Cells(i, 3).Value
Worksheets(Kokyaku).Cells(Cnt, 3).Value = Worksheets("販売").Cells(i, 4).Value
Worksheets(Kokyaku).Cells(Cnt, 4).Value = Worksheets("販売").Cells(i, 5).Value
Worksheets(Kokyaku).Cells(Cnt, 5).Value = Worksheets("販売").Cells(i, 6).Value
End If
Next i
End Sub
これでオブジェクトエラーが生じるんですけど、何故だかわかりますか?
一応参考書どおりなはずなのですが・・・
0028デフォルトの名無しさん
2015/01/15(木) 23:22:06.84ID:zINY+dXI0029デフォルトの名無しさん
2015/01/16(金) 09:09:55.19ID:xsGnLZU7ファイル -> オプション
で開くウインドウをVBAで表示させることは出来ますか?
0030デフォルトの名無しさん
2015/01/16(金) 09:20:15.90ID:vvO7Vwb+Rows("12:15").Select って
何が違うの?
0031デフォルトの名無しさん
2015/01/16(金) 12:51:04.35ID:iLAQhcb3その使い方だと結果は変わらない。が、
Range("12:15")(1).Select
Rows("12:15")(1).Select
って感じにやると結果が変わってくる。
また、Rowsで返されたものは行単位以外での絞り込みができなかったり。
ちなみにCellsプロパティを介せば一般的なRangeに戻すことができる。
0032デフォルトの名無しさん
2015/01/17(土) 08:28:37.34ID:j2k9zBKyこの状態で別の自作のアプリ(c++、c#,vbなどなんでもよい)からそのexcelに対してvbaの関数を
実行するように指示を送るような方法は有りますか?
0033デフォルトの名無しさん
2015/01/17(土) 09:44:55.34ID:pPtCgDJH既に起動されてるEXCELだとそのオブジェクトを認識出来れば操作可能と思われる
0034デフォルトの名無しさん
2015/01/17(土) 10:34:27.93ID:j2k9zBKy>既に起動されてるEXCELだとそのオブジェクトを認識出来れば操作可能と思われる
その具体的な方法が知りたいのですが、ヒント教えて下さい。
0035デフォルトの名無しさん
2015/01/17(土) 11:55:05.34ID:gnkFi13QAPIならCoGetClassObject辺りか?
0036デフォルトの名無しさん
2015/01/17(土) 12:24:39.93ID:EcNq8Nj3操作したい言語毎にやり方が違うんで、
excel C#
のように、excelと言語名でぐぐれば出てくる
0037デフォルトの名無しさん
2015/01/17(土) 13:55:33.92ID:MaJzmOfhRows("8:15").Select
D列からF列までを選択するのをマクロの記録だと
Columns("D:F").Select
となるんですが、
これを変数を用いて範囲指定出来るようにしたい
どうすれば良いでしょうか
0038デフォルトの名無しさん
2015/01/17(土) 14:04:37.65ID:pPtCgDJHRowEnd=15
Rows(RowStart & ":" & RowEod).select
こんな意味?
0039デフォルトの名無しさん
2015/01/17(土) 14:16:54.43ID:MaJzmOfhありがとう
ついでに列の指定を教えてください
同じように
colStart = 2
colEnd = 5
Columns(colStart & ":" & colEnd).Select
としてみたら
アプリケーション定義またはオブジェクト定義のえらーです。
となりましたorz
0040デフォルトの名無しさん
2015/01/17(土) 14:24:25.49ID:pPtCgDJH0041デフォルトの名無しさん
2015/01/17(土) 14:30:53.52ID:MaJzmOfh感謝です!
0042デフォルトの名無しさん
2015/01/17(土) 14:34:15.75ID:pPtCgDJH0043デフォルトの名無しさん
2015/01/17(土) 17:28:25.92ID:hqZjO6ML0044デフォルトの名無しさん
2015/01/17(土) 18:48:46.62ID:bx3UtG1oドラクエの魔法を唱えたときのように
画面全体がピカッと光るようにしたいんですが
どうしますか?
0045デフォルトの名無しさん
2015/01/17(土) 19:16:52.52ID:ZQUumRCvパルプンテ
0046デフォルトの名無しさん
2015/01/17(土) 19:58:13.44ID:gEqaKlFU0047デフォルトの名無しさん
2015/01/18(日) 02:21:02.84ID:wo+YRjYB0048デフォルトの名無しさん
2015/01/18(日) 03:30:36.60ID:gjAl9y8i任意の数の数字にするにはどうしたら良いですか?Likeで表現出来ますか?
0049デフォルトの名無しさん
2015/01/18(日) 04:35:13.10ID:nKsy5XPl0050デフォルトの名無しさん
2015/01/18(日) 06:26:22.69ID:1pf3AaGolike句はググって出ないならないんじゃないかな。知らないけど。
regexpをグローバルで用意して、使いやすいように関数にしておけばいいよ
0051デフォルトの名無しさん
2015/01/18(日) 14:47:21.05ID:8CHX/Z2W指定したシートのセルの罫線を取得する
Dim bs As Borders
Set bs = Range("A1").Borders
http://www.tipsfound.com/VBA/07010.vbhtml
指定したシートのセルに罫線を設定する
Dim bs As Borders
Set bs = Range("A1").Borders
とあるのですが、よくわかりません
何をしたいのかというと、罫線のみのコピー&ペーストです
あるセルの罫線を「取得」してこれを変数bsに格納
そしてこのbsを使って別のセルに罫線を「設定」しようと思っているのですが
取得も設定も同じ説明になっていてよくわかりません
こういった方法ではできないのでしょうか
0052デフォルトの名無しさん
2015/01/18(日) 15:20:23.02ID:nKsy5XPl3行目のbs.LineStyle = のとこで設定
0053デフォルトの名無しさん
2015/01/18(日) 19:43:14.12ID:7UXmT3Sg例えばEXCEL2010を起動した時に、他にもEXCEL2010やEXCEL2013の
プロセスが実行中かどうか知る方法はありますか?
プロセスの取得自体なら出来そうですが、その中にEXCEL.EXEがあった
として、それが2010なのか2013なのか、どうやれば区別できるのか
分りません。良いアディアが有れば教えて下さい。
0054デフォルトの名無しさん
2015/01/18(日) 19:58:55.01ID:ENvWPWHOEXEのフルパスさえ取れれば何とかなるでしょ。
0055デフォルトの名無しさん
2015/01/19(月) 02:34:29.99ID:aeY3ubQM$p = get-process TeraPad
$p.Name
TeraPad
$p.Description
TeraPad
$p.FileVersion
1.0.9.0
$p.Path
C:\Users\Owner\Desktop\TeraPad109\TeraPad.exe
デスクトップに置いている
$p.Product
TeraPad
$p.ProductVersion
1.09
0056デフォルトの名無しさん
2015/01/19(月) 10:35:13.92ID:wwRTBdF8このA()である処理をさせて、途中でボタン付きのフォームを出して
押したボタンによってある座標に文字を記入させようとしたいんだけど
フォームのボタンを押した時の処理って、
フォーム→名前入力フォーム の中のプロシージャ Private Sub Button1_click()でやるんだよね
これってA()の途中で 名前入力フォーム.Show でフォームを出して Private Sub Button1_click() に飛ぶんだけど
ここではA()で求めた座標の情報が無いから入力できない
A()の座標情報を飛ばそうと思って、Public Sub Button1_click()にして
Call Form_名前入力フォーム.Button1_click()で呼び出してもエラーが出るし
どうしたらいいの?
005756
2015/01/19(月) 10:37:07.07ID:wwRTBdF8Call Form_名前入力フォーム.Button1_click(n)で呼び出してもエラーが出るし
0058デフォルトの名無しさん
2015/01/19(月) 10:45:04.98ID:Kmrk/czY・フォームコントロール
・ActiveXコントロール
と2つあってそれぞれほぼ似たようなものが入ってます。
どっち使うのが得策ですか?
こういうのは決まって最初はどちらかがオリジナルだけどあとで最新技術かなにかで古いほうは奨励されないけど互換性のためそのまま残している、
というストーリーが想像されます。
そういうのも含めて似たようなものが2つある理由を詳しく教えていただけませんか?
0059デフォルトの名無しさん
2015/01/19(月) 11:18:59.82ID:Kmrk/czYオブジェクト変数に何かを代入するのは簡単です。
Set オブジェクト変数=(なんかのオブジェクト)
とすればいいだけです。
ではオブジェクト変数に入ってるものを取り出すにはどうやるのですか?
例えば1つのセルで超カッコいいフォントを使ってるので
Dim 超イイフォント as Object
Set 超イイフォント=Cells(1,1)
とお気に入りのフォントを用意しておき
それを他のセルにも適用したいときに使いたいんです。
0060デフォルトの名無しさん
2015/01/19(月) 11:20:01.79ID:Kmrk/czYSet 超イイフォント=Cells(1,1).Font
0061デフォルトの名無しさん
2015/01/19(月) 11:25:30.86ID:Kmrk/czYFontのメンバのうちName、Size、Boldとかは引き継がれるけどColorは引き継がれない。
0062デフォルトの名無しさん
2015/01/19(月) 12:32:28.37ID:Wmpd31BHとりあえず簡単な方法は
module1にPublicな変数を定義してフォームモジュールからはmodule1.変数名でアクセス
>>59-61
取り出しは違うものに代入するだけだから代入と同じ
ただし、Range.Fontは読み取り専用だからFontそのものに代入はできない
個々のプロパティを代入してやれば同じ見た目になるだろ
Colorが引き継がれないっぽいのは、セルの色はRange.Fontじゃなくて
Range.Characters.Fontで文字ごとに設定されてるからじゃないかと
006356
2015/01/19(月) 14:34:01.47ID:wwRTBdF8モジュールレベルでの宣言じゃなくて
プロシージャレベルの宣言だけでもっとスマートにできるやり方ないですか?
0064デフォルトの名無しさん
2015/01/19(月) 16:55:15.01ID:IywTVsIeDim s as String = "初期値"
みたいな初期化は出来ないのでしょうか?
0065デフォルトの名無しさん
2015/01/19(月) 17:03:35.69ID:Wmpd31BHプロシージャレベルの宣言ってことは、そのプロシージャ以外からは一切関知しませんって宣言だぞ
標準モジュールに変数定義するのがいやなら、フォーム(モジュール)にPublicで定義してもいいけど
その場合はフォームの寿命とかインスタンスとか意識しないとダメ
0066デフォルトの名無しさん
2015/01/19(月) 17:06:38.16ID:Wmpd31BHVBAでは出来ない
試せばすぐわかるだろう
0067デフォルトの名無しさん
2015/01/19(月) 20:18:04.03ID:vqISfLuNグラフのプロットエリアのサイズ指定処理である時別な条件で実行時エラーがでる。
エラーがでる部分の実際のコードはこんな感じ。グラフエリアは問題なく,プロットエリアのみ発生。
With .Chart.PlotArea
.Left = L <---この行で.Widthでもエラーになる。Leftメソッドが失敗しましたとか。
.Width = W
・・・
End With
特別な条件とは以下の通り。
1.Excelファイルをオープンした直後の1回目の処理のみ。(エラー後2回目は正常処理)
2.オープン直後の表示領域に特定の部分が表示されていない場合のみエラー発生。
スクロールで特定場所を一度でも画面表示した場合はエラー発生しない。
3.グラフAとBがあり,先に処理するAでは発生せず後で処理するBのみ発生。
特定の領域とはグラフAのグラフエリア下端直線部。
それなら、マクロでスクロールとかすればと思うが,表示させないとエラーとなる。
Application.ScreenUpdating = False <---これがあるとだめ。
何がおこっているのかさっぱりわからない。誰かHELP。
0068デフォルトの名無しさん
2015/01/19(月) 20:32:30.07ID:rJO98qYq0069デフォルトの名無しさん
2015/01/19(月) 20:32:58.06ID:tiLe1QF5>With .Chart.PlotArea
これって更に上位に With あるの?
0070デフォルトの名無しさん
2015/01/19(月) 20:46:42.77ID:soodl7cW0071デフォルトの名無しさん
2015/01/19(月) 20:49:54.89ID:vqISfLuN3台のPCですべてだめ。win7 64bitもある。
>>69
もちろんある。こんなの。
With Sheets(1).ChartObjects(Obj)
・・・
End with
0072デフォルトの名無しさん
2015/01/19(月) 20:57:36.71ID:vqISfLuN全部は無理。前段でこんな処理しているがまずいかな。
With Sheets(1).ChartObjects(Obj).Chart
With .Axes(xlValue)
.TickLabels.AutoScaleFont = False
.TickLabels.Font.Size = 10
End With
With .Axes(xlCategory)
.TickLabels.AutoScaleFont = False
.TickLabels.Font.Size = 10
End With
End With
グラフエリア下端は目盛の表示エリアでもあるが???
0073デフォルトの名無しさん
2015/01/19(月) 21:03:35.88ID:rJO98qYqじゃあ再現可能な最小コードを作ってアップロードの流れだね
家のPCエクセル入ってないからおれは見れないけど鼻ほじ
0074デフォルトの名無しさん
2015/01/19(月) 21:05:10.90ID:soodl7cW0075デフォルトの名無しさん
2015/01/19(月) 21:19:45.00ID:vqISfLuNデフォルトのオブジェクトプロパティーはソースコードには書いてないし,
チャートオブジェクトは数千行のソースコードの中で随時操作している。
>>74
別に何でもない。代入している変数名は省略。
そもそも99%は正常に動作するのでこの部分ではわからない。
指定の順序に問題があるかもしれないが..
With Sheets(1).ChartObjects(Obj)
.Left =
.Top =
.Width =
.Height =
With .Chart.PlotArea
.Format.Line.Weight = 0.5
.Left =
.Width =
0076デフォルトの名無しさん
2015/01/19(月) 21:46:02.74ID:vqISfLuN問題の本質は画面スクロールするだけでなぜエラーが発生しなくなるのかということ。
ソースコードの初期化でもなく,エクセル自体の内部変数の問題と予想。
どこかの,何かのプロパティを初期設定する必要があるのかもしれない。
0077デフォルトの名無しさん
2015/01/19(月) 22:10:47.46ID:Wmpd31BHグラフオブジェクト、ある種のエラーとか2回目以降は握りつぶしてるぞ
0078デフォルトの名無しさん
2015/01/19(月) 23:56:47.69ID:FlOINZHK0079デフォルトの名無しさん
2015/01/19(月) 23:58:25.47ID:FlOINZHK視力も落ちてきたし
0080デフォルトの名無しさん
2015/01/20(火) 05:15:26.62ID:iuLmkOeX自分で当たり前と思ってる事が…
0081デフォルトの名無しさん
2015/01/20(火) 05:21:25.00ID:iuLmkOeX1.発生してるイベント名
2.正確なエラーメッセージ
3.With .Chart.PlotAreaは参照出来るか
4..Left = Lは参照出来るか
自分で解決出来ないんだから自分で怪しいと思った事ではなくて、まず何が起きているか他人が客観的に判断出来る情報だけを提示しような
0082デフォルトの名無しさん
2015/01/20(火) 06:19:40.78ID:6mGj69QS正確なエラーメッセージは以下の通り。
実行時エラー ' -2147467259 (80004005)':
'Left' メソッドは失敗しました:'PlotArea'オブジェクト
Widthと行を入れ替えるとWidthのエラーとなる。
エラーストップしても,最初から再実行するとエラーは2度と出ない。
ユーザーがグラフを移動したりサイズ変更した場合を想定して,
元の位置とサイズに再設定するマクロになっている。
なので,マクロ実行時にはグラフは存在している。線と目盛を
書き変えるマクロ。
0083デフォルトの名無しさん
2015/01/20(火) 07:00:04.66ID:iuLmkOeX当面的に無理やり通すならresumeかgoto駆使する
あとは、workbook.loadイベントでワザとエラー発生させとくとか
0084デフォルトの名無しさん
2015/01/20(火) 07:06:38.60ID:iuLmkOeXまだオブジェクトが認識されてないんでね?
0085デフォルトの名無しさん
2015/01/20(火) 08:41:20.38ID:dg0GDE71書けるようになってきた反面、破綻寸前です
0086デフォルトの名無しさん
2015/01/20(火) 09:05:42.56ID:tR2SZl1M初期値が入っていないのかも?
b
a=b
宣言だけして、初期化しなかった変数を使ってエラー
b=0 などと宣言と同時に、初期値が入っていれば、
エラーは起きない
0087デフォルトの名無しさん
2015/01/20(火) 09:23:54.97ID:GsFnMcAhだったら見られても分りにくくする難読化のツールありますか?
ググッてもVBA用のは無いようなのですが。
0088デフォルトの名無しさん
2015/01/20(火) 09:36:37.55ID:iwY+YMua0089デフォルトの名無しさん
2015/01/20(火) 11:00:46.84ID:GsFnMcAh一切出来なくなりますが、EXCELのウインドウの移動なども出来なくなり
不便なので、Ribbonの操作とか、セルの操作とか、そういうのだけ
禁止する方法ありますか?
0090デフォルトの名無しさん
2015/01/20(火) 11:16:17.35ID:h3ZK+Qpq例えばフォームで「会員No.XXXXを登録しますか?」と表示させて
その下のボタン、「登録」「保留」「キャンセル」を押して決めるとか
XXXXは指定のセルから数値を読み取るとか
0091デフォルトの名無しさん
2015/01/20(火) 11:34:42.01ID:jGkVNXKd俺と同じだw
今現在は一箇所のフォルダにファイル名_バージョン.xlsm xxxx_000080.xlsm etc
にしてるけど、
使いやすいバージョン管理システムを見てまわってるところw
0092デフォルトの名無しさん
2015/01/20(火) 12:56:00.67ID:9WW5KIHI0093デフォルトの名無しさん
2015/01/20(火) 14:49:13.72ID:hS3N5Hvvラベル使ってcaption変えればいいのては?
009490
2015/01/20(火) 17:42:27.69ID:h3ZK+Qpqそれだとナンバーを毎回手動で変えることになるんですか?
0095デフォルトの名無しさん
2015/01/20(火) 18:11:15.93ID:jGkVNXKdってことなんじゃ
0096デフォルトの名無しさん
2015/01/20(火) 19:30:26.59ID:6mGj69QSレスありがとう。
原因不明のままだが,下記のデバッグ用の一行を挿入したら,
エラーそのものが発生しなくなった。
With Sheets(1).ChartObjects(Obj)
.Left =
.Top =
.Width =
.Height =
With .Chart.PlotArea
.Format.Line.Weight = 0.5
A = .Left <---この一行を入れるとエラーが出なくなった。.WidthでもOK。
.Left = L
.Width =
結局,EXCEL内部データが初期化不十分で,プロパティ読みだし操作で
初期化されるものと思われる。
0097デフォルトの名無しさん
2015/01/20(火) 20:52:58.14ID:6mGj69QS自己レス
グラフのサイズ指定処理だが,一番最初に以下の処理で
画面ズームサイズを保存して一定値にしてからでないと,
グラフサイズが正確に指定できない。これもEXCELの不具合。
Z = ActiveWindow.Zoom
ActiveWindow.Zoom = 一定値
グラフサイズ指定処理
ActiveWindow.Zoom = Z
0098デフォルトの名無しさん
2015/01/20(火) 21:07:42.46ID:iwY+YMua現状では誰も信じないと思うよ。
0099デフォルトの名無しさん
2015/01/20(火) 21:18:01.98ID:6mGj69QS現象を報告しているのみ。ネットでも類似報告はある。
ただ,そういう経験がなけば無視すればよい。
0100デフォルトの名無しさん
2015/01/20(火) 22:16:47.34ID:Q1gKznlwここで不十分な報告しても何の役にも立たん
0101デフォルトの名無しさん
2015/01/21(水) 01:26:50.20ID:a4gaLSo8だからどのイベントか書けよ
■ このスレッドは過去ログ倉庫に格納されています