Excel VBA 質問スレ Part36 [転載禁止]©2ch.net at TECH
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net - 暇つぶし2ch1:デフォルトの名無しさん
15/01/09 16:59:02.80 GzFHQ3J4
ExcelのVBAに関する質問スレです

★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
スレリンク(tech板)

関連スレ:VBAなんでも質問スレ
スレリンク(tech板)

2:デフォルトの名無しさん
15/01/09 17:00:05.94 GzFHQ3J4
01 スレリンク(tech板)
02 スレリンク(tech板)
03 スレリンク(tech板)
04 スレリンク(tech板)
05 スレリンク(tech板)
06 スレリンク(tech板)
07 スレリンク(tech板)
08 スレリンク(tech板)
09 スレリンク(tech板)
10 スレリンク(tech板)
11 スレリンク(tech板)
12 スレリンク(tech板)
13 スレリンク(tech板)
14 スレリンク(tech板)
15 スレリンク(tech板)
16 スレリンク(tech板)
17 スレリンク(tech板)
18 スレリンク(tech板)
19 スレリンク(tech板)
20 スレリンク(tech板)

3:デフォルトの名無しさん
15/01/09 17:00:35.92 GzFHQ3J4
21 スレリンク(tech板)
22 スレリンク(tech板)
23 スレリンク(tech板)
24 スレリンク(tech板)
25 スレリンク(tech板)
26 スレリンク(tech板)
27 スレリンク(tech板)
28 スレリンク(tech板)
29 スレリンク(tech板)
30 スレリンク(tech板)
31 スレリンク(tech板)
32 スレリンク(tech板)
33 スレリンク(tech板)
34 スレリンク(tech板)
35 スレリンク(tech板)

4:デフォルトの名無しさん
15/01/09 17:28:33.56 BcP6vX0h
テンプレを改悪した上での重複スレです
正しい次スレはこちらです
スレリンク(tech板)l50

5:デフォルトの名無しさん
15/01/10 23:41:25.43 xy8zfnqH
vbaプロジェクトのパスワードを忘れてしまったのですが
メモ張から見てわかりますでしょうか

6:デフォルトの名無しさん
15/01/11 02:32:30.02 RQUzAnWc
>>5
このスレはテンプレが絶対です。
あなたの質問は>>1★2に抵触します。
VBAの質問で無ければ例え雑談と言えどもスレ違いとなりますので、他でやって下さい。

7:デフォルトの名無しさん
15/01/11 13:10:14.57 tSIQw0Ly
昔のブックならどこかにパスの文字列が表示されたけど
今はなにかしらのコーディングがされてるはず

8:デフォルトの名無しさん
15/01/11 15:49:05.34 FbuCuKO8
VBAのユーザフォームを利用して、
フォルダ選択画面を出してファイル選択をしたいんだか、
そんなツールボックスってある?

9:デフォルトの名無しさん
15/01/11 16:01:58.35 KxuOmHMJ
GetOpenFilename

10:デフォルトの名無しさん
15/01/12 11:15:48.18 RtAs6kiO
>GetOpenFilename
Thanks!
これを使えばユーザーフォームのコントロール(ツールボタン?)から
CommandButtomでファイル名選択、取得出来ることはわかったんですが、
CommandButtom以外にエクスプローラのような形式で選択できる
コントロールフォームはあるのですか?

11:デフォルトの名無しさん
15/01/12 13:03:43.73 b1cfo7LI
フォルダを選択するのに FileDialog
ファイルをセーブするのに GetSaveAsFilename

12:デフォルトの名無しさん
15/01/12 14:23:59.22 RtAs6kiO
メルシーボク!
ラージャー
今休日作戦実施中だがなにせ二等兵の見習いなんで。。。

イメージとしては、ユーザホーム上でフォルダーやファイルを選択する
ボタンやリストを乗っけて、そこからフォルダー名、ファイル名をを取得して、
選択したファイルに対して、行数カウントやらセル値操作をするボタンを
乗っけるというイメージ
(いろいろファイルを選択して、最後はOKボタンで処理実行のイメージ)

前段の

> フォルダを選択するのに FileDialog
> ファイルをセーブするのに GetSaveAsFilename

はなんとかできそうなんですが、
これらから取得した変数を次のフォーム(CommandButtom等)に引き渡せないでござる。
どうしてもだめならば、一つのボタンで、全処理実行した方いいかな。。。

13:デフォルトの名無しさん
15/01/12 14:41:53.61 fKsWZoh+
つ グローバル変数

14:デフォルトの名無しさん
15/01/12 15:21:26.81 RtAs6kiO
らーじゃー

public finenam01 As String

ってな感じで

