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:KLv0vQmm245デフォルトの名無しさん
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な静的変数は使わない。
エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
322デフォルトの名無しさん
2017/04/29(土) 02:16:02.91ID:2iGvQ1xG >>321
いや、それは格好悪いんじゃね?
セルを使ったりCustomDocumentPropertiesも使うけど、それに合ったものだから使うわけでPublic変数に合ったものもある。
適材適所だろ。
いや、それは格好悪いんじゃね?
セルを使ったりCustomDocumentPropertiesも使うけど、それに合ったものだから使うわけでPublic変数に合ったものもある。
適材適所だろ。
323デフォルトの名無しさん
2017/05/25(木) 20:51:55.45ID:yS9f0RVc ontime で実行するプロシージャって標準モジュールに書かないとあかんのか。
このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。って出た。
このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。って出た。
324デフォルトの名無しさん
2017/05/25(木) 21:07:30.77ID:JTnnq+Q0325デフォルトの名無しさん
2017/05/26(金) 00:03:34.69ID:Fw61rXsb >>324
ThisWorkBookのモジュールからOnTimeでThisWorkBookのモジュール内のPrivate Sub を予約したんですが・・・これじゃ駄目なんですかね?
ThisWorkBookのモジュールからOnTimeでThisWorkBookのモジュール内のPrivate Sub を予約したんですが・・・これじゃ駄目なんですかね?
326デフォルトの名無しさん
2017/05/26(金) 23:19:52.51ID:Fw61rXsb >>325です
OnTimeで実行予約するプロシージャを標準モジュールに移動したら動くようになりました〜
OnTimeで実行予約するプロシージャを標準モジュールに移動したら動くようになりました〜
327デフォルトの名無しさん
2017/06/05(月) 21:02:56.92ID:bd1ggU41 特定の文字が含まれているセル(複数ある)を検索し、
検索されたセルを含む行全体(Entirerow)を同時選択する方法
以上お願いします。
検索されたセルを含む行全体(Entirerow)を同時選択する方法
以上お願いします。
328デフォルトの名無しさん
2017/06/05(月) 21:06:49.56ID:bd1ggU41 その文字を含むセルを、行ごと削除したり、行ごとコピーしたりと、いろいろしたいので質問致しました。
329デフォルトの名無しさん
2017/06/05(月) 21:25:48.60ID:nSGQpg3a 鮮やかな丸投げっぷりにワラタ
作成依頼OKな Excel VBAスレと間違えてない?
作成依頼OKな Excel VBAスレと間違えてない?
330デフォルトの名無しさん
2017/06/05(月) 21:31:47.51ID:tRFV5HQ5331デフォルトの名無しさん
2017/06/05(月) 21:41:12.12ID:jKyX/qwq 検索対象のセル範囲でForループを回す
セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく
ループ終了後にSelectする
以上
セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく
ループ終了後にSelectする
以上
332デフォルトの名無しさん
2017/06/05(月) 21:45:35.27ID:epzJZZwH333デフォルトの名無しさん
2017/06/05(月) 22:37:03.17ID:bd1ggU41 ごめんなさい、質問者です。
ここじゃなかったのですね。上に上がったやり方でできそうなのでやってみます。ありがとうございます
ここじゃなかったのですね。上に上がったやり方でできそうなのでやってみます。ありがとうございます
334デフォルトの名無しさん
2017/06/06(火) 05:49:03.11ID:tznXutzN 色々細かい条件でどんなコードが効率いいか、変わってくるでしょ。
例えばそのセルがあるのは、特定の行だけとか、検索文字列はセルに完全一致なのか含まれるのか、など。
例えばそのセルがあるのは、特定の行だけとか、検索文字列はセルに完全一致なのか含まれるのか、など。
335デフォルトの名無しさん
2017/06/06(火) 09:11:47.41ID:YhE+Nuz8 331だが、同じ行に該当セルが複数ある場合は無駄が生じるな
実現したい機能次第だが、工夫が必要かもな
実現したい機能次第だが、工夫が必要かもな
336デフォルトの名無しさん
2017/06/07(水) 19:31:10.77ID:e13xfCG0 はじめまして。以下2点、教えていただけると幸いです。
環境は、OS:Windows7, Excel2010です。よろしくお願いします。
1.プルダウンの初期値設定
セルA1にりんご、A2にバナナ、・・・のようにA列にある項目をプルダウンで選択したいです。
このとき、「A列のj行目(パラメータ選択可能)を初期値にしたプルダウンをB1に設置する」VBAのコマンドを教えていただきたいです。
2.ファイル名の変更
aaa.txtというファイルをデスクトップに出力するマクロを作れました。
このマクロ実行後、再度実行するとaaa(2).txtのファイルを、再度実行するとaaa(3).txtのファイルを出力・・・
このようなVBAのコマンドを教えていただきたいです。
環境は、OS:Windows7, Excel2010です。よろしくお願いします。
1.プルダウンの初期値設定
セルA1にりんご、A2にバナナ、・・・のようにA列にある項目をプルダウンで選択したいです。
このとき、「A列のj行目(パラメータ選択可能)を初期値にしたプルダウンをB1に設置する」VBAのコマンドを教えていただきたいです。
2.ファイル名の変更
aaa.txtというファイルをデスクトップに出力するマクロを作れました。
このマクロ実行後、再度実行するとaaa(2).txtのファイルを、再度実行するとaaa(3).txtのファイルを出力・・・
このようなVBAのコマンドを教えていただきたいです。
337デフォルトの名無しさん
2017/06/07(水) 21:49:32.12ID:nqbSOdK9 >>336
コマンドはありません
コマンドはありません
338デフォルトの名無しさん
2017/06/07(水) 22:23:27.64ID:L3ua+fDn >>336
txtファイルをデスクトップに出力っていう日本語の破壊力がやべぇ
txtファイルをデスクトップに出力っていう日本語の破壊力がやべぇ
339デフォルトの名無しさん
2017/06/08(木) 05:33:24.44ID:1DKX/Vru >>336
1
・B1セルを選択してからマクロの記録を実行
・入力規則でリストを選択にリストの内容でA列を選択する
・マクロ記録の終了をする
・できたコードを修正してA列の任意のセルをデフォルトにするように変更する
2
・デスクトップにaaa.txtが存在するかチェックする。
・存在しない場合はaaa.txtを作成して終了。
・存在する場合はDo~Loop中にデスクトップにaaa(i).txtが存在するかチェックする
・存在する場合はiをカウントアップして次のループ
・存在しない場合はそのiを使用してaaa(i).txtを作成して終了。
1
・B1セルを選択してからマクロの記録を実行
・入力規則でリストを選択にリストの内容でA列を選択する
・マクロ記録の終了をする
・できたコードを修正してA列の任意のセルをデフォルトにするように変更する
2
・デスクトップにaaa.txtが存在するかチェックする。
・存在しない場合はaaa.txtを作成して終了。
・存在する場合はDo~Loop中にデスクトップにaaa(i).txtが存在するかチェックする
・存在する場合はiをカウントアップして次のループ
・存在しない場合はそのiを使用してaaa(i).txtを作成して終了。
340デフォルトの名無しさん
2017/06/25(日) 17:10:56.20ID:/fEFwdln A1セルに =NOW()-TODAY() と入力すると
現在時刻が表示されますが。
MsgBox Range("a1")
とすると 0.0110212・・・と言ったような数値が出ます。
Dim now As Date
now=Range("a1")
と型を指定した変数に格納してやると
MsgBox now で 21:49:32 といった一般的な時間表記を示せますが、
変数化を省略して
MsgBox Range("a1")〜に補足コードを書くなどで同じ処理を実現する方法は無いのでしょうか?
現在時刻が表示されますが。
MsgBox Range("a1")
とすると 0.0110212・・・と言ったような数値が出ます。
Dim now As Date
now=Range("a1")
と型を指定した変数に格納してやると
MsgBox now で 21:49:32 といった一般的な時間表記を示せますが、
変数化を省略して
MsgBox Range("a1")〜に補足コードを書くなどで同じ処理を実現する方法は無いのでしょうか?
341デフォルトの名無しさん
2017/06/25(日) 17:20:36.10ID:A4A49pvi MsgBox Range("A1").Text
とか
MsgBox Format(Range("A1"), "hh:mm:ss")
とか
とか
MsgBox Format(Range("A1"), "hh:mm:ss")
とか
342デフォルトの名無しさん
2017/06/25(日) 17:26:03.97ID:/fEFwdln343デフォルトの名無しさん
2017/07/17(月) 17:20:20.62ID:7pjXcMGR プロシージャの中で1回しか使わないのに、わざわざ変数にするやつとかいるよね。(しかもハンガリアン記法で)
100行に満たない程度のコードなら、Withステートメント使ったほうがむしろ可読性は上がる。
100行に満たない程度のコードなら、Withステートメント使ったほうがむしろ可読性は上がる。
344デフォルトの名無しさん
2017/07/17(月) 17:25:26.05ID:l3sSLpQS マシンパワーが貧弱だった大昔ならともかく、今時はリソースを気にする必要なんてないんだから、可読性を最優先で記述するべきだよ。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- お前らは“スカイマイルタワー”建設計画を知っているか?
- 万引きJC「すいません許してください!何でもしますから!」←どうする?
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 5時だから窓から5回ちんこ出した
- 「黙らせてやろうと思った」自宅マンション10階から高校テニスコート内の女子生徒目掛けて貯金箱を投擲した女の子、殺人未遂で逮捕 [399583221]
