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/
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2015/05/21(木) 10:52:44.71ID:KLv0vQmm222デフォルトの名無しさん
2016/06/16(木) 16:27:03.77ID:YtVxucfB223デフォルトの名無しさん
2016/06/16(木) 21:40:45.67ID:JOmdLZoV ' キャッシュ反映を待って5秒待つ
↑これなんとかして
↑これなんとかして
224デフォルトの名無しさん
2016/06/16(木) 21:53:33.23ID:EpEOLr57225デフォルトの名無しさん
2016/06/17(金) 01:16:02.29ID:Sh+IdTol 起動方法と起動のタイミングの問題で
>1分〜数分以内に「エクスプローラは停止しました」
>場合によっては20分くらい経ってからクラッシュ
のような症状が出るとは考えにくいけどな
まあ、直ったって言うならそれでいいけど
>1分〜数分以内に「エクスプローラは停止しました」
>場合によっては20分くらい経ってからクラッシュ
のような症状が出るとは考えにくいけどな
まあ、直ったって言うならそれでいいけど
226樵の結び目。
2016/09/03(土) 18:27:18.44ID:Ms7vNg4j227デフォルトの名無しさん
2016/09/28(水) 19:27:48.59ID:BVBInYIb vbaの And, Or って短絡評価してくれないの???
228デフォルトの名無しさん
2016/09/28(水) 20:30:34.84ID:X231kNmm229デフォルトの名無しさん
2016/09/28(水) 22:20:25.14ID:w7cfX4QA X(n) And Y(m) で X(n) = False だった場合、Y(m) は評価しなくても式が False と確定する
Or でも同様のことが可能
VBAがショートサーキットしているかどうかは、各関数で Debug ログを出力してみればわかる
Or でも同様のことが可能
VBAがショートサーキットしているかどうかは、各関数で Debug ログを出力してみればわかる
230デフォルトの名無しさん
2016/09/29(木) 04:55:17.68ID:IF5lu7hc >>229
いちいち短絡評価の説明なんてしなくていいよ...
いちいち短絡評価の説明なんてしなくていいよ...
231227
2016/09/29(木) 08:22:26.74ID:l2tsRcXf くぅ。
短絡評価してくれるもんだと思って、
True, False, Nullを返す関数の結果で、
NullをFalseに倒したくて、
左辺でNot isNullやってたけど、
右辺もNullで動いてしまってエラーになってはまったわ。
短絡評価してくれるもんだと思って、
True, False, Nullを返す関数の結果で、
NullをFalseに倒したくて、
左辺でNot isNullやってたけど、
右辺もNullで動いてしまってエラーになってはまったわ。
232デフォルトの名無しさん
2016/09/29(木) 12:46:05.66ID:tIM+raH6 VBAあるある
233デフォルトの名無しさん
2016/10/06(木) 19:51:33.65ID:prbbit7d .NetならOrElseやAndAlsoが使えるし
Nullable指定も出来るから便利なんだけどなー
まあ無いものねだりしても始まらないか
Nullable指定も出来るから便利なんだけどなー
まあ無いものねだりしても始まらないか
234デフォルトの名無しさん
2016/10/08(土) 17:43:11.29ID:fiaM9vLl VB(A)はWithとかある割にそういうとこは全然気が利かないよな
C言語すら知らない人が作った言語なんだろう事は判る
C言語すら知らない人が作った言語なんだろう事は判る
235デフォルトの名無しさん
2016/10/08(土) 22:59:38.27ID:315EhZFM VBって元々はMSじゃないんだよね BASIC好きのゲイツが惚れ込んで買収しただけ
236デフォルトの名無しさん
2016/10/27(木) 20:44:38.40ID:LE0ob9Yw vbaの中、上級者向けの書籍を教えてください
237デフォルトの名無しさん
2016/10/27(木) 21:44:23.99ID:BIHhfe0H 漠然と「VBAの初心者向けの本を教えてください」ってのはよくあるが、上級者向けは珍しいね
ある程度基礎が身に付き、やりたいことが分かってきていれば
○○に関する本、ってなるように思うんだが・・・
田中亨氏の「Excel VBA 逆引き辞典パーフェクト 」は名著だよ
ある程度基礎が身に付き、やりたいことが分かってきていれば
○○に関する本、ってなるように思うんだが・・・
田中亨氏の「Excel VBA 逆引き辞典パーフェクト 」は名著だよ
238デフォルトの名無しさん
2016/10/28(金) 04:23:54.86ID:s9odN72t239デフォルトの名無しさん
2016/10/28(金) 15:06:05.95ID:Sg+Wt/Uz アプリ作成で学ぶExcel VBAプログラミングユーザーフォーム&コントロール(横山達大著)
かんたんプログラミング 応用編(大村あつし著)
同じく、かんたんプログラミング コントロール関数編
デバッグ関連だと
立山秀利著の本
かんたんプログラミング 応用編(大村あつし著)
同じく、かんたんプログラミング コントロール関数編
デバッグ関連だと
立山秀利著の本
240デフォルトの名無しさん
2016/10/29(土) 23:22:10.90ID:b3lytwnZ VBAでコードを抜き出してSVNやgitで管理したりするとそれだけで上級者っぽくなる
241デフォルトの名無しさん
2016/10/30(日) 08:10:21.54ID:R4QvvoTp それ以上にバカっぽいけどなw
242デフォルトの名無しさん
2016/10/30(日) 09:23:46.57ID:2kQlDpFE 今時差分管理もしてないのかよ
243デフォルトの名無しさん
2016/10/31(月) 23:59:17.10ID:9abcSnRr VBACとか使ってんの?
244デフォルトの名無しさん
2017/02/06(月) 12:06:59.89ID:1XFRepCN PowerPointのVBAでファイルを閉じた後も変数の値が保存されるようにしたいんですが外部のテキストに書き出す以外にファイル本体にどうにかして埋め込む方法はありますか?
245デフォルトの名無しさん
2017/02/06(月) 14:57:53.43ID:atuXlQHb 透明のシェイプとかに書くとか色々あるけど
実際本体ファイルを更新されるとバージョン管理とか使う側が気持ち悪がるとか運用面で問題が出そう
実際本体ファイルを更新されるとバージョン管理とか使う側が気持ち悪がるとか運用面で問題が出そう
246デフォルトの名無しさん
2017/02/06(月) 19:29:23.46ID:4FxLnD3n Excel脳っすなぁ
標準的なユーザーデータ保存場所がちゃんとあるんだからそれ使えばいいじゃん
標準的なユーザーデータ保存場所がちゃんとあるんだからそれ使えばいいじゃん
247デフォルトの名無しさん
2017/02/06(月) 19:58:54.20ID:KOZLaxG/ >>246
どうすればいいでしょうか
どうすればいいでしょうか
248デフォルトの名無しさん
2017/02/06(月) 21:21:37.88ID:VJg+IRhi >>244
Presentation.CustomDocumentProperties
https://msdn.microsoft.com/ja-jp/library/office/ff744661.aspx
Presentation.CustomDocumentProperties
https://msdn.microsoft.com/ja-jp/library/office/ff744661.aspx
249デフォルトの名無しさん
2017/02/07(火) 07:09:26.95ID:HIDKMkau250デフォルトの名無しさん
2017/02/07(火) 07:27:10.54ID:ff698yUf251デフォルトの名無しさん
2017/02/07(火) 07:40:32.09ID:xddq+MTq ファイル本体に埋め込みすんのがアホなんだよわかれよ素人
ゴミを量産して人に迷惑かけないでくれ
独りよがりの仕事してんじゃねえよ
ゴミを量産して人に迷惑かけないでくれ
独りよがりの仕事してんじゃねえよ
252デフォルトの名無しさん
2017/02/07(火) 08:07:27.12ID:ff698yUf 単なる基地害だったのか
253デフォルトの名無しさん
2017/02/07(火) 20:25:02.30ID:1dqSFjs6 実際に仕事してるとそれこそ基地外避けを作る必要が出てきたりするんだよな
254デフォルトの名無しさん
2017/02/07(火) 21:24:47.40ID:lpX4EXgF ユーザーデータを変な場所に保存したりするやつとか避けないとな
255デフォルトの名無しさん
2017/02/07(火) 22:43:16.46ID:diTiDCUQ256デフォルトの名無しさん
2017/02/13(月) 17:14:33.92ID:QPcPOced 50枚のスライドが入ったパワポが5個あります。
これを統合したいのですが
ファイル1の1枚目
ファイル2の1枚目
ファイル3の1枚目
ファイル4の1枚目
ファイル5の1枚目
ファイル1の2枚目。。。
という順番にしたいのです。
どういうマクロを書けばいいでしょうか?
これを統合したいのですが
ファイル1の1枚目
ファイル2の1枚目
ファイル3の1枚目
ファイル4の1枚目
ファイル5の1枚目
ファイル1の2枚目。。。
という順番にしたいのです。
どういうマクロを書けばいいでしょうか?
257デフォルトの名無しさん
2017/02/13(月) 21:36:30.61ID:MAF656mM >>256
その通りのマクロを書けばいいのでは?
その通りのマクロを書けばいいのでは?
258デフォルトの名無しさん
2017/02/13(月) 21:54:55.31ID:1gaAmlEB 新規で作ったらコピペを繰り返すだけ
259デフォルトの名無しさん
2017/02/14(火) 00:38:49.96ID:hvVJhpIb パワポってマクロ使えるんだ
そらそうだわな
そらそうだわな
260デフォルトの名無しさん
2017/02/14(火) 01:58:27.90ID:ahDpDw9M ExcelVBAをつかいこなしていても
パワポはマクロの記録がないと腰が重いな
パワポはマクロの記録がないと腰が重いな
261デフォルトの名無しさん
2017/02/15(水) 08:18:34.60ID:uIQboeV9262デフォルトの名無しさん
2017/02/15(水) 13:14:12.73ID:zgJtAmDR >>256
スマホからだから試してないけどこんな感じかな
Application.Presentations.Open(ひとつ目のファイル)
Application.Presentations.Open(ふたつ目のファイル)
...
Application.Presentations.Open(いつつ目のファイル)
Set P = Application.Presentations.Add
For I = 1 To 50
For J = 1 To 5
Application.Presentations.Item(J).Slides(I).Copy
P.Slides.Paste
Next
Next
P.SaveAs(新規のファイル)
スマホからだから試してないけどこんな感じかな
Application.Presentations.Open(ひとつ目のファイル)
Application.Presentations.Open(ふたつ目のファイル)
...
Application.Presentations.Open(いつつ目のファイル)
Set P = Application.Presentations.Add
For I = 1 To 50
For J = 1 To 5
Application.Presentations.Item(J).Slides(I).Copy
P.Slides.Paste
Next
Next
P.SaveAs(新規のファイル)
263デフォルトの名無しさん
2017/02/23(木) 13:32:21.69ID:xPy6pfR0 選択されているセル範囲内の文字、図形を削除する手順を作ってみましたが、処理がえらく重いです。
もっと処理を早くする方法はないでしょうか?
Sub sakujo()
Application.ScreenUpdating = False '画面更新を停止
Dim shp As Shape
Dim rng As Range
If TypeName(Selection) <> "Range" Then Exit Sub
For Each shp In ActiveSheet.Shapes
Selection.ClearContents
Set rng = Range(shp.TopLeftCell, shp.BottomRightCell) '図形の配置されているセル範囲をオブジェクト変数にセット
If Not (Intersect(rng, Selection) Is Nothing) Then '図形の配置されている範囲と選択されているセル範囲が重なっているときに図形を削除
shp.Delete
End If
Next
Application.ScreenUpdating = True '画面更新を再開
End Sub
もっと処理を早くする方法はないでしょうか?
Sub sakujo()
Application.ScreenUpdating = False '画面更新を停止
Dim shp As Shape
Dim rng As Range
If TypeName(Selection) <> "Range" Then Exit Sub
For Each shp In ActiveSheet.Shapes
Selection.ClearContents
Set rng = Range(shp.TopLeftCell, shp.BottomRightCell) '図形の配置されているセル範囲をオブジェクト変数にセット
If Not (Intersect(rng, Selection) Is Nothing) Then '図形の配置されている範囲と選択されているセル範囲が重なっているときに図形を削除
shp.Delete
End If
Next
Application.ScreenUpdating = True '画面更新を再開
End Sub
264デフォルトの名無しさん
2017/02/23(木) 14:40:32.47ID:bekNjoMq265デフォルトの名無しさん
2017/02/23(木) 15:02:34.32ID:Q2T7iSLN 処理の基本をよく考えるべき。
1.Shape毎にSelection.ClearContentsする意味は?
2.shp.Delete後もループする意味は?
3.そもそもSelectionって何?つまり何が選択されている時に削除したいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
shp.Delete
Exit For
End If
Next
じゃ駄目?
1.Shape毎にSelection.ClearContentsする意味は?
2.shp.Delete後もループする意味は?
3.そもそもSelectionって何?つまり何が選択されている時に削除したいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
shp.Delete
Exit For
End If
Next
じゃ駄目?
266デフォルトの名無しさん
2017/02/23(木) 15:08:21.72ID:Q2T7iSLN 選択されているセル範囲については最初のIf文でExit Subしてるから削除されないんじゃ?
処理がよく分からん。
選択されているShapeの下のRangeの内容を削除したいならshp=Selectionの場合に
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
で良いんじゃ?
処理がよく分からん。
選択されているShapeの下のRangeの内容を削除したいならshp=Selectionの場合に
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
で良いんじゃ?
267デフォルトの名無しさん
2017/02/23(木) 15:10:34.31ID:Q2T7iSLN shp=Selectionの場合じゃなくてshp Is Selectionの場合だな。
shp.Deleteの前ね。
shp.Deleteの前ね。
268デフォルトの名無しさん
2017/02/23(木) 15:24:01.29ID:5OVH7aZj >>265
質問者じゃないけど変わって説明するよ
・シート上に文字と図形が複数箇所に設定されている
・消す範囲を選択して、その範囲内の文字と図形を消すコードを書いた
・でもなぜか遅い
質問者に言えるのは、
・Selection.ClearContentsはfor eachの外でいい
・試しに100個のshapeを貼り付けて50個くらいが入る範囲を選択して消してみたら一瞬で終了(もちろんコードでだよ)
・遅いって具体的にどれくらいなの?
質問者じゃないけど変わって説明するよ
・シート上に文字と図形が複数箇所に設定されている
・消す範囲を選択して、その範囲内の文字と図形を消すコードを書いた
・でもなぜか遅い
質問者に言えるのは、
・Selection.ClearContentsはfor eachの外でいい
・試しに100個のshapeを貼り付けて50個くらいが入る範囲を選択して消してみたら一瞬で終了(もちろんコードでだよ)
・遅いって具体的にどれくらいなの?
269デフォルトの名無しさん
2017/02/23(木) 16:00:14.32ID:Q2T7iSLN >>268
コード見りゃわかる。
でもコードがやってることは無駄な部分が多いから聞いてる。
最初のIf文を見ればRangeを選択した場合はExit Subしたいみたいだがら範囲選択した場合は処理して欲しく無いんだよな。
→じゃ、どんな時に処理して欲しいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
shp.Delete
Exit For
End If
Next
じゃ駄目なの?
コード見りゃわかる。
でもコードがやってることは無駄な部分が多いから聞いてる。
最初のIf文を見ればRangeを選択した場合はExit Subしたいみたいだがら範囲選択した場合は処理して欲しく無いんだよな。
→じゃ、どんな時に処理して欲しいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
shp.Delete
Exit For
End If
Next
じゃ駄目なの?
270デフォルトの名無しさん
2017/02/23(木) 16:07:14.86ID:xPy6pfR0 今までは長い時で1〜1.5秒程止まっていました
>>268さんの言われた通り、Selection.ClearContentsの位置を変えたらスムーズになりましたのでこれで行こうと思います
たくさんご意見頂きありがとうございました
>>268さんの言われた通り、Selection.ClearContentsの位置を変えたらスムーズになりましたのでこれで行こうと思います
たくさんご意見頂きありがとうございました
271デフォルトの名無しさん
2017/02/23(木) 16:14:41.52ID:5OVH7aZj272デフォルトの名無しさん
2017/02/26(日) 14:44:16.79ID:nMuhJunv エクセルのマクロでも質問大丈夫でしょうか?
名前と同じファイル名の画像を名前セルの隣に貼り付けるプログラムなんですが
Sub ボタン1_Click()
Const n As Long = 2
Dim i As Long
Dim x As Double
Dim s As String
Dim t As FileDialog
Dim m As VbMsgBoxResult
With ActiveSheet
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row Step 6
Set r = .Cells(i, 3).MergeArea
s = "D:\画像\1\" & .Cells(i, 2).Value & ".jpg"
Dir Application.Path
With .Pictures.Insert(s).ShapeRange
.LockAspectRatio = msoTrue
x = Application.Min(r.Width / .Width, (r.Height - n) / .Height)
.Width = .Width * x
.Left = r.Left + (r.Width - .Width) / 2
.Top = r.Top + (r.Height - .Height) / 2
End With
Next
End With
End Sub
この"D:\画像\1\"の部分をフォルダ選択できるようにしたいので
Dim s As String
Dim t As FileDialog
Set t = Application.FileDialog(msoFileDialogFolderPicker)
s = "t" & .Cells(i, 2).Value & ".jpg"
としたら「1004 PicturesクラスのInsertプロパティを取得できません。」と実行できません
どうしたら"D:\画像\1\"の部分をフォルダ選択できるようにできるのでしょうか?ご教示お願い致します。
名前と同じファイル名の画像を名前セルの隣に貼り付けるプログラムなんですが
Sub ボタン1_Click()
Const n As Long = 2
Dim i As Long
Dim x As Double
Dim s As String
Dim t As FileDialog
Dim m As VbMsgBoxResult
With ActiveSheet
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row Step 6
Set r = .Cells(i, 3).MergeArea
s = "D:\画像\1\" & .Cells(i, 2).Value & ".jpg"
Dir Application.Path
With .Pictures.Insert(s).ShapeRange
.LockAspectRatio = msoTrue
x = Application.Min(r.Width / .Width, (r.Height - n) / .Height)
.Width = .Width * x
.Left = r.Left + (r.Width - .Width) / 2
.Top = r.Top + (r.Height - .Height) / 2
End With
Next
End With
End Sub
この"D:\画像\1\"の部分をフォルダ選択できるようにしたいので
Dim s As String
Dim t As FileDialog
Set t = Application.FileDialog(msoFileDialogFolderPicker)
s = "t" & .Cells(i, 2).Value & ".jpg"
としたら「1004 PicturesクラスのInsertプロパティを取得できません。」と実行できません
どうしたら"D:\画像\1\"の部分をフォルダ選択できるようにできるのでしょうか?ご教示お願い致します。
273デフォルトの名無しさん
2017/02/26(日) 16:00:22.84ID:nt1S72uw >>272
Dim s As String
Dim t As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
'途中省略
s = t & .Cells(i, 2).Value & ".jpg"
じゃないかな?
あと
元コードもそうだけど
フォルダ内に その画像ファイルが存在してなかった時の対策も必要だと思うよ
同じエラーになるぞ それとも絶対 あるのが 確定してる?
Dim s As String
Dim t As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
'途中省略
s = t & .Cells(i, 2).Value & ".jpg"
じゃないかな?
あと
元コードもそうだけど
フォルダ内に その画像ファイルが存在してなかった時の対策も必要だと思うよ
同じエラーになるぞ それとも絶対 あるのが 確定してる?
274デフォルトの名無しさん
2017/02/26(日) 16:45:49.33ID:nMuhJunv >>273
大変ありがとうございます!
ただ、貼り付ける画像は複数あり、貼り付けるたびにフォルダ選択画面が出てしまいますので、一気に貼り付けられないものでしょうか?
ファイルが存在してない時の対策は、セルの状態を色変えて罫線で斜線を挿入したいと考えてますが、まだそこまで進む前段階がクリアできないので困ってます
よろしくお願いします
大変ありがとうございます!
ただ、貼り付ける画像は複数あり、貼り付けるたびにフォルダ選択画面が出てしまいますので、一気に貼り付けられないものでしょうか?
ファイルが存在してない時の対策は、セルの状態を色変えて罫線で斜線を挿入したいと考えてますが、まだそこまで進む前段階がクリアできないので困ってます
よろしくお願いします
275デフォルトの名無しさん
2017/02/26(日) 16:51:45.39ID:nt1S72uw >>274
ん? そこは分ってるとおもたよ
フォルダ選択部分は Forループの外だよ
↓ここねw
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
ん? そこは分ってるとおもたよ
フォルダ選択部分は Forループの外だよ
↓ここねw
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
276デフォルトの名無しさん
2017/02/26(日) 16:57:59.74ID:nMuhJunv >>275
あっ!できました!ありがとうございます!助かりました!
あっ!できました!ありがとうございます!助かりました!
277デフォルトの名無しさん
2017/03/06(月) 23:29:36.96ID:QCgyLcj6 こんにちは。
パワーポイント2013のVBAについて分かる方教えて下さい。
やりたいことは、グラデーションの塗りつぶしがあるシェイプのGradientStopsのそれぞれの色を変化させるアニメーションの方法です。
2013ではできないけど2016ではできる等の情報もあればお願い致します。
パワーポイント2013のVBAについて分かる方教えて下さい。
やりたいことは、グラデーションの塗りつぶしがあるシェイプのGradientStopsのそれぞれの色を変化させるアニメーションの方法です。
2013ではできないけど2016ではできる等の情報もあればお願い致します。
278デフォルトの名無しさん
2017/03/08(水) 21:50:45.20ID:DO0ivfK5 vbaだけでhttpサーバーって出来る?
279デフォルトの名無しさん
2017/03/08(水) 23:04:04.36ID:Tpob7EG8280デフォルトの名無しさん
2017/03/09(木) 01:39:01.40ID:UFk6xx1O VBAだけってのが
外部コントロール使用禁止
API呼び出し禁止
なら不可能です
外部コントロール使用禁止
API呼び出し禁止
なら不可能です
281デフォルトの名無しさん
2017/04/09(日) 15:56:17.26ID:9WwYB+FH VBAの変数の値を次回の処理を行う時まで記録しておくのにセルに書き込みをしたりしていますが、
セルにアクセスするのを減らすためにセルに記録しなくて処理終了時に変数値をVBA内で保存しておいてくれる一次記憶領域みたいな物はないのでしょうか?
セルにアクセスするのを減らすためにセルに記録しなくて処理終了時に変数値をVBA内で保存しておいてくれる一次記憶領域みたいな物はないのでしょうか?
282デフォルトの名無しさん
2017/04/09(日) 16:02:56.39ID:9WwYB+FH ちりも積もればの話ですが
足し算引き算割り算レベルの計算をセルに関数を割り当てて行うのと
同じ計算式を変数を用いてVBAで書いて実行するのとで、より処理速度が速いのはどちらでしょうか?
足し算引き算割り算レベルの計算をセルに関数を割り当てて行うのと
同じ計算式を変数を用いてVBAで書いて実行するのとで、より処理速度が速いのはどちらでしょうか?
283デフォルトの名無しさん
2017/04/09(日) 16:09:57.30ID:Lq/WJuQk284デフォルトの名無しさん
2017/04/09(日) 16:14:42.36ID:K8MFArI9 >>281
説明がいまいち分かりにくい。
次回ってのは何時のことを言ってる?
グローバルな変数じゃダメなの?
次にそのブックを開くまで保持したいならセルってのも分かるんだが。
で、その場合にセルの代わりに保持したいならCustomDocumetProperties使ったりするかな。
説明がいまいち分かりにくい。
次回ってのは何時のことを言ってる?
グローバルな変数じゃダメなの?
次にそのブックを開くまで保持したいならセルってのも分かるんだが。
で、その場合にセルの代わりに保持したいならCustomDocumetProperties使ったりするかな。
285デフォルトの名無しさん
2017/04/09(日) 16:27:32.06ID:9WwYB+FH286デフォルトの名無しさん
2017/04/09(日) 16:44:07.10ID:9WwYB+FH >>284
プロシージャの上に定義すると処理が終了しても最終定義された内容は残ったままなんですね!
今まで処理を中断する必要がある場合は変数をすべてセルに書き出していましたが大発見です。ありがとうございました。
プロシージャの上に定義すると処理が終了しても最終定義された内容は残ったままなんですね!
今まで処理を中断する必要がある場合は変数をすべてセルに書き出していましたが大発見です。ありがとうございました。
287デフォルトの名無しさん
2017/04/09(日) 19:39:59.08ID:9WwYB+FH Public変数もしくは通常の変数の指定数の限界はあるのでしょうか?
問題なく動くレベルは何個ぐらいでしょうか?
50個
100個
1000個
10000個でも平気だっり?
実は
100000個以上でも問題ないとか?
問題なく動くレベルは何個ぐらいでしょうか?
50個
100個
1000個
10000個でも平気だっり?
実は
100000個以上でも問題ないとか?
288デフォルトの名無しさん
2017/04/09(日) 19:51:50.86ID:0T9WQSVM289デフォルトの名無しさん
2017/04/09(日) 23:55:43.90ID:K8MFArI9290デフォルトの名無しさん
2017/04/10(月) 02:47:06.39ID:AhmZ51rM 日曜の午後からずっとVBAを書いてるけどまだおわらね〜
てかやればやるほど選択肢が爆発的に増えてきて一生かかってもおわりそうにね〜!w
てかやればやるほど選択肢が爆発的に増えてきて一生かかってもおわりそうにね〜!w
291デフォルトの名無しさん
2017/04/10(月) 04:05:13.85ID:sRLMXvmn >>287
しかもEndやErrorで抜けたら破棄されるという罠
しかもEndやErrorで抜けたら破棄されるという罠
292デフォルトの名無しさん
2017/04/11(火) 00:40:18.97ID:egN7ZnVO 素数や組み合わせ爆発のような数学の迷宮的な問題に陥って
一生かかってもコードを完成させるのは無理ですよみたいな場合もあるのでしょうか?
一生かかってもコードを完成させるのは無理ですよみたいな場合もあるのでしょうか?
293デフォルトの名無しさん
2017/04/11(火) 10:41:22.79ID:Ei1BFwyD >>292
数学的バックグラウンドがなければコードが書けないという類いの問題はあるね。
たとえばNP困難なやつ。
巡回セールスマンとかナップサック問題とか、ナーススケジューリング問題とか。
自力でなければ、それなりの回答が得られる解法(コード)が既に存在してるものもある。
数学的バックグラウンドがなければコードが書けないという類いの問題はあるね。
たとえばNP困難なやつ。
巡回セールスマンとかナップサック問題とか、ナーススケジューリング問題とか。
自力でなければ、それなりの回答が得られる解法(コード)が既に存在してるものもある。
294デフォルトの名無しさん
2017/04/11(火) 11:01:45.96ID:o/k96Ri6 問題を解く方法を考案するのと、その方法をコンピューター言語に翻訳する作業は別ですわ
それぞれに異なった知識と才能が必要となりますので
それぞれに異なった知識と才能が必要となりますので
295デフォルトの名無しさん
2017/04/11(火) 11:03:15.94ID:6dnWkPrh >>291
End Subの行にブレークポイント、これ
End Subの行にブレークポイント、これ
296デフォルトの名無しさん
2017/04/12(水) 22:41:46.94ID:iuenojzm パブリック変数で
1000個
10000個でも平気だっり?
とかどんな拷問なんだよw
1000個
10000個でも平気だっり?
とかどんな拷問なんだよw
297デフォルトの名無しさん
2017/04/20(木) 23:26:11.80ID:92wBssf5 テストしてみたがパブリック変数500個は問題なく動いた。
もっと使ってる人いる?
もっと使ってる人いる?
298デフォルトの名無しさん
2017/04/21(金) 19:40:41.67ID:TpPjDerb いらない
299デフォルトの名無しさん
2017/04/21(金) 21:22:06.10ID:BWuBR5xw 変数の一部を変数にする事は出来ないのでしょうか?(代入
とかではなく)
たとえば↓はイメージですが変数名の箇所を文字列をつなぎ合わせる時と
同じように変数をわりあてられないのでしょうか?(以下は動きませんがphpではこれができます。)
dim aaa1
dim aaa
dim no
dim bbb
aaa1=例文1
aaa=aaa
no=1
aaa & no = bbb
msgbox bbb
↓
結果は「例文1」 と表示されますみたな、、
とかではなく)
たとえば↓はイメージですが変数名の箇所を文字列をつなぎ合わせる時と
同じように変数をわりあてられないのでしょうか?(以下は動きませんがphpではこれができます。)
dim aaa1
dim aaa
dim no
dim bbb
aaa1=例文1
aaa=aaa
no=1
aaa & no = bbb
msgbox bbb
↓
結果は「例文1」 と表示されますみたな、、
300デフォルトの名無しさん
2017/04/21(金) 21:28:31.62ID:BWuBR5xw >>299
最終的には
aaa1=「例文1」
aaa2=「例文2」
aaa3=「例文3」
・
・
とし
aaa & no のno番号だけ差し替えて制御するみないな感じで使います。
ただしnoの番号は連続した数字ではなく他の集計結果からランダムに発生するため
ループ処理等では成り立たず変数のように扱う必要があります。
最終的には
aaa1=「例文1」
aaa2=「例文2」
aaa3=「例文3」
・
・
とし
aaa & no のno番号だけ差し替えて制御するみないな感じで使います。
ただしnoの番号は連続した数字ではなく他の集計結果からランダムに発生するため
ループ処理等では成り立たず変数のように扱う必要があります。
301デフォルトの名無しさん
2017/04/21(金) 22:10:11.53ID:9tskJEPF >>300
aaa1とかaaa2を変数として捉えず、文字列と数値を要素に持つ2次元配列と見れば良い
で、データ全体を制御するときは、aaa1,aaa2...の2次元配列全てを要素として持つコレクションオブジェクトを生成して操作する
aaa1とかaaa2を変数として捉えず、文字列と数値を要素に持つ2次元配列と見れば良い
で、データ全体を制御するときは、aaa1,aaa2...の2次元配列全てを要素として持つコレクションオブジェクトを生成して操作する
302デフォルトの名無しさん
2017/04/21(金) 22:18:30.36ID:TpPjDerb >>300
Dictionaryのkeyにすれば良いんじゃね
Dictionaryのkeyにすれば良いんじゃね
303デフォルトの名無しさん
2017/04/21(金) 22:25:23.50ID:9tskJEPF CollectionよりDictionaryだな、確かに
304デフォルトの名無しさん
2017/04/21(金) 23:24:44.93ID:3F+Ljh12 そういう質問、初心者によく聞かれるわ
普通は配列を使えと教えるもんだが
普通は配列を使えと教えるもんだが
305デフォルトの名無しさん
2017/04/22(土) 06:16:50.97ID:zUhE/Mll306299
2017/04/22(土) 08:27:20.54ID:zUhE/Mll307デフォルトの名無しさん
2017/04/22(土) 08:53:12.92ID:MM2jcjjz >>306
変数名を数字だけで管理する方法はない。
VBAの仕様上、できない。
というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。
やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。
変数名を数字だけで管理する方法はない。
VBAの仕様上、できない。
というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。
やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。
308デフォルトの名無しさん
2017/04/22(土) 11:27:30.44ID:6RXuRSFv >>306
Dictionaryのvalueは変更可能
Dictionaryのvalueは変更可能
309299
2017/04/22(土) 15:29:06.19ID:zUhE/Mll310デフォルトの名無しさん
2017/04/22(土) 20:43:48.30ID:zUhE/Mll Dim dic As New Dictionary
Dim i As Integer
dic.Add "キー1", "アイテム1"
dic.Add "キー2", "アイテム2"
dic.Add "キー3", "アイテム3"
Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、
グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
Dim i As Integer
dic.Add "キー1", "アイテム1"
dic.Add "キー2", "アイテム2"
dic.Add "キー3", "アイテム3"
Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、
グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
311デフォルトの名無しさん
2017/04/22(土) 22:48:51.75ID:AOzJBbd9 >>310
プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない
でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない
でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
312デフォルトの名無しさん
2017/04/22(土) 23:30:15.48ID:zUhE/Mll >>311
ありがとうございます。
今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして
全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
ありがとうございます。
今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして
全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
313デフォルトの名無しさん
2017/04/23(日) 05:30:19.61ID:t5ve42Di314デフォルトの名無しさん
2017/04/23(日) 10:16:09.39ID:wfwXXeKO >>312
標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな
ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな
ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
315デフォルトの名無しさん
2017/04/23(日) 16:51:51.75ID:fs201BJ1316デフォルトの名無しさん
2017/04/23(日) 17:11:32.92ID:yvJyPXpi >>315
何の引数に渡すことを指してるのかな?
何の引数に渡すことを指してるのかな?
317デフォルトの名無しさん
2017/04/23(日) 18:02:04.26ID:fs201BJ1318デフォルトの名無しさん
2017/04/23(日) 18:27:09.16ID:yvJyPXpi319デフォルトの名無しさん
2017/04/28(金) 17:33:41.10ID:krqKI6DB 超既出FAQですな。
『Public 宣言された変数の有効期間』
https://support.microsoft.com/ja-jp/help/408871
簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。
『Public 宣言された変数の有効期間』
https://support.microsoft.com/ja-jp/help/408871
簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。
320デフォルトの名無しさん
2017/04/28(金) 19:14:11.69ID:AZuqyiJa321デフォルトの名無しさん
2017/04/28(金) 22:13:43.74ID:A3VkBONm Publicな静的変数は使わない。
エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 「すごいアイドル出てきた」「かわいすぎる」ラヴィット初登場の美女に視聴者驚き ≠ME櫻井もも [ヴァイヴァー★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 【高市速報】小野田キミ「中国依存はリスク」断交を示唆か [931948549]
- 【んな専🏡】なんG 姫森ルーナ(・o・🍬)総合スレ🏰【ホロライブ▶】
- 【悲報】高市早苗周辺「支持層が離れるので今更発言を撤回できない」 [935793931]
- 高市早苗、岸田政権(当時)に「台湾有事は日本の有事か」という質問をしていた [175344491]