いくつかの

sub xxxxxxx ()
End Sub

内でまたいで使用するってな感じでよろしいでんがな?

15:デフォルトの名無しさん
15/01/12 16:23:20.27 32vMhpLc
A~Zまでのエクセルブックがあるとします。

Aのエクセルブックには更新の起点となるVBAマクロがあります。
A~Zには他のエクセルのセルやシートを参照したり変更したりしている状態になっています。

こういった状態の相関関係が複雑になってしまっているものを、チャート化するようなVBAマクロってないですか?

16:デフォルトの名無しさん
15/01/12 16:33:37.49 32vMhpLc
相関関係ができているごちゃごちゃなエクセルファイルの連携を自動で調べたいの
どこのエクセルマクロがどこをいじって、その結果どこが影響を受けて・・・というのを

17:デフォルトの名無しさん
15/01/12 16:43:32.25 b1cfo7LI
何を書いているのか何を言いたいのかさっぱり判らない

18:デフォルトの名無しさん
15/01/13 11:52:36.91 lD3kwP9C
>>15-16
言いたいことは分かったけど
そういう機能を備えたVBAマクロが存在してるかどうかは知らない
(世界中で色んな人が色んなマクロ作ってるんだから、
どこにどんなマクロが存在しているのかなんて誰にも分るわけがない)

自前で作る事は理論上は可能だと思うけど、俺にはできない

小規模なものならできるだろうけど、
例えばひとつのブックが他のブックから数万セルの参照を受けてる、
それが数十個ある、みたいな場合に
全体の状況をチャート化するとかとてもじゃないが無理

19:デフォルトの名無しさん
15/01/13 15:44:10.28 HMyF52zP
JSのライブラリのように知らない人のマクロをネットから使うんだろうか

20:デフォルトの名無しさん
15/01/13 19:03:56.97 JHzht5gP
VB対応のクロスリファレンス出すようなツールは見たことあるけど
それをEXCEL VBAで複数ブック対応でグラフィカル表示出来ればいいんだろ

まあ、探せば誰か作ってるかもしれん

21:デフォルトの名無しさん
15/01/13 23:15:59.28 NDl0wVUr
>>20
Accessだとそんな感じのツールは見かけたことがある。

22:デフォルトの名無しさん
15/01/14 20:42:54.30 uhw4RigZ
質問です。

A  B  C  D  E
1 あ い う え お
2 か き く け こ



こういうシートがあったとします。
この場合一番最後の行は2行目ですが、別シートからの文章を、
一番最後の行からさらに指定した行の下に持って期待と思っております
例えば【最後の行から1行下に「さしすせと」と入力】と行った場合、
図の4行目に「さしすせそ」が入力されるといった具合です。

こういった「指定したシートの一番最後の行から、さらに指定した行を空けて文章を
入力する、持ってくる」ことができるようなメソッドはありますでしょうか?
わかりづらかったら申し訳ありません。
指摘して頂ければお答えいたします。よろしくお願いいたします。

23:デフォルトの名無しさん
15/01/14 21:43:19.63 zsXJlWOx
現在の最終行を知るのは
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
で出来る
後はそういうロジックを自分で作ればいい

24:デフォルトの名無しさん
15/01/15 08:01:20.21 2+tcuFL8
コピー&挿入貼り付け に関して一行で実現できますか?
Range(Cells(3, 1), Cells(LastRow, 7)).Copy Range(Cells(3, 1), Cells(LastRow, 7)).Insert
と書いて実行してもエラーが出ます
Rows("3:LastRow").Copy Rows("3:LastRow").Insert
行コピーでもいいんですが、やはりエラーが出ます

25:デフォルトの名無しさん
15/01/15 17:08:28.33 TM6j+YgZ
改行しないと無理でしょ
まあ「: 」(コロン)でつないでやればできるけど

ただ、コード見る限りセル範囲Aの真下に同じものを複製したいだけで、セル範囲Aの下にデータはないみたいだから
copyしてinsertなんてせずに、
Cellsの引数のLastRowをLastRow+1にするなり
コピー元のセル範囲を変数に入れといてそれをoffsetするなり
したセル範囲に代入するのがいいんじゃない

26:デフォルトの名無しさん
15/01/15 20:08:01.85 0Z20SaSZ
質問スレではなく、Excel VBA 初心者相談スレが必要だなと、たまに思う

27:デフォルトの名無しさん
15/01/15 21:27:14.27 oKiGnD+E
Option Explicit
Sub 請求書作成()
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

これでオブジェクトエラーが生じるんですけど、何故だかわかりますか?
一応参考書どおりなはずなのですが・・・

28:デフォルトの名無しさん
15/01/15 23:22:06.84 zINY+dXI
その名前のワークシートはあるの?

29:デフォルトの名無しさん
15/01/16 09:09:55.19 xsGnLZU7
Excel2010で
ファイル  -> オプション
で開くウインドウをVBAで表示させることは出来ますか?

30:デフォルトの名無しさん
15/01/16 09:20:15.90 vvO7Vwb+
Range("12:15").Select と
Rows("12:15").Select って
何が違うの?

31:デフォルトの名無しさん
15/01/16 12:51:04.35 iLAQhcb3
>>30
その使い方だと結果は変わらない。が、
Range("12:15")(1).Select
Rows("12:15")(1).Select
って感じにやると結果が変わってくる。
また、Rowsで返されたものは行単位以外での絞り込みができなかったり。
ちなみにCellsプロパティを介せば一般的なRangeに戻すことができる。

32:デフォルトの名無しさん
15/01/17 08:28:37.34 j2k9zBKy
excelでvbaを持ったbook1を開いているとします。
この状態で別の自作のアプリ(c++、c#,vbなどなんでもよい)からそのexcelに対してvbaの関数を
実行するように指示を送るような方法は有りますか?

33:デフォルトの名無しさん
15/01/17 09:44:55.34 pPtCgDJH
自作アプリからEXCELを起動して操作するなら可能
既に起動されてるEXCELだとそのオブジェクトを認識出来れば操作可能と思われる

34:デフォルトの名無しさん
15/01/17 10:34:27.93 j2k9zBKy
>>33
>既に起動されてるEXCELだとそのオブジェクトを認識出来れば操作可能と思われる
その具体的な方法が知りたいのですが、ヒント教えて下さい。

35:デフォルトの名無しさん
15/01/17 11:55:05.34 gnkFi13Q
VB.NETならGetObject関数で取れる。WSHも同名関数で。
APIならCoGetClassObject辺りか?

36:デフォルトの名無しさん
15/01/17 12:24:39.93 EcNq8Nj3
>>34
操作したい言語毎にやり方が違うんで、

excel C#

のように、excelと言語名でぐぐれば出てくる

37:デフォルトの名無しさん
15/01/17 13:55:33.92 MaJzmOfh
例えば8行目から15行目までを選択するのをマクロの記録だと
Rows("8:15").Select
D列からF列までを選択するのをマクロの記録だと
Columns("D:F").Select
となるんですが、
これを変数を用いて範囲指定出来るようにしたい

どうすれば良いでしょうか

38:デフォルトの名無しさん
15/01/17 14:04:37.65 pPtCgDJH
RowStart=8
RowEnd=15
Rows(RowStart & ":" & RowEod).select
こんな意味?

39:デフォルトの名無しさん
15/01/17 14:16:54.43 MaJzmOfh
>>38
ありがとう
ついでに列の指定を教えてください
同じように
colStart = 2
colEnd = 5
Columns(colStart & ":" & colEnd).Select
としてみたら
アプリケーション定義またはオブジェクト定義のえらーです。
となりましたorz

40:デフォルトの名無しさん
15/01/17 14:24:25.49 pPtCgDJH
 Range(Columns(1),Columns(3)).Select  列AからCまでを選択

41:デフォルトの名無しさん
15/01/17 14:30:53.52 MaJzmOfh
>>40
感謝です!

42:デフォルトの名無しさん
15/01/17 14:34:15.75 pPtCgDJH
RowをColumnと同じ形にして統一した方がいいかもね

43:デフォルトの名無しさん
15/01/17 17:28:25.92 hqZjO6ML
やばい、うんこしたくなってきた

44:デフォルトの名無しさん
15/01/17 18:48:46.62 bx3UtG1o
フォーム上のボタンを押�


45:オたとき ドラクエの魔法を唱えたときのように 画面全体がピカッと光るようにしたいんですが どうしますか?



46:デフォルトの名無しさん
15/01/17 19:16:52.52 ZQUumRCv
>>44
パルプンテ

47:デフォルトの名無しさん
15/01/17 19:58:13.44 gEqaKlFU
見えてる範囲のセルを選択・選択しないを繰り返す

48:デフォルトの名無しさん
15/01/18 02:21:02.84 wo+YRjYB
ボタンを押したと同時に死ねばいいよ

49:デフォルトの名無しさん
15/01/18 03:30:36.60 gjAl9y8i
Likeパターンマッチングで、「*」は任意の数の文字だけど
任意の数の数字にするにはどうしたら良いですか?Likeで表現出来ますか?

50:デフォルトの名無しさん
15/01/18 04:35:13.10 nKsy5XPl
isnumeric()

51:デフォルトの名無しさん
15/01/18 06:26:22.69 1pf3AaGo
>>48
like句はググって出ないならないんじゃないかな。知らないけど。
regexpをグローバルで用意して、使いやすいように関数にしておけばいいよ

52:デフォルトの名無しさん
15/01/18 14:47:21.05 8CHX/Z2W
URLリンク(www.tipsfound.com)
指定したシートのセルの罫線を取得する
Dim bs As Borders
Set bs = Range("A1").Borders

URLリンク(www.tipsfound.com)
指定したシートのセルに罫線を設定する
Dim bs As Borders
Set bs = Range("A1").Borders



とあるのですが、よくわかりません
何をしたいのかというと、罫線のみのコピー&ペーストです
あるセルの罫線を「取得」してこれを変数bsに格納
そしてこのbsを使って別のセルに罫線を「設定」しようと思っているのですが
取得も設定も同じ説明になっていてよくわかりません
こういった方法ではできないのでしょうか

53:デフォルトの名無しさん
15/01/18 15:20:23.02 nKsy5XPl
>>51
3行目のbs.LineStyle = のとこで設定

54:デフォルトの名無しさん
15/01/18 19:43:14.12 7UXmT3Sg
EXCEL2010と2013の両方がインストールされているWin7環境で、
例えばEXCEL2010を起動した時に、他にもEXCEL2010やEXCEL2013の
プロセスが実行中かどうか知る方法はありますか?
プロセスの取得自体なら出来そうですが、その中にEXCEL.EXEがあった
として、それが2010なのか2013なのか、どうやれば区別できるのか
分りません。良いアディアが有れば教えて下さい。

55:デフォルトの名無しさん
15/01/18 19:58:55.01 ENvWPWHO
WMIのWin32_Process辺りでいけるんじゃない?
EXEのフルパスさえ取れれば何とかなるでしょ。

56:デフォルトの名無しさん
15/01/19 02:34:29.99 aeY3ubQM
powershell_ise を使って、TeraPad について調べてみた
$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

57:デフォルトの名無しさん
15/01/19 10:35:13.92 wwRTBdF8
標準モジュール→module1 の中のあるプロシージャ Sub A()について
このA()である処理をさせて、途中でボタン付きのフォームを出して
押したボタンによってある座標に文字を記入させようとしたいんだけど
フォームのボタンを押した時の処理って、
フォーム→名前入力フォーム の中のプロシージャ Private Sub Button1_click()でやるんだよね
これってA()の途中で 名前入力フォーム.Show でフォームを出して Private Sub Button1_click() に飛ぶんだけど
ここではA()で求めた座標の情報が無いから入力できない
A()の座標情報を飛ばそうと思って、Public Sub Button1_click()にして
Call Form_名前入力フォーム.Button1_click()で呼び出してもエラーが出るし

どうしたらいいの?

58:56
15/01/19 10:37:07.07 wwRTBdF8
訂正
Call Form_名前入力フォーム.Button1_click(n)で呼び出してもエラーが出るし

59:デフォルトの名無しさん
15/01/19 10:45:04.98 Kmrk/czY
シートにボタンなどいろいろベタベタ貼り付けようと思うのですが
・フォームコントロール
・ActiveXコントロール
と2つあってそれぞれほぼ似たようなものが入ってます。

どっち使うのが得策ですか?
こういうのは決まって最初はどちらかがオリジナルだけどあとで最新技術かなにかで古いほうは奨励されないけど互換性のためそのまま残している、
というストーリーが想像されます。
そういうのも含めて似たようなものが2つある理由を詳しく教えていただけませんか?

60:デフォルトの名無しさん
15/01/19 11:18:59.82 Kmrk/czY
オブジェクト変数についての質問です。

オブジェクト変数に何かを代入するのは簡単です。
Set オブジェクト変数=(なんかのオブジェクト)
とすればいいだけです。

ではオブジェクト変数に入ってるものを取り出す�


61:ノはどうやるのですか? 例えば1つのセルで超カッコいいフォントを使ってるので Dim 超イイフォント as Object Set 超イイフォント=Cells(1,1) とお気に入りのフォントを用意しておき それを他のセルにも適用したいときに使いたいんです。



62:デフォルトの名無しさん
15/01/19 11:20:01.79 Kmrk/czY
[訂正]
Set 超イイフォント=Cells(1,1).Font

63:デフォルトの名無しさん
15/01/19 11:25:30.86 Kmrk/czY
不思議なのは
FontのメンバのうちName、Size、Boldとかは引き継がれるけどColorは引き継がれない。

64:デフォルトの名無しさん
15/01/19 12:32:28.37 Wmpd31BH
>>56
とりあえず簡単な方法は
module1にPublicな変数を定義してフォームモジュールからはmodule1.変数名でアクセス

>>59-61
取り出しは違うものに代入するだけだから代入と同じ
ただし、Range.Fontは読み取り専用だからFontそのものに代入はできない
個々のプロパティを代入してやれば同じ見た目になるだろ

Colorが引き継がれないっぽいのは、セルの色はRange.Fontじゃなくて
Range.Characters.Fontで文字ごとに設定されてるからじゃないかと

65:56
15/01/19 14:34:01.47 wwRTBdF8
フォームのボタン押したら~するっていう処理って結構あると思うんだけど
モジュールレベルでの宣言じゃなくて
プロシージャレベルの宣言だけでもっとスマートにできるやり方ないですか?

66:デフォルトの名無しさん
15/01/19 16:55:15.01 IywTVsIe
Dim i as Integer = 100
Dim s as String = "初期値"

みたいな初期化は出来ないのでしょうか?

67:デフォルトの名無しさん
15/01/19 17:03:35.69 Wmpd31BH
>>63
プロシージャレベルの宣言ってことは、そのプロシージャ以外からは一切関知しませんって宣言だぞ
標準モジュールに変数定義するのがいやなら、フォーム(モジュール)にPublicで定義してもいいけど
その場合はフォームの寿命とかインスタンスとか意識しないとダメ

68:デフォルトの名無しさん
15/01/19 17:06:38.16 Wmpd31BH
>>64
VBAでは出来ない
試せばすぐわかるだろう

69:デフォルトの名無しさん
15/01/19 20:18:04.03 vqISfLuN
win7 32bitのExcel2010のグラフ関係のマクロで変なバグに悩まされている。

グラフのプロットエリアのサイズ指定処理である時別な条件で実行時エラーがでる。
エラーがでる部分の実際のコードはこんな感じ。グラフエリアは問題なく,プロットエリアのみ発生。
With .Chart.PlotArea
.Left = L <---この行で.Widthでもエラーになる。Leftメソッドが失敗しましたとか。
.Width = W
・・・
End With

特別な条件とは以下の通り。
1.Excelファイルをオープンした直後の1回目の処理のみ。(エラー後2回目は正常処理)
2.オープン直後の表示領域に特定の部分が表示さ�


70:黷トいない場合のみエラー発生。   スクロールで特定場所を一度でも画面表示した場合はエラー発生しない。 3.グラフAとBがあり,先に処理するAでは発生せず後で処理するBのみ発生。 特定の領域とはグラフAのグラフエリア下端直線部。 それなら、マクロでスクロールとかすればと思うが,表示させないとエラーとなる。 Application.ScreenUpdating = False <---これがあるとだめ。 何がおこっているのかさっぱりわからない。誰かHELP。



71:デフォルトの名無しさん
15/01/19 20:32:30.07 rJO98qYq
まず原因の切り分けとして別PCではどう?

72:デフォルトの名無しさん
15/01/19 20:32:58.06 tiLe1QF5
グラフ名指定してないからじゃねーの(鼻ほじ

>With .Chart.PlotArea
これって更に上位に With あるの?

73:デフォルトの名無しさん
15/01/19 20:46:42.77 soodl7cW
とりあえず、ソース全部貼って見たら?

74:デフォルトの名無しさん
15/01/19 20:49:54.89 vqISfLuN
>>68
3台のPCですべてだめ。win7 64bitもある。

>>69
もちろんある。こんなの。
With Sheets(1).ChartObjects(Obj)
・・・


End with

75:デフォルトの名無しさん
15/01/19 20:57:36.71 vqISfLuN
>>70
全部は無理。前段でこんな処理しているがまずいかな。

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

グラフエリア下端は目盛の表示エリアでもあるが???

76:デフォルトの名無しさん
15/01/19 21:03:35.88 rJO98qYq
>>71
じゃあ再現可能な最小コードを作ってアップロードの流れだね
家のPCエクセル入ってないからおれは見れないけど鼻ほじ

77:デフォルトの名無しさん
15/01/19 21:05:10.90 soodl7cW
エラーになってるところじゃなくて前段の処理を貼られてしまって思わず困惑

78:デフォルトの名無しさん
15/01/19 21:19:45.00 vqISfLuN
>>73
デフォルトのオブジェクトプロパティーはソースコードには書いてないし,
チャートオブジェクトは数千行のソースコードの中で随時操作している。

>>74
別に何でもない。代入している変数名は省略。
そもそも99%は正常に動作するのでこの部分ではわからない。
指定の順序に問題があるかもしれないが..

With Sheets(1).ChartObjects(Obj)



79: .Left = .Top = .Width = .Height = With .Chart.PlotArea .Format.Line.Weight = 0.5 .Left = .Width =



80:デフォルトの名無しさん
15/01/19 21:46:02.74 vqISfLuN
自分で考えたこと。

問題の本質は画面スクロールするだけでなぜエラーが発生しなくなるのかということ。
ソースコードの初期化でもなく,エクセル自体の内部変数の問題と予想。

どこかの,何かのプロパティを初期設定する必要があるのかもしれない。

81:デフォルトの名無しさん
15/01/19 22:10:47.46 Wmpd31BH
それホントに2回目は正常に「処理されてる」のか?
グラフオブジェクト、ある種のエラーとか2回目以降は握りつぶしてるぞ

82:デフォルトの名無しさん
15/01/19 23:56:47.69 FlOINZHK
やばいまたうんこしたくなってきた

83:デフォルトの名無しさん
15/01/19 23:58:25.47 FlOINZHK
最近糖尿のせいか夜尿でおきるんだよね
視力も落ちてきたし

84:デフォルトの名無しさん
15/01/20 05:15:26.62 iuLmkOeX
>>75
自分で当たり前と思ってる事が…

85:デフォルトの名無しさん
15/01/20 05:21:25.00 iuLmkOeX
>>67
1.発生してるイベント名
2.正確なエラーメッセージ
3.With .Chart.PlotAreaは参照出来るか
4..Left = Lは参照出来るか




86: 自分で解決出来ないんだから自分で怪しいと思った事ではなくて、まず何が起きているか他人が客観的に判断出来る情報だけを提示しような



87:デフォルトの名無しさん
15/01/20 06:19:40.78 6mGj69QS
>>81
正確なエラーメッセージは以下の通り。

実行時エラー ' -2147467259 (80004005)':
'Left' メソッドは失敗しました:'PlotArea'オブジェクト

Widthと行を入れ替えるとWidthのエラーとなる。
エラーストップしても,最初から再実行するとエラーは2度と出ない。

ユーザーがグラフを移動したりサイズ変更した場合を想定して,
元の位置とサイズに再設定するマクロになっている。
なので,マクロ実行時にはグラフは存在している。線と目盛を
書き変えるマクロ。

88:デフォルトの名無しさん
15/01/20 07:00:04.66 iuLmkOeX
>>82
当面的に無理やり通すならresumeかgoto駆使する
あとは、workbook.loadイベントでワザとエラー発生させとくとか

89:デフォルトの名無しさん
15/01/20 07:06:38.60 iuLmkOeX
つか、Openイベントの処理だっけか
まだオブジェクトが認識されてないんでね?

90:デフォルトの名無しさん
15/01/20 08:41:20.38 dg0GDE71
VBAのバージョン管理の良いやり方を教えてください
書けるようになってきた反面、破綻寸前です

91:デフォルトの名無しさん
15/01/20 09:05:42.56 tR2SZl1M
最初の1回だけエラーになるのは、



92:炎咊lが入っていないのかも? b a=b 宣言だけして、初期化しなかった変数を使ってエラー b=0 などと宣言と同時に、初期値が入っていれば、 エラーは起きない



93:デフォルトの名無しさん
15/01/20 09:23:54.97 GsFnMcAh
VBAのマクロに設定したパスワードって、ツール使えばだいたい解除できるじゃない。
だったら見られても分りにくくする難読化のツールありますか?
ググッてもVBA用のは無いようなのですが。

94:デフォルトの名無しさん
15/01/20 09:36:37.55 iwY+YMua
無いよ、諦めて

95:デフォルトの名無しさん
15/01/20 11:00:46.84 GsFnMcAh
Application.Interactive = False をやるとEXCEL2013の操作が
一切出来なくなりますが、EXCELのウインドウの移動なども出来なくなり
不便なので、Ribbonの操作とか、セルの操作とか、そういうのだけ
禁止する方法ありますか?

96:デフォルトの名無しさん
15/01/20 11:16:17.35 h3ZK+Qpq
フォームに変数使うことってできますか?
例えばフォームで「会員No.XXXXを登録しますか?」と表示させて
その下のボタン、「登録」「保留」「キャンセル」を押して決めるとか

XXXXは指定のセルから数値を読み取るとか

97:デフォルトの名無しさん
15/01/20 11:34:42.01 jGkVNXKd
>>85
俺と同じだw
今現在は一箇所のフォルダにファイル名_バージョン.xlsm xxxx_000080.xlsm etc
にしてるけど、
使いやすいバージョン管理システムを見てまわってるところw

98:tォルトの名無しさん
15/01/20 12:56:00.67 9WW5KIHI
パスワードクラックするようなやつに難読化とか意味ない

99:デフォルトの名無しさん
15/01/20 14:49:13.72 hS3N5Hvv
>>90
ラベル使ってcaption変えればいいのては?

100:90
15/01/20 17:42:27.69 h3ZK+Qpq
プロパティのcaptionのとこですか?
それだとナンバーを毎回手動で変えることになるんですか?

101:デフォルトの名無しさん
15/01/20 18:11:15.93 jGkVNXKd
label1.caption = "label1.Caption = "会員No" & Cells(x,y) & "を登録しますか?"
ってことなんじゃ

102:デフォルトの名無しさん
15/01/20 19:30:26.59 6mGj69QS
>>86
レスありがとう。

原因不明のままだが,下記のデバッグ用の一行を挿入したら,
エラーそのものが発生しなくなった。

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内部データが初期化不十分で,プロパティ読みだし操作で
初期化されるものと思われる。

103:デフォルトの名無しさん
15/01/20 20:52:58.14 6mGj69QS
>>96 自己レス グラフのサイズ指定処理だが,一番最初に以下の処理で 画面ズームサイズを保存して一定値にしてからでないと, グラフサイズが正確に指定できない。これもEXCELの不具合。 Z = ActiveWindow.Zoom ActiveWindow.Zoom = 一定値 グラフサイズ指定処理 ActiveWindow.Zoom = Z



105:デフォルトの名無しさん
15/01/20 21:07:42.46 iwY+YMua
EXCELの不具合を共有したいにしても手順ってものがあるでしょうに。
現状では誰も信じないと思うよ。

106:デフォルトの名無しさん
15/01/20 21:18:01.98 6mGj69QS
>>98
現象を報告しているのみ。ネットでも類似報告はある。
ただ,そういう経験がなけば無視すればよい。

107:デフォルトの名無しさん
15/01/20 22:16:47.34 Q1gKznlw
まあ本当にExcelの不具合だと思うなら、ぜひマイクロソフトに報告してあげて下さい
ここで不十分な報告しても何の役にも立たん

108:デフォルトの名無しさん
15/01/21 01:26:50.20 a4gaLSo8
>>97
だからどのイベントか書けよ

109:デフォルトの名無しさん
15/01/21 02:50:37.26 Xic+hwyG
連続するメタ文字"()+"を正規表現でマッチさせたいとき
"\(\(\+"とやってますけど、範囲を指定してエスケープするにはどうすれば良いですか?

110:デフォルトの名無しさん
15/01/21 02:51:32.80 Xic+h


111:wyG



112:デフォルトの名無しさん
15/01/21 04:25:21.94 PQV/sDzo
[a-z]よろしく文字コードでやれるんじゃねえの 鼻ホジ

Regular Expression(正規表現) Part13��2ch.net
スレリンク(tech板)

113:デフォルトの名無しさん
15/01/21 06:12:54.10 z33vr0gG
>>101
フォームは使っていないからイベントは無関係。

114:デフォルトの名無しさん
15/01/21 08:42:51.44 a+GjDkiJ
>>91
やはりそうなるよね
数パターン個別にカスタマイズして、
あとで統合しようとすると意味不明になる

VBAしか触らないから、
よくわからん本気のツール導入も敷居が高いし

VBAだけでバージョン管理できたら良いのにと思う

115:デフォルトの名無しさん
15/01/21 09:08:28.10 G0jKgpER
前スレだかにバージョン管理してるって人居たよね
ソースエクスポートしてテキストで管理って言ってたけど面倒くさそう

116:デフォルトの名無しさん
15/01/21 09:42:25.78 NByG1E6b
Sheet1をエクスポートして保存されたクラスモジュールをインポートすると、
Sheet1のオブジェクトモジュールではなく、クラスモジュールとして
インポートされるんですが、これをSh


117:eet1のオブジェクトモジュールと してインポートする方法はありますか? 要するにエクスポートしてインポートしたら、完全に元通りにしたいのです。



118:デフォルトの名無しさん
15/01/21 10:20:51.10 nNlZ8uj4
  ●●●ケネディ大統領は何故、死なねばならなかったのか?●●●
  URLリンク(jbbs.livedoor.jp)

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
  この掲示板に優秀な書き込みをして、総額148万円の賞金をゲットしよう!(*^^)v

119:デフォルトの名無しさん
15/01/21 12:49:32.86 CTKuHmCR
>>99
> ネットでも類似報告はある。

url 書かない奴は、脳内と見なされてもしょうがない

120:デフォルトの名無しさん
15/01/21 13:03:28.22 vxIgxT3t
>>108
たしか
エクスポート/インポート を自前で作らないと駄目じゃなかったかな

それか
インポート時に
1) 一旦クラスモジュールとして インポートして
2) Sheet1のモジュールへ コピペ
3) 1)のクラスモジュール削除

とかね

121:デフォルトの名無しさん
15/01/21 14:10:56.42 NByG1E6b
>>111
レスありがとうございます。
教えていただいた二通りの方法は、VBAでプログラムを組めば自動的に
実行できますか?
それとも手作業でやるしかないでしょうか?

122:デフォルトの名無しさん
15/01/21 14:37:19.71 eny8H5q0
ソース一式を出力するなら

URLリンク(d.hatena.ne.jp)
EXCELファイル内のVBAプロジェクトのソース一式をエクスポートする

を見れば

123:デフォルトの名無しさん
15/01/21 15:03:39.62 vxIgxT3t
>>112
多分VBAで可能なはず
職場は EXCEL2010だけど自宅は未だに EXCEL97なんで
現状 超古いEXCELでしか試せないのよ

これがまともに動けばこれの応用でできるとおもうけど

With ThisWorkbook.VBProject.VBComponents("sheet1").CodeModule
.InsertLines .CountOfLines, "'コメント"
Debug.Print .Lines(1, .CountOfLines)
End With

上を実行すると
sheet1のモジュールの最後に
'コメント
が追加されかつイミディエイト へソースが表示されるハズです

124:デフォルトの名無しさん
15/01/21 19:45:06.53 SYTiPYt8
つーか、シートのコピーじゃいかんの?

125:デフォルトの名無しさん
15/01/21 22:05:43.84 ilOt01Hf
Excel2013でユーザーフォーム内のテキストボックスにログを出力するようにしたいんだけど、
テキストボックスが一番最後の行にスクロールしてくれない。

Textbox1.SetFocus
Textbox1.CurLine = Textbox1.LineCount-1
ではダメなんですかね?

126:デフォルトの名無しさん
15/01/21 22:06:32.26 NByG


127:1E6b



128:デフォルトの名無しさん
15/01/22 09:30:51.95 4WNaJbbR
Set A = Worksheets("Sheet1").Cells.Find(B)
If A Is Nothing Then Exit Sub
Else A.Select
Cells(ActiveCell.Row, ActiveCell.Column + 1).Value = Date

この処理で、検索して見つかったらそのセルを選択して、
その後アクティブセルからいくつか移動したセルに日付を入れてるんだけど
選択→その位置から移動 の2回の処理をオブジェクト変数Aを使って1回で処理したいんだけど
どうしたらいい?

129:デフォルトの名無しさん
15/01/22 09:36:06.38 vsxHNAsj
Cells(A.Row, A.Column + 1).Value = Date
とか
A.offset(略 = 略
とか

130:デフォルトの名無しさん
15/01/22 09:38:23.54 vsxHNAsj
あとexit subするならelseでなくend ifでいいよ
いやend ifも要らないか

131:デフォルトの名無しさん
15/01/22 11:44:29.12 4WNaJbbR
なるほど(・ω・)

132:デフォルトの名無しさん
15/01/22 14:09:02.53 4WNaJbbR
ある列に↓のようにリストがあって

生産課 山田太郎 様
技術開発課 田中次郎 様
総務課 鈴木 様
...

フォームのテキストボックスに苗字を入力して、ボタンを押したら
別のテキストボックスに一致するセルの中身を出すようにしたいんだけど
同じ苗字が


133:二人以上いる時に、まとめて抽出するにはどうしたらいい? findで範囲内で一致するもの全てを同時に返すとかできますか?



134:デフォルトの名無しさん
15/01/22 18:52:36.11 dmH5GNro
正規表現

135:デフォルトの名無しさん
15/01/22 20:19:58.26 vNSjR/4e
>>122
findはダメだろ
普通にfor nextとかで繰返し一致する名前を全て書き出せばいい

136:デフォルトの名無しさん
15/01/22 22:23:31.11 +1w7MZS/
オートフィルタ

137:デフォルトの名無しさん
15/01/22 23:04:07.41 DV1cEPLZ
>>123
なにそれ?
ろくでなし子さん?

138:デフォルトの名無しさん
15/01/22 23:22:43.93 dmH5GNro
画像検索しちまったじゃねーか

139:デフォルトの名無しさん
15/01/23 06:06:36.11 lAQTOxJ2
>>105
そもそも知識無いの丸わかり(笑)

140:デフォルトの名無しさん
15/01/23 08:10:55.33 db6c84vZ
>>97
句読点にカンマ使うような低脳には誰も答えないよ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch