◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

VBAなんでも質問スレ Part2 [転載禁止]©2ch.net YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1432173164/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん
2015/05/21(木) 10:52:44.71ID:KLv0vQmm
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/
2デフォルトの名無しさん
2015/05/21(木) 10:55:03.32ID:KLv0vQmm
前スレ埋まってたから立てた
3デフォルトの名無しさん
2015/05/22(金) 20:11:01.96ID:HMp/+WyD
バカはレスしないでくれる?
個人の主張として批判せず、いたずらにある類として扱うのは極めて恣意的かおバカの批判にあらざる攻撃の特徴。
まあ、その軽蔑すべき発想で返した俺も反省はしてもよいが
はっきり言って精神病とバカの特徴でしかない論法でレスするなよ。
俺はバカと精神病きらいだからな。
おまえら、マジで精神病と思われる宣言的絶対主義の形而上学バカの一味は人類の公的な敵だとおもっているからな。
さしあたりお前らが馬鹿にされていることは科学的認識の健全性をそれなりに示すから喜ばしいがな。

それにしても、単なる知識を披露しあっているだけの時は頭良さそうなふりはできるが、
いよいよ自身の認識を問われる事態になるとここにいる連中、そこの浅さを露呈するやつ多すぎ
所詮、2chだな
4デフォルトの名無しさん
2015/05/26(火) 09:57:20.64ID:98AIg8rM
ここまでテンプレ
5デフォルトの名無しさん
2015/05/26(火) 11:15:15.08ID:IGUKy8Mq
>>3
むしろ自分が歯が立たない相手だと分かったら「精神病と馬鹿」というレッテルを相手に貼って
逃げるお前の方がヘタレだけどな

精神病で馬鹿なのはお前の方だよ
6デフォルトの名無しさん
2015/05/28(木) 19:23:08.79ID:S82MiYOL
どこかわからんのでココで。
WordVBAで質問です。

あらかじめスタイルを本文内に設定しておき、
マクロで指定したスタイルが設定されている箇所を検索→
そのスタイルが指定されている場所の文章の置き換え

ということがしたいですが可能でしょうか。
スタイル名を指定して本文内を検索する、という例が見つからず困っております。
7デフォルトの名無しさん
2015/06/10(水) 12:51:41.97ID:Eg5H5jgh
outlook2010でHTML形式メール本文の
Enter改行をShiftEnter改行に一括置換、
のVBAをさがしています。
下記のVBAでWordは動くのだけど、
そのままではoutlookで動かない

Sub ShiftEnterConvert()
'
' Enter改行をShiftEnter改行に変換
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^13"
.Replacement.Text = "^11"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=ReplaceAll

End Sub
8デフォルトの名無しさん
2015/06/10(水) 12:51:59.79ID:Eg5H5jgh
↓ここが参考になりそうなんですが、ほぼ素人の自分には無理でした…わかる方教えてください。
https://outlooklab.wordpress.com/2009/08/08/outlook-object-model-%E3%81%A7%E6%9C%AC%E6%96%87%E3%81%AE%E7%B7%A8%E9%9B%86%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AB-word-%E3%81%AE%E6%A9%9F%E8%83%BD%E3%82%92%E5%91%BC%E3%81%B3%E3%81%A0%E3%81%99%E3%83%9E/
9デフォルトの名無しさん
2015/06/15(月) 17:19:16.55ID:pR/1zNa6
>>7
受信したメールを置換ってできないのでは?
置換したファイルをエクスポートするのですか?
10デフォルトの名無しさん
2015/06/16(火) 22:15:42.00ID:x8vn2cko
すみません、受信メールではなく、作成中のメールです。
PCからガラケーに送ると、Enter改行だと無視されてしまうので、送る前にボタンを押してShiftEnter改行に変えたいのです。
リンク付きでPCの人にも送るので、HTMLメールのまま送りたいので。
11デフォルトの名無しさん
2015/06/17(水) 02:45:22.84ID:WySeJcTb
>>10
リボンの編集→置換で(ワイルドカードを使用する)^13と^11を指定すればウィンドウからはできましたが、
この機能に該当するメソッドがどうにも探せないですね。
参考にされたコードはワードのものなんですけど、OUTLOOKで使うにはちょっと無理そうです。
12デフォルトの名無しさん
2015/06/30(火) 10:29:12.58ID:ewTLWEfL
初心者から始め、2年ほど1人でVBA業務をしていたのですが
そろそろ引き継ぎ等も考え、コーディング規約のようなものを作成しようと考えています。
各プログラムで命名規則も違うため、統一したいのですが今ひとつ可読性の高い命名というのがわかりません。
修正前の変数宣言のコードを記載しますので、ぜひ添削していただけないでしょうか。
なお、グローバル変数宣言しているのは当時、この方法が一番良いと思ったためです。
13デフォルトの名無しさん
2015/06/30(火) 10:41:30.91ID:ewTLWEfL
'ワークシート名宣言
Public Const Input_WS As String = "入力" '注文書テン
プレートのワークシート名
Public Const Setting_WS As String = "設定" '注文書設定
のワークシート名

'ワークシート[入力]のセル番地宣言
Public Const Order_No As String = "AO1" '注文書番号
Public Const Order_Title As String = "Q2" '注文書種類
Public Const Deta_Issue As String = "S5" '発行日
Public Const Company_Name As String = "B8" '外注業者名
Public Const Company_Code As String = "U8" '取引先
コード
Public Const Cash_Ratio As String = "AE14" '現金割合
Public Const Bill_Sight As String = "AO14" '手形サイト
Public Const Con_Name As String = "F14" '工事名称

Public Const Con_Add As String = "F16" '工事名称
Public Const Con_Start As String = "F17" '工期始
Public Const Con_End As String = "O17" '工期終
Public Const Con_Payment As String = "F19" '工事金額
Public Const Amount_Tax As String = "L19" '税額
Public Const Amount_Total As String = "Q19" '合計金額

'ワークシート[設定]のセル番地宣言
Public Const Set_ConName As String = "B4" '工事名称
Public Const Set_ConNo As String = "B5" '工事コード
Public Const Set_Start As String = "B7" '工期始
Public Const Set_End As String = "B8" '工期終
Public Const Set_Tax1 As String = "B10" '基本税率
Public Const Set_Tax2 As String = "B11" '変動税率
14デフォルトの名無しさん
2015/06/30(火) 16:19:51.35ID:GcuTOY9X
>>13
工事をConと省略せずにconstruction_xxxと書くべきだと思うが、それよりもワークシートのセル番地を固定文字列で定義するのはまずいだろう。
一行ずらしましょう、とかするときどうするの?不自由この上ない。
15デフォルトの名無しさん
2015/06/30(火) 16:46:45.95ID:ybpzKx4V
Detaが気になる・・・
16デフォルトの名無しさん
2015/06/30(火) 18:04:04.25ID:RGb3IB+F
>>14
セル番地の固定文字列については改めて見るとすごくおかしいと思いました。
修正したいですが、皆さんワークシートやセル番地の定数はどのようにされているのでしょうか。
検索はするものの、なかなか見つけられず困っています。
>>15
気づきませんでした、すみませんありがとうございます。
17デフォルトの名無しさん
2015/06/30(火) 19:44:23.68ID:4fqzjiG2
セル番地はセルに名前を付ける
列番号はenumにまとめる
シート名はconst
基本適当
18デフォルトの名無しさん
2015/07/01(水) 22:28:04.95ID:DXkWToqb
一日20項目ほどの数値データが入力されている月報の表を
月末にデータを全て消去して、同じWS上で次月の日付、曜日
の書き込まれた新しいフォームに更新したいのですが、
マクロで実現可能でしょうか?
19デフォルトの名無しさん
2015/07/01(水) 22:31:39.26ID:jU+pvdKi
手動でやれることはたいがいマクロ化できる。
20デフォルトの名無しさん
2015/07/01(水) 23:04:39.40ID:DXkWToqb
やってみたけど30日までの月や31までの月などがあって
上手く行かないのです。
21デフォルトの名無しさん
2015/07/01(水) 23:05:37.19ID:DXkWToqb
どこかにサンプルコードでも落ちてないでしょうか?
22デフォルトの名無しさん
2015/07/02(木) 02:39:59.24ID:9jOibGQm
翌日の日付が「1」だったらコードを実行するようにしたらいいんでない?
23デフォルトの名無しさん
2015/07/02(木) 11:43:59.86ID:mBr3NkR3
>>18
年と月が指定されればその月の日数は求められるよ
(月だけだとうるう年があるから2月に対応出来ない)

具体的やり方は複数あるだろうけど
例えばDateserial関数で指定月の翌月のゼロ日(ツイタチの前日)を求めれば出る

2015年7月の日数を求めたらこんな感じ

Sub Test()
Dim 年指定 As Long
Dim 月指定 As Long
Dim 日数 As Long
年指定 = 2015
月指定 = 7
日数 = Day(DateSerial(年指定, 月指定 + 1, 0))
End Sub
24デフォルトの名無しさん
2015/07/02(木) 13:00:55.32ID:ww5oQ+GG
>>18
フォーム更新のタイミングは?
ファイルを開いたときに自動で更新するの?
25デフォルトの名無しさん
2015/07/02(木) 14:46:01.74ID:AbwDTtrn
年月は、ボックスからプルダウンリストで指定
するだけです。ただ、指定年月の1〜月末までの日付、曜日を月報の1.2行目に縦に列記するコードが出来ないのです。
26デフォルトの名無しさん
2015/07/02(木) 16:13:54.40ID:mBr3NkR3
>>25
こんなんでどう?
対象のワークシートと年、月、を引数に指定してコールすれば
対象のシートのA列に日付、B列に曜日を書き込むよ
年と月は省略可能で、省略すると当日の年・月を指定したとみなして処理を実行するよ

Sub test(sh As Worksheet, Optional ByVal yr As Long = 0, Optional ByVal mo As Long = 0)
Dim i As Long
Dim cnt As Long
If yr = 0 Or mo = 0 Then
yr = Year(Date)
mo = Month(Date)
End If
cnt = Day(DateSerial(yr, mo + 1, 0))
With sh
 .Cells.ClearContents
 .Columns(2).NumberFormatLocal = "aaa"
For i = 1 To cnt
.Cells(i, 1) = i
.Cells(i, 2) = Weekday(DateSerial(yr, mo, i))
Next i
End With
End Sub
27デフォルトの名無しさん
2015/07/02(木) 19:18:37.45ID:zxCnKqA7
何とかできそうです。ありがとうございました。
28デフォルトの名無しさん
2015/07/02(木) 20:29:21.19ID:Mdba4OI7
>>14
なんやわからん英語で書かれている方がよっぽど分かりずらいので、
あくまでもEXCELマクロで使用するスクリプトなのでコメントに書いている
そのコードを外人に見せるなら英語が望ましいけど、
漢字をそのまま使えばいいかと。
工事名称等は重複してるので、設定_工事名称とかになるんでしょうかねー。

セル番地の固定値を変数で持っているのが引っかかっているみたいですけど、
メンテするときはコードのメンテも込みになるでしょうから、
変数に代入して整理してるし良いのでは?
というか、そういう風にルールを敷けばいいとおもうの。
29デフォルトの名無しさん
2015/07/03(金) 08:49:41.34ID:IELcwsmr
>>28
全体を一行下にずらす、とかするとき数十個ある変数を個々にメンテするの?
工事_A = "AO1" → 工事_A = "AO2"
工事_B = "AP1" → 工事_B = "AP2"
・・・
30デフォルトの名無しさん
2015/07/03(金) 14:52:04.92ID:aFtg1Cyl
>>29
それでいいと思うよ
どうやろうとしてるのか知らんけど、この手の奴は分かりやすいのが一番だと思う
31デフォルトの名無しさん
2015/07/03(金) 16:20:33.62ID:L435uo00
分りやすいっていうか、直接的だから理解はしやすいけど
修正が面倒で間違いも起きやすいね
レイアウト自体の変更ではなく、全体を一気に動かすなら
最初の一要素だけ絶対アドレスで指定して
あとはそこからの相対参照(要するにオフセット)にしておくというのもひとつの手だと思う
それなら1個いじれば全部まとめて直せる
32デフォルトの名無しさん
2015/07/06(月) 05:20:54.03ID:UMBaWGrv
>>31
数十行にわたるコードのメンテぐらいで不満がある程度なら、
プログラム書くのは向いていないので、長いコードは書かないほうがいいと思う。
あと、ただ一つ変えれば全部まとめて直せるコードでも、
そのコードを知らない他人から見れば、結局全部見ることになると思うよ。
本当にそれでいいのかという部分も含めてテストすることになるから。
で、結局のところ別にどっちでもいいとなる。
33デフォルトの名無しさん
2015/07/06(月) 08:42:45.53ID:fhp0P+BJ
>>31
項目増えて、途中に一行追加されたら似たようなことになるでしょ
34デフォルトの名無しさん
2015/07/06(月) 13:55:10.74ID:henE3y4I
向き不向きに関する思い込みだな
35デフォルトの名無しさん
2015/07/06(月) 17:53:09.90ID:J6N5PkHq
>>32
数十行だろうと数万行だろうと
ひとつの変更で複数の変更箇所が出てくる構造自体のほうが問題だと思うよ

>そのコードを知らない他人から見れば、結局全部見ることになる

云々はベタに一個ずつ指定していても同じ確認コストを要するわけで
適切なコメントをつけとくなりなんなりで対応しないとしょうがないんじゃないの?

>>33
いや、だから

>レイアウト自体の変更ではなく、全体を一気に動かすなら

という前提条件をつけた上での話をしてるんだけど
36デフォルトの名無しさん
2015/07/06(月) 18:38:29.56ID:fhp0P+BJ
>>35
> という前提条件をつけた上での話をしてるんだけど
そう言うケースがどれだけあるんだ?
って話でしょ
滅多にないケースに対応するために分かりにくい方法をとる必要はないよね
37デフォルトの名無しさん
2015/07/06(月) 21:37:27.39ID:J6N5PkHq
>>36

表の頭にあとから表題を付け加えるとかで
全体を動かすケースってのはそれなりにあると思うよ、
仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。

それに、全体をずらすってのは>>29の発案であって俺が言い出した話じゃないんで
俺はあくまで他人から与えられた前提条件で考えただけの話
38デフォルトの名無しさん
2015/07/06(月) 22:43:31.22ID:fhp0P+BJ
>>37
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。
普通はそうでしょ?

> 俺はあくまで他人から与えられた前提条件で考えただけの話
あまりない条件だけ考えることになんか意味があるのか?
39デフォルトの名無しさん
2015/07/06(月) 23:03:55.23ID:J6N5PkHq
>>38
そっちのが多いとは言ったが、全体を動かすのもそれなりにあるって言ってるじゃん
滅多にないとかありえないとかいうほどのレアケースではないよ
40デフォルトの名無しさん
2015/07/06(月) 23:42:36.40ID:QbnSMTRw
>>39
> ありえないとかいう

誰もそんなことは言ってないだろ?
お前さんも認めてるように

> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多い

なら、そっちの対応を優先して設計した方がいいんじゃね?

って話
41デフォルトの名無しさん
2015/07/06(月) 23:52:37.58ID:UMBaWGrv
>>37
別にセルのアドレスを固定で持ってようが、一つのアドレスに対して
相対で持ってようがどっちでもいいだろ
ケースバイケースで使い分けようとは思わないのか?

俺が言ったのは数十個(行)程度の修正から避けるために
相対座標で組んだ方が良いと思っているならプログラム組むのは
向いてないってことだよ
だから、お前は長いソースを組むような仕事は向いてないよって言ったんだよ。
せいぜい短く済むようなのを探しとけw

分かりやすいソースのほうが、修正工程の見積もりだって立てやすい
お前のいう相対座標は、その一つの絶対座標に対して成り立っているんだから
見出しが追加されてずれる程度ならいいが、途中の箇所に複数追加変更されたら
むしろ修正面倒なんじゃね?
数万も入力させるセルがあるなんてシートの設計のがおかしいと思うが
数万のセルがあちらこちら変更になるのなら簡単で見やすい定義を切っている
ほうが引き継ぎもしやすいし、修正もしやすいってわからんのか?
42デフォルトの名無しさん
2015/07/07(火) 05:36:44.07ID:PlDHyacp
>>40
ああ、ごめん
「ありえない」じゃなくて「あまりない」だったか
どっちにせよレアケースではないのでそこが重要とは思わんけど

>>41
おれも「ひとつの手」だといってますよね?
ということはそれが絶対ということではないですよ。

まぁ、全部直値で指定する場合の変更コストとOffsetで記述した場合の変更コストが
それほど変わるとも思えませんが。

>>29のっぽい例で言えば
工事_A = "AO1" → 工事_A = "AO2"
工事_B = "AP1" → 工事_B = "AP2"
工事_C = "AQ1" → 工事_C = "AQ2"
・・・

というのが

工事_A = "AO1" → 工事_A = "AO2"
工事_B = Range(工事_A).Offset(0,1) → 工事_B = Range(工事_A).Offset(1,1)
工事_C = Range(工事_A).Offset(0,2) → 工事_C = Range(工事_A).Offset(1,2)
・・・

になる程度の話でしょ?

んでもって、何もわからない誰かに保守を引き継ぐのであれば表のレイアウトについてはコメントに書いておくべき物じゃないですかね?

後任の人があらかじめ何の予備知識もないなら全部の要素を直接指定しているのかそうでないか自体、
少なくともコードを全部読まなきゃ判断できないわけで、それなら相対指定で書いてもおなじことです。
43デフォルトの名無しさん
2015/07/07(火) 05:42:25.10ID:PlDHyacp
やべ、工事_AだけRangeで指定してなかったし、全体をずらすだけなら
工事_B以降には変更ないわ

工事_A = Range("AO1") → 工事_A = Range("AO2")
工事_B = Range(工事_A).Offset(0,1) → 工事_B = Range(工事_A).Offset(0,1)
工事_C = Range(工事_A).Offset(0,2) → 工事_C = Range(工事_A).Offset(0,2)
・・・
44デフォルトの名無しさん
2015/07/07(火) 05:48:03.16ID:PlDHyacp
さらに間違ってた
工事_AがRange型ならそれ以降にRange(工事_A)なんて書く必要なかった

まぁ、何も知らずにコードを読んで表のレイアウトを理解できるかどうかとか
表の変更にかかるコストとかには大して影響ない話だけど
45デフォルトの名無しさん
2015/07/07(火) 07:47:40.19ID:yxtOW/kO
>>42
> どっちにせよレアケースではない

いや、レアケースかどうかじゃなくて

> 仕様変更で項目順の変更とか途中に項目追加とか

と比較しての話なんだが...
ひょっとして論理的な思考ができない人なの?

> 少なくともコードを全部読まなきゃ判断できないわけで、それなら相対指定で書いてもおなじことです。

セルアドレスなら一目でどこを指してるのかわかるけど、Offset( ) だとちょっと面倒でしょ?
そもそも、自分で間違えてるようじゃ説得力 0 だしね w
46デフォルトの名無しさん
2015/07/07(火) 08:33:01.57ID:PlDHyacp
>>45
とにかく、コストがさほど変わらん以上、そういうことは重要ではないよね、
って言ってるんだけどそれが論理的に理解できない人なの?

んで、Offsetで(R1C1形式で)書くのがいやなら
RangeでA1形式で書けばいいじゃん
そんなの瑣末なことでしょ

あと、間違えたのは夜中にトイレで起きたときに書き込んだからで
たぶんあのときだとどっちで書いても間違えてる
(普段からR1C1形式で書くのでどっちかってーと俺はA1形式のほうが間違える)
47デフォルトの名無しさん
2015/07/07(火) 08:34:48.94ID:xJTxnmtV
相対座標がどうたらというのは>>31が言い出したことにすぎないし、"AY0"とかいう文字列で指定すること自体がけしからんという意見。
48デフォルトの名無しさん
2015/07/07(火) 12:53:11.67ID:yxtOW/kO
>>46
> とにかく、コストがさほど変わらん以上、そういうことは重要ではないよね

どう書いてもたいして変わらんから、ごちゃごちゃ言い出した >>29 とか >>31 がバカと言う主張なら納得

> RangeでA1形式で書けばいいじゃん

そう言う問題じゃない
Range("E3").Range("G4")
ってどこ?
ってすぐわからんでしょって話

まあ君にとってはどうでもいい話だったな w
49デフォルトの名無しさん
2015/07/07(火) 13:20:08.70ID:PlDHyacp
>>48
全体を動かす際のコストは明らかに相対参照のほうが上で、
レイアウト変更ならどっちもどっち、って話だよ。

俺個人としては表の各要素の絶対座標よりも表のレイアウト内での相対位置のほうが
重要だと思うんで可読性は相対表記のほうが上だと思う。
もちろん、range("E3").Range("G4")とは書かないよ
だからこそのOffset表記なんであって
仮に書くなら
工事_A = Range("G4")
工事_B = 工事_A.Offset(0,1)
みたいに書けば表の中での位置関係が分りやすい(、と思うってだけなんだけどね)

んでさ、一々相手の人格攻撃するのは止さないか?

反論するのは難しくないけどめんどくさいし
貴方にとっても内容を論理的に言うこと以外に自説の説得力を増す手法なんてないよ
50デフォルトの名無しさん
2015/07/07(火) 16:17:25.40ID:yxtOW/kO
>>49
> レイアウト変更ならどっちもどっち、って話だよ。

そんな思い込みを前提にされてもなぁ...

> 重要だと思うんで可読性は相対表記のほうが上だと思う。
> だからこそのOffset表記なんであって

応用力ないの?

> Range("E3").Range("G4")
> ってどこ?

って書いてあるんだから、レスする前に
Range("E3").Offset(3,6)

Range("K6")
のどっちが可読性が高いかとか考えないのか?

> めんどくさいし

君にはレスしないと言う自由があるよ
反論するのも苦労してるみたいだしね w
51デフォルトの名無しさん
2015/07/07(火) 16:28:56.71ID:PlDHyacp
>>50
>どっちが可読性が高いかとか考えないのか?

うん、だからOffsetのほうが読みやすいよ

>レスしないという自由
は確かにあるし
君にも好き勝手な方言を垂れ流す手段(自由や権利ではない)はあるんだけど、
こうやってきちんと反論しといたほうが良さそうなんで仕方ないからそうしてる
52デフォルトの名無しさん
2015/07/07(火) 16:29:56.64ID:PlDHyacp
変換ミスしちゃった
×方言
○放言
53デフォルトの名無しさん
2015/07/07(火) 17:37:36.10ID:yxtOW/kO
>>51
> うん、だからOffsetのほうが読みやすいよ

へー、そうなんだー、すごいねー(棒

基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利なのに、読みやすいとか笑えるわ w

あと方言とか意味不明
もう少し自分の書き込み見直した方がいいんじゃね?
54デフォルトの名無しさん
2015/07/07(火) 18:35:20.15ID:PlDHyacp
>>53

絶対アドレスが必要ならそうだけど
通常は表内部のレイアウトが問題なんだから
絶対アドレスは気にする必要ないよね?

それともいちいち「何々の項目はF5だ」とか気にして作業してるの?
俺は「表の1列目は@@@の項目で、2列目は***の項目だ」みたいな捉え方はするけど
絶対アドレスが必要になったことなんてないよ

変換ミスについてはまぁ申し訳ない、だけどそれは議論の結果には影響ないと思う。
55デフォルトの名無しさん
2015/07/08(水) 10:49:05.20ID:U80w5CD7
>>54
> それともいちいち「何々の項目はF5だ」とか気にして作業してるの?

いちいちそんなことをしたくないから定数で定義してるんだよ
意識するのは定数を定義するコードを書く時だけ

> 絶対アドレスが必要になったことなんてないよ

Offset( ) で書くにしても、基準のセルは絶対アドレスで指定するだろ
56デフォルトの名無しさん
2015/07/08(水) 11:43:46.03ID:KchLLrX8
>>55
まだやるんかw

いや、基準のセルは俺も絶対アドレスで指定してますよね。

それ以外の部分では表の中での位置関係(表の何行目であるとか何列目であるとか)
についての情報のみが必要であって
それは基準セル(通常は左上端)からの相対位置が分ればそれで事足りると言ってるのです。
むしろ個々の要素についてまで絶対位置指定などしても可読性が下がるだけです。

まぁ、これはあくまでも普段からR1C1形式を好んで使ってる人間(つまり俺)の意見です。

この判断の優劣・良否・正誤等々については個々人の好みも有るでしょうから
どちらの考え方が優れているとかそういう視点での議論には決着がつかないと思いますけどね。
57デフォルトの名無しさん
2015/07/08(水) 12:37:46.79ID:U80w5CD7
>>56
> むしろ個々の要素についてまで絶対位置指定などしても可読性が下がるだけです。

根拠もなしに下がるとか言われてもなぁ
とりあえず、
個人の感想です
って書いといた方がいいんじゃないか w

Excel マスターでない一般人は

>> 基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利なのに、読みやすいとか笑えるわ w

だろ

> どちらの考え方が優れているとかそういう視点での議論には決着がつかないと思いますけどね。

はい、ループいただきましたぁ w

>>48
> どう書いてもたいして変わらんから、ごちゃごちゃ言い出した >>29 とか >>31 がバカと言う主張なら納得
58デフォルトの名無しさん
2015/07/08(水) 12:51:28.44ID:5jcTfYer
ID導入されて、本当によかった
59デフォルトの名無しさん
2015/07/08(水) 13:02:19.06ID:KchLLrX8
>>57
>個人の感想です
>って書いといた方がいいんじゃないか

書いてますよね?
R1C1を使い慣れてる人間の意見だって。

一般人の定義がわからないけど
俺は一般人こそ表の体裁(つまり相対位置による個々の要素の関連)には気を使うけれど
その座標なんてものには関心を持たないと思いますよ。
俺自身一般人のつもりですし。

表の修正があったときに「L列から4列ずらす」ってのと
「12列目から4列ずらす」ってののどっちが分かり易いかなんて
俺に言わせりゃ一目瞭然で後者なんですけど、
あなたの言う一般人は前者を選ぶってんでしょ?
それについての価値観云々を論じることに結論が出るのかって話です。

>どう書いても

云々についてはすでに論述済みですが
全体を動かす場合には
基準セル1ヶ所のみを絶対参照で指定するほうが明らかにすぐれていますし、
レイアウトの変更であっても
Range表記で基準位置からの相対指定を用いるというのは
あくまで表の体裁の中だけに問題を帰着できるという意味で
レイアウトを記述するための手法として間違ってないと思います。

ところで、なんだか無理筋で反論続けてるように見えるのですが大丈夫ですか?
一応、われわれの議論を第三者が読んでどう判断するか
冷静に考えたほうが良いと思いますよ。
60デフォルトの名無しさん
2015/07/08(水) 14:00:10.16ID:U80w5CD7
>>59
> 書いてますよね?
> R1C1を使い慣れてる人間の意見だって。

皮肉も理解できないの?
そもそもそれはその上の

>> 根拠もなしに下がるとか言われてもなぁ

にかかってるんだけど、そこはスルーなのな w

> 表の修正があったときに「L列から4列ずらす」ってのと
> 「12列目から4列ずらす」ってののどっちが分かり易いかなんて

あのさあ、反論できずに悔しいのはわかるけど、「ずらす」なんて変更がどれだけあるんだ?
って話に戻すの?
普通は、>>13 の例だと 注文書番号 を少し左に寄せたいから AO1 から AN1 に移動させてくれって言われるんじゃね?
直書きならその部分のみを AO1 から AN1 に書き換えるだけ
で、君の方法だとどうなるわけ?
可読性がすごくいいんでしょ?
示してみてよ。

> ところで、なんだか無理筋で反論続けてるように見えるのですが大丈夫ですか?
> 一応、われわれの議論を第三者が読んでどう判断するか
> 冷静に考えたほうが良いと思いますよ。

鏡見た方がいいと思うよ w
61デフォルトの名無しさん
2015/07/08(水) 15:15:33.15ID:KchLLrX8
>>
62デフォルトの名無しさん
2015/07/08(水) 15:39:00.14ID:KchLLrX8
>>60

>根拠
ですから、>>59とかそれ以前の>>49とか>>54とか>>56とかは
全部根拠について書いてるんですが。
意図的なスルーですか?

>普通は、>>13 の例だと 注文書番号 を少し左に寄せたいから AO1 から AN1 に移動させてくれって言われるんじゃね?
>直書きならその部分のみを AO1 から AN1 に書き換えるだけ
>で、君の方法だとどうなるわけ?

いや、オフセット一個増やすだけでしょ

ところで、注文書番号 のAOは一番右端の列っぽいのであえてそこを選んでるんですか?

たとえばB列の外注業者名がずれたら残り全部ずれると思うんですけど。
んでもってそういった場合(一番右端の要素以外の変更の場合)、
「どこどこに@@って項目を追加するから、表を**の項目から全部右にX個ずらして」
みたいな話になるんじゃないでしょうか。
どうみたってオフセットのほうが簡単じゃないですか。

>鏡見た方がいいと思うよ
もちろん、俺は第三者を意識して書いてるので問題ないです。
貴方もそれで良いならこれ以上とくに言うべき事も有りません。


なお>>61は打ち間違えて送信しちゃいました。
たびたびスマン
63デフォルトの名無しさん
2015/07/08(水) 19:21:57.08ID:U80w5CD7
>>62
> ですから、>>59とかそれ以前の>>49とか>>54とか>>56とかは
> 全部根拠について書いてるんですが。

レス番で書かれてもわからないので、該当の箇所を引用してみて

> いや、オフセット一個増やすだけでしょ

で、それが本当に AN1 を指してるのかどうやって確認するの?
可読性がいいんだから一目でわかるんだよね?
早く示してみてよ。

> ところで、注文書番号 のAOは一番右端の列っぽいのであえてそこを選んでるんですか?

一番最初の項目を選んだだけですよ

> みたいな話になるんじゃないでしょうか。

またその話?

>>37
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。

って書かれてますよ。

> 貴方もそれで良いならこれ以上とくに言うべき事も有りません。

人のことをとやかく言う前に...

> なお>>61は打ち間違えて送信しちゃいました。

落・ち・着・け・よ
64デフォルトの名無しさん
2015/07/08(水) 21:05:13.66ID:G6HCaUBj
それよりParamArrayが参照渡しできないのはなぜなんだせ?
65デフォルトの名無しさん
2015/07/08(水) 21:21:46.83ID:KchLLrX8
>>63
>該当の箇所を引用してみて

>>俺個人としては表の各要素の絶対座標よりも表のレイアウト内での相対位置のほうが重要だと思うんで
可読性は相対表記のほうが上だと思う。

>>絶対アドレスが必要ならそうだけど通常は表内部のレイアウトが問題なんだから絶対アドレスは気にする必要ないよね?

>>表の中での位置関係(表の何行目であるとか何列目であるとか)についての情報のみが必要であって
それは基準セル(通常は左上端)からの相対位置が分ればそれで事足りると言ってるのです。

>>俺は一般人こそ表の体裁(つまり相対位置による個々の要素の関連)には気を使うけれど
その座標なんてものには関心を持たないと思いますよ。

以上、大体全部同じことの繰り返しですが、この辺が俺の主張する可読性に関する意見の根拠です。
本文長すぎるんで続きます。
66デフォルトの名無しさん
2015/07/08(水) 21:22:59.14ID:KchLLrX8
>>65の続きです
ただ、ここに来て根本的な部分の食い違いを実感してるのですが、

>それが本当に AN1 を指してるのかどうやって確認するの?
>可読性がいいんだから一目でわかるんだよね?

というあなたの指摘自体が俺の考えている可読性の概念とは食い違ってます。
あなたは結局シート内でのセルの絶対位置指定やその確認でしか可読性を考えていないようで
俺は逆にそんなものにはこだわらず表のレイアウト中での位置指定という視点で可読性を捉えているわけです。

あなたのやり方は確かにあなたの言うようなシチュエーションでは有効でしょうが、
逆にここまでで俺の主張したようなシチュエーションでは可読性やメンテナンス性が劣るということになります。

たとえばこれですけど
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。

途中に項目追加したらそこから先は全部ずれるでしょ?
(よほどスカスカの表なら別ですが、それなりに埋まってる表の場合にはそうならざるを得ません。)
そうするとセルアドレス全部直さなきゃならなくなります。
その場合には全部同じ変更(当該変更箇所を一律にオフセットずらす処理)
で対処できることってメンテナンスには大きなアドバンテージだと思いますよ。

まさか普通の業務ってのがスカスカの表でセル一個だけ変更する作業ばかりだなんて虫の良い事言わないですよね?
実際俺んとこじゃあこういう多数のセルを移動するような業務ばかりなんで俺にとってはそっちのほうが普通なんですよ。

>落・ち・着・け・よ

まぁ、打ち間違いとか変換ミスは良くやっちまうんでスミマセンとしか良いようないけど
重要なのは主張の論旨であってそれは読み手側にある程度の知識があれば
変換ミス程度は何がいいたいのか読解できるだろうからまぁ別にいいかなと思ってます。
67デフォルトの名無しさん
2015/07/08(水) 21:45:49.65ID:t0H2tWbI
>>65
根拠頂戴って言ったら

> >>俺個人としては表の各要素の絶対座標よりも表のレイアウト内での相対位置のほうが重要だと思うんで
> 可読性は相対表記のほうが上だと思う。

〜と思うってどこが根拠なんだよ... w
単なる君の意見でしょ

>>66
帳票って見たことないの?
結構スカスカだよ
例えばこんな奴
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚
表の部分は元々複数出力するので VBA でループ回すから位置を変えるのは問題ない
ありがちなのは会社名とか見積もり番号の位置を変えたいとかで、他に影響することはあまりない
68デフォルトの名無しさん
2015/07/08(水) 22:44:42.67ID:KchLLrX8
>>67
いや、それ言い出したらあなたの主張だって単なる個人の意見ですよ
たとえば帳票はスカスカだってのがあなたの意見なわけですが
そういうのじゃない表だってあるんですよ

ウチは科学技術系の職種でして
縦に時系列、横に計測項目(たとえば気温だったり風速だったり)で
複数の計測データをズラズラと並べるんですが
計測するパラメータが増えたり減ったりするんで表のレイアウトが変わるわけです。
そうすると一気に複数個所いじるのが当たり前になるわけです。
これってこっちの業界じゃあ結構当たり前のことで、
そういう時に絶対セル指定なんて使いづらくてやってらんないですよ。

あなたの主張が普遍的意義を持ってるならともかく、
こういう明らかな反例がある以上、
俺の根拠のみを私的意見だと言い切る資格はあなたにはないです。
69デフォルトの名無しさん
2015/07/08(水) 23:06:29.04ID:u2i+4Vxj
Word VBAで [Shift+Enter] を押したとき、「Chr(11)」が入るみたいだけど、これって何なんですか?
アスキーコード一覧だとVertical Tabulation(垂直タブ)って書いてあるけど、
MSDNだと「タブ文字 (縦)。Microsoft Windows では使用できません。」って書かれててよく分からないんだけど、

Windows OSでは使わないけど、word(VBA)だと使ってる文字コードだよってこと?
wordもwindows版だから、Windowsでは使用できませんってのがよく分からないんですが・・

MSDN
https://msdn.microsoft.com/ja-jp/library/cc392241.aspx

アスキーコード一覧
http://e-words.jp/p/r-ascii.html
70デフォルトの名無しさん
2015/07/08(水) 23:43:30.20ID:t0H2tWbI
>>68
> いや、それ言い出したらあなたの主張だって単なる個人の意見ですよ

残念ながら違う
例えば...

> 基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利

これには事実しか書いてない
俺の意見ではない

また...

> たとえば帳票はスカスカだってのがあなたの意見なわけですが

のようにスカスカに感じるかどうかは個人差があるから、実際の例を出してる
スカスカに思うかどうかは実物を見た人が決めればいい

> そういうのじゃない表だってあるんですよ

それはあると思うが、>>13 の帳票が...

> 計測するパラメータが増えたり減ったりするんで表のレイアウトが変わるわけです。

とは全然違うことぐらいはわかるだろ?
また、どっちの帳票が世の中に多いかもわかるだろ?

あと、時系列で入力するってことは複数の行を扱うんだろ?
>>67 にも書いたけどそう言う奴は普通 VBA のループで処理するから、元々絶対アドレス云々の話じゃないと思うんだが
71デフォルトの名無しさん
2015/07/09(木) 00:51:54.46ID:FZuq59n/
>>70
>これには事実しか書いてない

それ以前の前提条件として絶対アドレスを取得する必要があるかどうか
絶対アドレスでの指定が有効かどうか
といった論点が抜けてますよ。
あとわたしがスカスカに対比して問題にしてるのは
つまり他の箇所を巻き込んで移動させる必要が
生じるかどうかを区別していってるのであって
見た目がどうこうの問題ではありません。
複数個所を同時に変更するかどうかです
さすがにそのぐらいは前後の文脈から汲み取っていただかないと困ります。

どうにもご自分の土俵のみで話を進めようとしてらっしゃるようですが
どちらが多いかはともかくとして
(実際のところ世の中に技術系の業種とそうでない業種がどれぐらいの割合で存在してるかなんて知りません)
それにしたって>>36でいわれるような「滅多にないケース」というほどではないでしょうから
それについての言及はあってしかるべきです。

念のため指摘しておきますが
パラメータの増減は列方向ですしループ云々とは関係ないですよ
72デフォルトの名無しさん
2015/07/09(木) 08:21:56.29ID:n0IdOdTN
>>71
> それ以前の前提条件として絶対アドレスを取得する必要があるかどうか

だから相対の方が可読性が高いと言うなら、実例と根拠を出せばいいだけのこと

> 複数個所を同時に変更するかどうかです

個々の項目の細かい位置調整っ言うのは珍しくないよ

> どうにもご自分の土俵のみで話を進めようとしてらっしゃるようですが

何回も書くけど、見積書等の帳票と君のところの Excel シートみたいなのどっちが多いと思う?

> どちらが多いかはともかくとして

重要だけど不利だからスルーするってこと? w

> (実際のところ世の中に技術系の業種とそうでない業種がどれぐらいの割合で存在してるかなんて知りません)

技術系の業種でも会社なら見積書とか納品書とかの帳票はあるんだよ

> それにしたって>>36でいわれるような「滅多にないケース」というほどではないでしょうから

そこまで言うなら、どれぐらいあるんだ?
根拠とともに示してくれよ

> 念のため指摘しておきますが
> パラメータの増減は列方向ですしループ云々とは関係ないですよ

いや、少なくとも行方向はループで処理するから元々絶対アドレスでは無理だろ
そう言う状況なら列側も相対にするのは珍しくない
ただし、今回の話とは状況が違うからあまり参考にならないって話
73デフォルトの名無しさん
2015/07/09(木) 08:53:31.52ID:FZuq59n/
>>72
>重要だけど不利だからスルーするってこと? w
>そこまで言うなら、どれぐらいあるんだ?
>根拠とともに示してくれよ

何でこっちにばかり立証責任があるんでしょうか?
あなたが具体的な根拠を示してくださいよ

データ処理系の表なんて日本中の研究機関その他で当たり前に動いてますんで
この辺はどっちが多いとか少ないとか証明するのは無理だと思います
ですので俺は遠慮しときます

>いや、少なくとも行方向はループで処理するから元々絶対アドレスでは無理だろ

データの頭にヘッダってのが付いてるときにループ開始行が変動するってのも割りとよくある話なんで
そこはやはりループ無関係ですよ
てかあなたこっち系の話知らないだけじゃないですか?

>ただし、今回の話とは状況が違うからあまり参考にならないって話

「今回の話」ってのを勝手に局限されても困るんですけど。
表の位置指定について話してたのに
その中で絶対アドレス指定が有利な状況ばかりに
限定して話を進めないでもらえますか?

それが多いとか少ないとかを論拠にするのは
あなたがきちんと証明してからにしてくださいね
74デフォルトの名無しさん
2015/07/09(木) 10:18:34.30ID:SLWTmnwe
>>69
> Word VBAで [Shift+Enter] を押したとき、「Chr(11)」が入るみたいだけど、これって何なんですか?

どこでShift+Enterを入力して、それがChr(11)だと確認した方法を教えて。
75デフォルトの名無しさん
2015/07/09(木) 13:00:12.23ID:n0IdOdTN
>>73
> あなたが具体的な根拠を示してくださいよ

書いてあるでしょ?

>> 基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利

> データ処理系の表なんて日本中の研究機関その他で当たり前に動いてますんで

うん、その研究機関とかが日本中の企業より多いといいね w

> この辺はどっちが多いとか少ないとか証明するのは無理だと思います

君には無理だろうから遠慮するのは正解

企業統計とか研究機関の数って公表されてて、ざっくり研究機関が 8,000件、会社は 280万社ぐらいと言うことぐらいは覚えていても損はないよ

> データの頭にヘッダってのが付いてるときにループ開始行が変動するってのも割りとよくある話なんで

で?
普通に組んでいたら開始行を変えるだけでしょ?

> そこはやはりループ無関係ですよ

まさかベタ書きしてるの? w

> 「今回の話」ってのを勝手に局限されても困るんですけど。

元々、>>13 の話
コメント見る限りは注文書の入力用シートの話であることぐらいは理解しようよ
76デフォルトの名無しさん
2015/07/09(木) 22:32:24.92ID:UwaB1poA
>>74
wordで文章の途中でShift+Enterを入力して、
文章を全部選択した状態で、
マクロで↓みたいなのやったら置換されました。

Sub ReplaceSample()

Selection.Text = Replace(Selection.Text, Chr(11), "改行")

End Sub
77デフォルトの名無しさん
2015/07/10(金) 22:10:41.04ID:dJeHHxuR
>>69
分かる人いないですか?
78デフォルトの名無しさん
2015/07/10(金) 22:14:19.91ID:I8IKrBJT
>>77
その文字がいらないんなら除去すれば?
79デフォルトの名無しさん
2015/07/11(土) 02:27:12.83ID:lfRSVC1W
>>77
>これって何なんですか?
WordでSHIFT+Enterを入力したときに入る文字です

>MSDNだと
そのページはVBAのページではありません
VBScriptで定数vbVerticalTabが使えないと言ってるだけです
80デフォルトの名無しさん
2015/07/11(土) 02:48:34.31ID:vE1M/d3c
>>79
VBAのページでも同じこと言ってるよ

https://msdn.microsoft.com/JA-JP/library/office/gg278800.aspx
81デフォルトの名無しさん
2015/07/11(土) 03:32:44.18ID:lfRSVC1W
>>80
英語のページだとNot usefulって書いてあるのか
使ってはいけないと言う意味での「使えません」じゃないって事だな
まあ、実際にWordで使ってるんなら使えばいいんじゃね
82デフォルトの名無しさん
2015/07/11(土) 07:20:42.92ID:SvdcMd32
>>69
なんなですか?
って言われても、VT のコードって言うしかない
そのコードをどのように解釈するかはアプリケーション次第
83デフォルトの名無しさん
2015/07/14(火) 15:37:53.39ID:8d4NQeRS
>>75
もうやめとけ。
そいつは長いコード書いちゃいけないって俺は言っただろ。
そのうち事故るよ。
84デフォルトの名無しさん
2015/07/14(火) 20:08:07.90ID:lKDNL4b3
>>81-82
んじゃあ「Chr(11)」はタブ文字 (縦)ってことで、それ以上でもそれ以下でもないということですね。
ありがとうございました。
85デフォルトの名無しさん
2015/07/27(月) 22:27:48.03ID:FZObgN+M
MSOfficeのパワーポイント2013のVBAについて、助言をお願いします。

現在、フォーマット修正用に、色々と文字列置換のVBAを作っています。

しかし、shape単位で置換を行うのですが、shape内のフォーマットが全て最初の文字のものになってしまいます。

ctrl+Hキーでできる置換のように、フォーマットを変えずに文字だけ置換する方法があれば教えて下さい。

よろしくお願いします。
8685
2015/07/29(水) 22:12:54.99ID:JQYDYy2G
すいません、勘違いがありました。問題なく出来ました。
87デフォルトの名無しさん
2015/08/04(火) 13:20:19.14ID:Xu3GeQZL
OWCのグラフで値が空のとこを非表示にするにはどうしたらいいですか?
88デフォルトの名無しさん
2015/08/18(火) 10:58:33.73ID:34FW6E1T
>>87
値が空のデータを削除したら?
89デフォルトの名無しさん
2015/08/18(火) 16:30:28.51ID:1oq6H4HA
PowerPointでpptxを開いてPDFで保存するvbscriptを
書いたんですが発行中ダイアログが出てしまいます。
これを出ないようにする方法はないでしょうか?
90デフォルトの名無しさん
2015/08/19(水) 17:21:07.83ID:leFwNaH1
>>89
ここVBAのスレ・・・
91デフォルトの名無しさん
2015/08/19(水) 21:37:19.12ID:ojYTqzwH
VBScript≠VBA
92デフォルトの名無しさん
2015/08/22(土) 05:31:09.55ID:dBcaDCdy
VBScriptのスレって池沼みたいな変なコテハンがいて関わりたくないのよね
93デフォルトの名無しさん
2015/08/30(日) 22:49:46.81ID:PtUjiQ8D
>>89
試しにパワポにマクロでPDF出力を作ってみましたが
別に何も出ませんでしたよ?
Office2013ですけど。
94デフォルトの名無しさん
2015/09/03(木) 18:14:14.52ID:oCFXB/C6
>>93
このソースだと出てしまいます。何か違いますでしょうか?

Option Explicit

Dim inFilePath
inFilePath = Wscript.Arguments(0)

Dim outFilePath
outFilePath = Wscript.Arguments(1)

Dim objPowerPoint
Set objPowerPoint = CreateObject("PowerPoint.Application")

dim pre
set pre = objPowerPoint.Presentations.Open(inFilePath, false, false, false)

dim wdFormatPDF
wdFormatPDF = 32
call pre.SaveAs(outFilePath, wdFormatPDF )

objPowerPoint.Quit()
Set objPowerPoint = Nothing
95デフォルトの名無しさん
2015/09/03(木) 20:46:42.16ID:Hlg8Zb4Z
>>94
どうもです
こちらへ誘導したExcel総合相談所 119の171です
私パワポ持ってないんで確認できないんですけど、組み込み定数の違いってなにか関係ないですかね?

■[Tips]PowerPoint 2010 のPDF変換機能を利用して、Powerpointを起動せずにPDFに変換するVBSスクリプト
http://d.hatena.ne.jp/nagasama/20110310/1299772579

をみると
パワポのファイルフォーマットでPDFをあらわすのは"ppSaveAsPDF"(=32)で、
貴方のコード中の"wdFormatPDF"(=17)はワードのファイルフォーマットでPDFをあらわすものみたいですよ

参考までにマイクロソフトのリファレンスもどうぞ

PpSaveAsFileType 列挙 (PowerPoint)
https://msdn.microsoft.com/ja-jp/library/office/Ff746500.aspx

Wdsaveformat クラスの列挙 (Word)(機械翻訳)
https://msdn.microsoft.com/ja-jp/library/office/Ff839952.aspx

ぜんぜん見当違いだったらごめんなさい
9695
2015/09/04(金) 09:05:49.13ID:RG/2/qam
>>94
よくみたら組み込み定数じゃなくて変数で宣言してましたね
見当違い以前のはなしでした
本当にごめんなさい
97デフォルトの名無しさん
2015/09/05(土) 19:56:12.09ID:852S1qdl
>>94
93ですけど、そのソースをコピペしてコマンドプロンプトから
実行してみましたが、家の環境(Win10)では普通にPDFできますよ?
ダイアログも出ませんでしたよ。
実行した時はスライド1枚の軽いPPTでやったのですが、
94さんは、もしかしたら結構スライド数多いPPTだから出るんですかね?
98デフォルトの名無しさん
2015/09/05(土) 20:01:53.43ID:852S1qdl
出てるダイアログが再現できないので、わからないのだけれども
↓のプロパティでどうにもならないんだとしたら、諦めるしかないのかも。
Application.DisplayAlerts
https://msdn.microsoft.com/ja-jp/library/office/ff746503(v=office.15).aspx
99デフォルトの名無しさん
2015/09/07(月) 12:54:20.03ID:NloI4YQK
>>97
スライド数は20くらいでしょうか。
>>98
試してみましたが残念ながら出てしまいました。
困りました。
100デフォルトの名無しさん
2015/09/08(火) 02:01:39.32ID:m7aBfM8f
Windows10でie操作のマクロって動くのですか?
edgeは互換性あるわけでは無いですよね。
別にインストールするのですしょうか。

これでクリエイトするオブジェクトです。
CreateObject("InternetExplorer.Application")
101デフォルトの名無しさん
2015/09/08(火) 12:06:16.04ID:9vjtcLlt
Windows10でもieは入っているようです
http://simply-assi.com/windows10ie/

なら 操作は可能でないかな?

Windows10持ってるなら テストしてみるべし
自分は Win8.1だから無理だけど
102デフォルトの名無しさん
2015/09/08(火) 14:37:39.47ID:m7aBfM8f
>>101
自分も実機がないのよね。
ieが残ってるいうのは聞いてるんだけど、7や8からのアップデートでも、10のクリーンインストールでも何の設定もしないでも動くのかなと。
テストしてる人とかいないかな?
103デフォルトの名無しさん
2015/09/12(土) 05:23:11.91ID:dQMUA4G2
仮想用に買った10のUSBが今日届くから環境作り次第ObjIE試してみますん
104デフォルトの名無しさん
2015/10/07(水) 06:57:36.90ID:qdqRCjiZ
受ける会社大丈夫?
下記の条件が全て当てはまる会社にご注意下さい。

・IT系 in tokyo
・「社名 労基」でググると過去の2chスレが出てくる
・転職会議で2.5点
105デフォルトの名無しさん
2015/10/12(月) 22:50:34.44ID:Xy8ebFp6
今、こんなグラフがあるんですが、
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚

これを↓のようにするにはどのようにしたらいいんでしょうか?
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚
106デフォルトの名無しさん
2015/10/12(月) 23:30:39.75ID:DYP6asIc
>>105
何がしたいの?
回転させたいの?
107デフォルトの名無しさん
2015/10/12(月) 23:35:13.73ID:oCa7NkmO
>>105
もう既に出来ているんじゃないか?
108デフォルトの名無しさん
2015/10/12(月) 23:36:26.71ID:Xy8ebFp6
>>106
縦軸と横軸を入れ替えたいのです。
画像として90度回転させたいわけではないのです。
109デフォルトの名無しさん
2015/10/12(月) 23:40:07.79ID:Xy8ebFp6
>>107
>>105は1枚めの画像を左に90度回転させ2枚めの画像としています。
現在、エクセルで1枚目のようなグラフがあるのですが、
縦軸と横軸を入れ替えたような(2枚目画像のような)グラフをエクセルで作りたいのです。
自分なりにいろいろ試したのですができませんでした。
110デフォルトの名無しさん
2015/10/12(月) 23:41:53.96ID:oCa7NkmO
>>108
入れ替えたグラフを既に作っているじゃないですか?それで完成しているのでは?
111デフォルトの名無しさん
2015/10/13(火) 00:02:52.88ID:X9js2iKE
>>110
ああ、ごめんなさい。
>>105の2枚目の画像は1枚目の画像を画像ビューワーソフトで左回転させたものなんです。
2枚目のようなグラフをエクセルで作成したいんです。
(今は1枚目のようなグラフをエクセルで作った段階です)
112デフォルトの名無しさん
2015/10/13(火) 15:10:52.88ID:v0mnZW8d
>>111
私も、できてると思うんですが?
113105
2015/10/13(火) 18:10:14.52ID:X9js2iKE
改めて質問させてください。

エクセルで↓のようなグラフがあります。
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚

このグラフの縦軸と横軸を入れ替えたグラフを(エクセルで)作成したいのですがやり方がわかりません。
作成したいグラフのイメージは↓のようなものです(この画像は画像ビューワーで作成したものです)
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚

わかりづらくてすみません。
114デフォルトの名無しさん
2015/10/13(火) 18:27:38.73ID:jBFoqp2r
>>113
Excel グラフ 回転
でググるとやり方でてくるけど、これじゃ駄目?
115105
2015/10/13(火) 21:52:53.15ID:X9js2iKE
>>114
今エクセルを試せる環境ではないので検索してみた結果を眺めたところ、
線グラフや面グラフの縦軸と横軸の反転は非常に難しそうな印象を受けました。
難しいというか無理やりというか。
そこまでの労力をかけないと望む結果が得られないということはなんとなくわかりました。
そうであるならば現状を受け入れるしかないのかと思っております。
今回は諦めます。ありがとうございました。
116デフォルトの名無しさん
2015/10/13(火) 22:05:15.03ID:v0mnZW8d
>>115
散布図でやってみるとか?
117デフォルトの名無しさん
2015/10/13(火) 23:07:15.46ID:/7qkRhU+
>>113
Excelの質問かよ…
じゃあなんでExcelの質問スレじゃなくてここで質問するんだ
後出し条件出してくんなカス
118デフォルトの名無しさん
2015/10/14(水) 00:34:55.63ID:psNeOyD5
>>117
あ〜〜VBA質問スレか・・・
すいません誤爆というかなんというか全く気づかず・・・
119デフォルトの名無しさん
2015/10/27(火) 14:53:17.89ID:EXphczgr
某サイトへのアクセスを1日1回、定時に行うためにIE操作を行うマクロを作っています。
必要な情報を取得した最後にそのサイトをログアウトしてIEを閉じたいのですが、ログアウトをしたときにJavascriptから?のログアウトしましたとの情報メッセージが表示されます。
ググッて調べたところ、以下の様な感じで閉じられるとあったのですが、SendMessageだけがうまくいきません。
ハンドルの値は入っています。
IE11を使っていますが、仕様が変わったのでしょうか?(Windows Updateでの最新)

このメッセージを閉じないとその後の閉じるためのVBAは進んでいるものの、実際の動作をしてくれなくて困っています。
(手動でメッセージを閉じたらその後のIEを閉じる操作が終わった状態にまで一気に進む)

わかる方いましたら教えて下さい。


Const WM_COMMAND As Long = &H111

hWnd = FindWindow("#32770", "Web ページからのメッセージ")

If hWnd <> 0 Then
Rtn = SendMessage(hWnd, WM_COMMAND, vbOK, 0)
End If
120デフォルトの名無しさん
2015/10/28(水) 14:22:04.16ID:Dygk5TrA
>>119
ハンドル違うんじゃね?
121119
2015/10/29(木) 03:59:21.10ID:l3n8K/Sw
>>120
値は取得できてます。
これが本当にメッセージのハンドルなのか調べ方を知らないので合ってるかは分かりません。
FindWindowも間違ってないと思うのですが、こちらも調べてみます。
122デフォルトの名無しさん
2015/10/29(木) 21:40:45.69ID:Q2L1bFVS
WM_COMMANDの右2つの引数の指定の仕方が間違ってるのと
有効なウィンドウハンドルかどうかはIsWindowで取得できる
123119
2015/10/30(金) 00:47:33.04ID:ZHFQ9n4z
Rtn = SendMessage(hWnd, WM_COMMAND, 2, 0)

でうまく閉じてくれました。

>>122さんレスありがとうございます。
124デフォルトの名無しさん
2015/11/03(火) 17:46:00.00ID:fVYiq8DO
質問が2つあります(長文すみませんm(_ _)m

○1点目:vbaを用いた自動化でdiv要素だけのボタンを押す方法
作業->ウェブのあるサービスにログインし、一定の操作をしてからログアウトする
問題->idとpassの入力はできたが、ボタンが押せない

構造的には下記アドレスのログインフォームと似ていて
http://codepen.io/andrejmlinarevic/full/NGGdVv/
上記例の<button class="btn">Login</button>のような
button要素がなく、div要素のみで設計されています

javascript関係かと思い.fireEventや.Script.setTimeoutを調べてみたのですが
div要素には実行されるjavascriptやそのfunctionなどは何も無く、class名だけ書かれています

○2点目:ieオブジェクトのdocumentがローカルウインドウから参照出来ない
上の質問と関係し、ieオブジェクトのdocumentの中身を見ようとしたのですが
document以下が<変数なし>となっており参照出来ません
調べるとskydriveのadd-onを入れる、shellから持ってくる等情報がありますが、いずれでも解決出来ませんでした
なお<変数なし>とは出ていますが、debug.print ie.document.titleなどとすると中身は出力されます

環境
Windows8.1 pro 64bit
excel 2013 32bit:参照設定MS Internet Controls/MS HTML Object Library/OLE Automation
         Visual Basic For Applications/ MS Excel 15.0 Object Library/ MS office 15.0 Object Library
ie 11 64bit(32bitでも変わらず)
125デフォルトの名無しさん
2015/11/03(火) 19:21:14.85ID:elW9O1dh
パワポでソフトトーク使いたいんだけど『開発』タブ出すところまではできてもVBAでマクロを記述〜っていうのができない。インポートするファイルの在り処か作成法を情弱にも理解できるように教えてほしい…
126デフォルトの名無しさん
2015/11/03(火) 19:22:51.42ID:elW9O1dh
参考にしてるのはこれ。
パワポも2ちゃんも初心者でごめんなさい…
http://needtec.exblog.jp/18919344/
127デフォルトの名無しさん
2015/11/03(火) 19:41:17.58ID:fVYiq8DO
>>125
Alt + F11
128デフォルトの名無しさん
2015/11/04(水) 15:38:11.36ID:DjYXAcy0
127
Visual Basicのウィンドウは出てきたしテキストもコピペしたけど
wavが自分のファイルに保存されない。
マクロ実行しても何も起こらずウィンドウが閉じるだけ。パワポのファイルにも音源は見当たらない。
129デフォルトの名無しさん
2015/11/04(水) 15:56:19.21ID:Y61Iie1f
>>124
1点目はソースがないとなんとも。

2点目はHTMLDocumentあたりで定義したオブジェクト(変数?)にSetしてやれば参照できるよ。
理由はしらんがie.Documentみたいなままだと参照できない。
130デフォルトの名無しさん
2015/11/04(水) 21:25:56.71ID:NpxeN+NQ
>>128
何をしてどうなったのか具体的に書いてもらわないとわかりません
パワポにマクロを組み込んで、softTalkのパスを指定して
スライドのノートに文章を書いて、マクロ実行、までは出来たという理解でOK?
131デフォルトの名無しさん
2015/11/04(水) 21:55:38.97ID:NpxeN+NQ
>>129
レスありがとうございます
2点目はアドバイスの通り、set objDoc = objIe.Document.allとかしたら中身読めました。ありがとうございます!

1点目は情報少なくて申し訳ないです
業務用なので詳細は一部フェイク入れますが、htmlにはinputタグがあるだけで
<input id="id" class="input-text" type="text" ime-mode="disabled"></input>
はあるのですが、idとpassを入れた後に押すボタンが
<div class="btn-control-outer">
<div class="btn-control-inner">
<div class="btn-control-message">OK</div>
</div></div>
というタグだけで作られています
(なおこのタグはjsで動的に作られているようで、IEの要素チェックで確認したものをコピペしています。ソースだとこのタグがありません)
リンク要素のように.clickが出来るものがなく、setTimeOutするにも、タグの中にjavascript:alert();のような記述も見当たりません

トップページのソースでjsを外部参照していたので、改行がないjs(minify化?)ファイルを読み解いていますが
上のdivタグとどうに関係しているのかわからず詰まっている状態です。
132デフォルトの名無しさん
2015/11/05(木) 10:30:26.20ID:HwmEl5Ub
>>131

div ボタンでぐぐったらこんなサイトがあって
http://lilia-study.com/web/jquery/sample/div-button.html
ここのサンプルが言っているdivのみのボタンかと思う。
http://lilia-study.com/jquery-sample/sample1/sample.html

For Each tag In ie.Document.getElementsByTagName("div")

Next
133デフォルトの名無しさん
2015/11/05(木) 10:32:32.99ID:HwmEl5Ub
途中だった

For Each tag In ie.Document.getElementsByTagName("div")
if tag.ID = "aaa" Then
tag.Click
end if
Next

でクリックできた。
そちらのサイトでも動くんでないか?
134デフォルトの名無しさん
2015/11/05(木) 21:56:35.78ID:CDrat58l
パワーポイントで、すべてのシートについて青い文字だけを黒い文字に変換するようなマクロを
作っていただけないでしょうか。
135デフォルトの名無しさん
2015/11/05(木) 23:31:33.31ID:5frd9spB
>>132
アドバイスいただいた方法で出来ました!
div要素をclick出来るとは思っておりませんでした。
本当にありがとうございます。

その後の処理も上で>>119さんのやりとりから調べて目的とする動作が出来ました
合わせて感謝します。
136デフォルトの名無しさん
2015/11/05(木) 23:51:53.10ID:HwmEl5Ub
>>135
こちらもdivがボタンにできるのを初めて知ったので勉強になったよ。
ちなみに119もオレw
137124
2015/11/06(金) 07:09:49.59ID:I5IXDGW5
!Σ(・ω・ノ)ノ
お礼伝わり良かったですw
138デフォルトの名無しさん
2015/11/08(日) 22:46:51.63ID:yp780VFR
access2013でフォームからの入力期間の金額を集計してレポート作成をしようとしています。
vbaでレポートボタンを押下した動作と同じコードは存在しますでしょうか。
139デフォルトの名無しさん
2015/11/09(月) 00:38:10.22ID:lpQ26d6h
レポートボタンってのが何の事かわからんが DoCmd.OpenReport使えとかそういう事か?

とりあえずACCESS VBAはそれ用のスレがあるからそっちで聞け
140デフォルトの名無しさん
2015/11/09(月) 02:05:47.54ID:rGXYqJ1u
>>134
すべてのシートの、
すべてのテキストの文字色を、一つずつ調べていき、
(または、1文字ずつ調べながら、)

もしそれが青なら、黒に変更する
141デフォルトの名無しさん
2016/02/17(水) 15:13:29.51ID:cyifogYg
パワポのVBAでお願いします。
ファイル→情報→メディアの圧縮
わVBAからやりたいのですがどのオブジェクトのどのメソッドからやればいいのかわかる方いたら教えて下さい。

音声ファイルの圧縮がやりたいのです。
142デフォルトの名無しさん
2016/02/24(水) 21:04:30.98ID:faCUrUaa
141507
140712
140715
141512
141207
141215
140708
140709
141508
140807
140703
141509
140815
141503
141208
140907
140315
141209
140915
141203

競馬の三連単の買い目がこのようにある時、マークシート記入枚数を減らすために
14-7,12,15-3,7,8,9,12,15
14-8,9-7,15
140315
とまとめたいのですが、どのように処理すればよいでしょうか?
いずれは金額も考慮したいと考えていますが、現段階では難易度を下げるために同一金額としてください。
同じ理由でここでは頭を固定で例を作成させていただきました。

よろしくお願いします。
143デフォルトの名無しさん
2016/02/24(水) 22:34:57.70ID:7wWguvAi
>>142
VBA関係ないじゃん
書き込むスレ間違ってるよ
144デフォルトの名無しさん
2016/02/24(水) 22:39:06.06ID:faCUrUaa
>>143
他にそれらしいスレがみつからなかったことと、この買い目を出す処理をVBAで行っているのでここで聞いたのですが
適切なスレがありましたら移動しますので、誘導願います
145デフォルトの名無しさん
2016/02/24(水) 23:05:03.48ID:7wWguvAi
>>144
ごめん、>>1 読む限りだとこのスレで問題なさそうね…
すまんかった
146デフォルトの名無しさん
2016/02/24(水) 23:07:19.07ID:gEXn5/E8
でもEXCEL VBAに行ったほういい気がする
どうせEXCELだろ
147デフォルトの名無しさん
2016/02/25(木) 00:31:32.38ID:lxjkiQUf
>>142
そういうのはアルゴリズム系スレの方が受けがいいかと
あんま言語関係ないし
データ構造,アルゴリズム,デザインパターン総合スレ 2
http://peace.2ch.net/test/read.cgi/tech/1362301811/
148142
2016/02/27(土) 08:28:02.19ID:SRIIhbK2
>>147
了解
149デフォルトの名無しさん
2016/03/07(月) 19:56:57.79ID:IDkrJnKk
ミリ秒より短い時間の計測ってどうやるの?
150デフォルトの名無しさん
2016/03/07(月) 20:49:02.27ID:UbdDFkp+
>>149
何を計測したいの?
151デフォルトの名無しさん
2016/03/09(水) 17:27:24.27ID:ISN2ur/+
というかVBA マイクロ秒でぐぐったりしたの?
152デフォルトの名無しさん
2016/03/18(金) 00:50:59.88ID:QavJ4QpP
EXCELのVBAでインデントされたとりあえず下のようなXMLを作成したく
http://blogs.yahoo.co.jp/ke1_thanks/folder/929993.html?m=lc
を参考に作成してるのですが、うまく孫要素が作成できません。
どうすれば孫要素が作成できるのでしょうか。ご教示お願いします。
また何と調べればいいのかを教えていただければ幸いです。

環境 windows7  64bit と32bit両方
 Excel 2010 64bit と32bit 両方

作成したいXML(括弧は半角だとうまく書き込めないみたいなので全角にしてます)


<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<ROOT>
<TITTLE>DQ5</TITTLE>
<CHARACTER>
<PERSON>
<NAME>パパス</NAME>
<HOBBY>女装</HOBBY>
<COMMENT>ぬわーーっっ!!</COMMENT>
</PERSON>
<PERSON>
<NAME>ゲマ</NAME>
<HOBBY>メラミ</HOBBY>
<COMMENT>ほっほっほっほっ。子を思う親の気持ちは いつみても いいものですね。</COMMENT>

</PERSON>
</CHARACTER>
</ROOT>
153デフォルトの名無しさん
2016/03/18(金) 01:48:30.33ID:emFx7ejn
>>152
vba xml 生成 とかでググるといくらでもやり方はヒットすると思うけど
具体的にどんなコードのどこで行き詰まってるのか書いてくれないとアドバイスしようがない
154デフォルトの名無しさん
2016/03/18(金) 11:47:02.11ID:QavJ4QpP
<CHARACTER>が</CHARACTER>で作成されてしまい、閉じてくれません。また<PERSON>などが孫要素になってくれません。
コードはこんな感じです。
http://pastebin.com/CVVKVnYF


作成されるXMLは↓です。
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<ROOT>
<TITTLE>DQ5</TITTLE>
<CHARACTER/>
<PERSON/>
<NAME>パパス</NAME>
<HOBBY>女装</HOBBY>
<COMMENT>ぬわーーっっ!!</COMMENT>
<PERSON/>
<NAME>ゲマ</NAME>
<HOBBY>メラミ</HOBBY>
<COMMENT>ほっほっほっほっ。子を思う親の気持ちは いつみても いいものですね。</COMMENT>
</ROOT>
155デフォルトの名無しさん
2016/03/18(金) 21:10:32.76ID:Sdu3bujA
>>154
> 'ノードとして子ども・孫の要素を追加
>Set elem2 = rootelem.appendChild(myxml.createElement("CHARACTER"))
> Set elem2 = rootelem.appendChild(myxml.createElement("PERSON"))

> 'ノードとしてひ孫の要素を追加
>Set node = rootelem.appendChild(myxml.createNode("element", "NAME", ""))
> node.Text = "パパス"

rootelemにしか子供追加してないから、孫、ひ孫が生成されないのは当然な気がする
追加した子要素に子供を追加してやらなくちゃ…
試してないけどこんな感じ?

'ノードとして子ども・孫の要素を追加
Set elem2 = rootelem.appendChild(myxml.createElement("CHARACTER"))
Set elem2 = elem2.appendChild(myxml.createElement("PERSON"))

'ノードとしてひ孫の要素を追加
Set node = elem2.appendChild(myxml.createNode("element", "NAME", ""))
node.Text = "パパス"
156デフォルトの名無しさん
2016/03/19(土) 11:15:23.76ID:LxdobWB2
ThisWorkbook.Save
で「指定したディメンションは、このグラフの種類では無効です。」のエラー発生。
エラーが出るときと出ないときがある。

VBAでグラフを操作している部分もあるが、それとは無関係と思われるSaveでこのエラーに戸惑っています。

↓このサイトで、SaveAsで存在しないパスを指定し同様のエラーが出た事例は見つかりましたが私はパス指定していません。
http://yaplog.jp/purplish-blog/archive/1838

エラー回避する方法を教えて下さい。
157156
2016/03/19(土) 11:26:07.75ID:LxdobWB2
>>156はエクセルの話です
win7, office2010
158デフォルトの名無しさん
2016/03/20(日) 06:56:26.93ID:XolQD74Z
どなたか>>156わかりませんか?
159デフォルトの名無しさん
2016/03/20(日) 07:11:36.75ID:P5LbtOo8
VBA内でセル指定をするときにシート名を明記しないと
そのセルがアクティブシートのセルになってしまってエラーが出ることがあるけど

VBAでグラフを作成するプログラムを作成していますが、エラーがでます。エラーの... - Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1486687089

ぷぎえもん日記 VBA:実行時エラー1004グラフを作る時のエラーについて
http://pugiemonn.blog6.fc2.com/?m&;no=985

その辺は大丈夫?
160デフォルトの名無しさん
2016/03/20(日) 14:30:13.47ID:U/mbzow+
>>155
うまく行き作りたいものが作れました。ありがとうございます。
161デフォルトの名無しさん
2016/03/21(月) 00:33:38.32ID:RmxeJW4x
>>159
レスありがとうございます。
今出先なので明日帰宅してから確認してみます。
162デフォルトの名無しさん
2016/03/21(月) 00:35:10.70ID:RmxeJW4x
あ、書き込めた。規制かかっててレスできず申し訳ないです。
163デフォルトの名無しさん
2016/03/24(木) 09:23:12.55ID:Y45L/A5m
既存のブックに入れているマクロは正常動作しているんだけど、2,3日以前から作った
ブックは
オートメーションエラーです。
例外が発生しました。

ってエラーですぐ落ちてしまうんだけど、これって何が原因なんですかね。
(OS Win7Home excel2010)

なんせ、
Sub test()
MsgBox "test"
End Sub
ってだけのでも同じエラーで落ちてしまうんで┐(´∀`)┌
ちなみにウィルス対策はAVGでチェックかけて異常なしではありました

VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚
164デフォルトの名無しさん
2016/03/24(木) 12:50:23.33ID:FJvNCHp3
>>156
「vba 指定したディメンションは、このグラフの種類では無効です。」で検索!

>>163
「vba オートメーションエラー」で検索!
165デフォルトの名無しさん
2016/04/09(土) 01:33:44.74ID:8VJ1WNjN
Declare 文でDllを指定するとき、絶対パスを指定するのとしないので挙動が変わるなんてことありますかね?

パスの通ったフォルダにDllを置きDeclare文にはパスを書かない、という状態で何度テストしても失敗する(結果がおかしい)ので、
もしやと思って絶対パスを指定してみたら成功しました。何度やっても同じです。

念のため他のフォルダに同名のDllがないか確認しましたが、そんなものはありませんでした。

Window7、Excel2010(64bit)です。
166kio
2016/04/09(土) 09:27:26.96ID:OaMx2gZN
下記プログラムでデータ貼り付け可能ですが、
Range(
167デフォルトの名無しさん
2016/04/09(土) 10:55:02.62ID:uD9Ltjj7
>>165
なんで大事な部分を書かずに濁すの?
168デフォルトの名無しさん
2016/04/09(土) 11:27:25.80ID:mXQNErhc
>>167
大事な部分って?
169デフォルトの名無しさん
2016/04/09(土) 11:49:50.63ID:8+AE4+J9
コードじゃね?
170デフォルトの名無しさん
2016/04/09(土) 12:00:42.12ID:YC7vrxdl
どんな dll 使って、
どう失敗するのか

とかじゃね?
171デフォルトの名無しさん
2016/04/09(土) 12:35:11.85ID:lZD29UWG
性別と容姿じゃね?
172デフォルトの名無しさん
2016/04/09(土) 15:25:31.33ID:8VJ1WNjN
>>167-170

DLLはこんな感じで
Declare PtrSafe Function funcABC Lib "ABC.dll" (ByVal n As Long, ByRef v As Variant) As Long

本来1が返ってくるべきところに0が返ってくるんです。
だけど、〜 Lib "C:\tmp\ABC.dll" 〜 とすると、ちゃんと1が返ってくる。

どちらの場合もDLL名を変えると「ファイルが見つかりません」という実行時エラーになるので、同じDLLファイルを
指しいてるのは間違いないと思います。
173デフォルトの名無しさん
2016/04/09(土) 16:35:57.82ID:kbPPFUQM
>>172
そんなの "ABC.dll" の作り次第だろ
作者に聞けよ
dll のパス取得して何かしてるのかもしれないし
http://frog.raindrop.jp/knowledge/archives/000316.html
174デフォルトの名無しさん
2016/04/09(土) 16:55:41.43ID:DA1syyI4
>念のため他のフォルダに同名のDllがないか確認しましたが、そんなものはありませんでした。
限りなくこれが怪しいと思うんだが
175デフォルトの名無しさん
2016/04/09(土) 16:57:28.60ID:XGWfr4Pw
>>165
同名のdllが無いことをどうやって確認した?
176デフォルトの名無しさん
2016/04/09(土) 18:20:08.40ID:uD9Ltjj7
>>165
挙動が変わることはあります。
おわり
177デフォルトの名無しさん
2016/04/09(土) 18:32:34.00ID:8VJ1WNjN
>>175
パスが通っている全フォルダとカレントフォルダからの目視です。

環境変数(PATH)をまず確認して、
kernel32.dllにあるAPI 「GetEnvironmentVariableA」 に引数"PATH"を渡して出てきたフォルダを対象にしました。

問題のfuncABC も GetEnvironmentVariableA も同じVBAから発行しています。
178デフォルトの名無しさん
2016/04/09(土) 18:41:03.58ID:DA1syyI4
カレントフォルダをどうやって確認したかとか
システムディレクトリにdllがないかとか

まあ、確認漏れ自体はいっぱいありそうだな
179デフォルトの名無しさん
2016/04/09(土) 18:46:44.36ID:8VJ1WNjN
>>178
C:\windowsやC:\Program Files、C:\Program Files (x86)は入ってますよ。
目視も検索フィルタにとりあえず *.dll で全DLLを出してからやっています。

>>176
マジですか...
180デフォルトの名無しさん
2016/04/09(土) 19:45:00.69ID:mXQNErhc
>>179
本当にひとつしかないならあり得ない挙動だと思うけど。
dllの内容を明かしてみな。
181デフォルトの名無しさん
2016/04/09(土) 19:57:07.07ID:zSVIlalC
Windows が使用する DLL 検索パス

1.実行中のプロセスの実行形式モジュールがあるフォルダー。
2.現在のフォルダー。
3.Windows システム フォルダー。このフォルダーへのパスは、GetSystemDirectory 関数が取得します。
4.Windows ディレクトリ。このフォルダーへのパスは、GetWindowsDirectory 関数が取得します。
5.環境変数 PATH 内に記述されたフォルダー。

https://msdn.microsoft.com/ja-jp/library/7d83bc18.aspx
182デフォルトの名無しさん
2016/04/09(土) 20:29:56.83ID:XGWfr4Pw
>>177
ウインドウズの検索機能を使ってみたら?
183デフォルトの名無しさん
2016/04/09(土) 20:38:17.27ID:KOaWU5bX
何か仕事でもしながら、ディスク全部の範囲で、検索すればいい
184デフォルトの名無しさん
2016/04/09(土) 21:28:53.86ID:yIzAT5uL
windows なら黙って search everything 入れろ
考える余地なし
185デフォルトの名無しさん
2016/04/09(土) 21:30:12.16ID:yIzAT5uL
あ、業務用のマシンだとマズいか
186デフォルトの名無しさん
2016/04/09(土) 21:43:59.08ID:YC7vrxdl
>>179
> 目視も検索フィルタにとりあえず *.dll で全DLLを出してからやっています。
プログラマーに向いてないんじゃね?
コマンドプロンプトで
dir /s /b \ABC.dll
ってやればいいだけだろ
187デフォルトの名無しさん
2016/04/09(土) 23:15:48.61ID:8VJ1WNjN
>>180
ODBCのコネクションを張る関数で、特に自分の場所が関係する処理はしてないですね。

>>181-186
全ドライブを検索した結果(search everythingは入れてませんが dir/s はやってみた)
C:\Users\*****\Google ドライブ\
に見つかりました。
しかし、これを消しても現象は変わらなかった(もともと参照パスに入ってない)ので、諦めの気分です。
188デフォルトの名無しさん
2016/04/10(日) 00:12:20.49ID:TaPFtU7E
元々の質問は、挙動が変わることがあるか?で、
あるって回答で解決だと思うけど、どうしてもないってことにしたいの?
ゴールが見えないよ
189187
2016/04/10(日) 00:39:39.00ID:9vV3r8su
>>188
あるって回答(>>176)もあり、ないって回答(>>180)もありで、判断がつかない状況です。
190187
2016/04/10(日) 00:47:04.09ID:9vV3r8su
それと、>>173>>176もいまいち理解できておりません。
「dllのパスを取得」とは、実際の存在はひとつでもDeclare文での指定のしかたまでも検知できるんでしょうか?
191デフォルトの名無しさん
2016/04/10(日) 01:04:43.27ID:9zYVMe1H
まさか、パス・ユーザー名など、システムに関係する部分に、
日本語を使ってないだろうな?

それで、バグってるとか?
192187
2016/04/10(日) 01:08:14.87ID:9vV3r8su
>>191
ないですね
193デフォルトの名無しさん
2016/04/10(日) 01:14:27.05ID:9zYVMe1H
そのDLLの作者が外人で、DLL内で、パス・ユーザー名を扱っていた場合、

もしその中に日本語が入っていれば、バグるかも
194デフォルトの名無しさん
2016/04/10(日) 01:22:30.64ID:9zYVMe1H
>>187
>ODBCのコネクションを張る関数で

それなら、そのDBのメーカーが(ドライバーが)、絶対パスしか許可していないのかも。
相対パスの危険性も考慮して、そういうアクセス許可にしているのかも

絶対パスを使えばいい
195デフォルトの名無しさん
2016/04/10(日) 05:47:22.16ID:v52RcnsN
>>187
> 特に自分の場所が関係する処理はしてないですね。
ん?
自分で作った dll なの?
だったら自分でデバッグしなよ
196デフォルトの名無しさん
2016/04/10(日) 10:59:47.17ID:KR5BT3Be
全ドライブを検査してひとつしかdllファイルがなかったって言ってるんだろ。
それが本当なら何も対処できないよ。OSレベルの不具合。
197デフォルトの名無しさん
2016/04/10(日) 17:49:12.01ID:r0zhudqC
VBAをコーディングするのに最適な画面サイズとモニターの台数は何台ですか?
縦と横どっちでつかってすか?
4Kディスプレイはどうですか?
198デフォルトの名無しさん
2016/04/10(日) 18:54:26.34ID:oV0tVvW7
(´・ω・`)
199デフォルトの名無しさん
2016/04/10(日) 19:33:25.31ID:Y5yf6QHK
>>197
3台

4Kいいよ
200デフォルトの名無しさん
2016/04/27(水) 21:49:20.13ID:Wsz3hpAs
エクセルのVBA質問があります。
一番前のTOTALシートのA22:H26までを複数シート(20シートくらいある)の最終行の次の行に貼り付けたいのです。
各シートの最終行はバラバラで多いのは数千とあります。
しかも、G列には\と$の通貨マークH列には金額が書いてあり、SUMIFが組んであります。
記録マクロでやると下記みたいになりますが、こんなこと可能なのでしょうか?
調べても出てこないので誰か教えてください。

Sub Macro2()
Rows("24:28").Select
Selection.Copy
Sheets("A").Select
Rows("22:22").Select
Selection.Insert Shift:=xlDown
Range("H22").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=SUMIF(R9C7:R19C7,RC[-1],R9C8:R19C8)"
Range("H23").Select
End Sub
201デフォルトの名無しさん
2016/04/28(木) 00:18:56.90ID:Vq22azhO
>>200
可能です
202デフォルトの名無しさん
2016/04/28(木) 07:31:01.70ID:TNqjmghT
>>201
教えてください。
203デフォルトの名無しさん
2016/04/28(木) 08:26:47.90ID:RqXO/zBw
>>202
具体的にあなたが躓いているところがわかりません
204デフォルトの名無しさん
2016/04/28(木) 12:27:24.37ID:xB9gNSEq
>>203
具体的にあなたが何がわからないのかわかりません
205デフォルトの名無しさん
2016/04/28(木) 12:29:10.17ID:gq5pmM2C
>>200
For Eachで全シートループして、各シート最終行取得して貼り付ければ良いと思いますが、ダメですか?
206デフォルトの名無しさん
2016/04/28(木) 20:07:58.00ID:iqsXmWMg
>>200ですが、出直してきます。
207デフォルトの名無しさん
2016/05/01(日) 15:15:56.13ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
208デフォルトの名無しさん
2016/05/01(日) 23:24:37.04ID:u17iQe5m
EXCELのVBAでメール返信(OUTLOOK)をする仕組みを作りたいのですが、
元メールを引用するにはどうしたら良いでしょうか?
タイトルやらアドレスやら本文がくっついてないと、
どうも返信感がでないと思いまして。
209デフォルトの名無しさん
2016/05/03(火) 10:11:50.64ID:YSERRocv
>>208
Outlookヘルプから

次の例は、現在のフォルダを受信トレイに設定し、フォルダの 2 番目のメッセージを表示します。
Visual Basic for Applications
Set myOlApp = Outlook.Application
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
myFolder.Display
Set myItem = myFolder.Items(2)
myItem.Display
210デフォルトの名無しさん
2016/06/04(土) 14:31:26.42ID:ZLbjql14
Excel向けだとVBA関連の本は結構あるのにOutlookのVBA本って
あんまり無いですね。
Outlookの仕分け機能では宛先とCCに○○から来た時に動作する
条件を付けられますが、宛先○○から来た時には動作するけど
CCに何か入っていた場合は動作しないマクロは作れないでしょうか。
環境はWin7、Outlook2010です。
211デフォルトの名無しさん
2016/06/04(土) 17:57:25.97ID:+2vTx5YA
>>210
作れるよ
212デフォルトの名無しさん
2016/06/04(土) 17:59:26.06ID:+2vTx5YA
outlook vba mail
とかでググれ
213デフォルトの名無しさん
2016/06/04(土) 21:08:48.99ID:xa1tVlDu
>>210
多分こんな感じでできるかと

Public WithEvents InboxItems As Items
Private Sub Application_Startup()
Set InboxItems = Application.Session.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub InboxItems_ItemAdd(ByVal Item As Object)
Dim mailItem As Outlook.mailItem
Set mailItem = Item
If InStr(mailItem.To, "○○") > 0 And mailItem.CC = "" Then
MsgBox "何かする"
End If
End Sub
214デフォルトの名無しさん
2016/06/12(日) 09:42:53.63ID:D40PIOb3
               【Win10】    こんな犯罪級OS薦めんなよwww   ↓   【スパイウェア】



この使用許諾契約書には書かれています

”最後にあなたのコンテンツを含む個人データ(例えばあなたの電子メールの内容や―プライベート通信やプライベートフォルダ内のファイル)にアクセスし―開示し保全します”

開示する ここ重要だよ

契約がなければ通常 高度な違法行為になりうることです それはあなたが自分の意思としてこの契約書に同意したのです





       【秘密保護法】  ナチスの手口でサヨクを捕まるんだろ? 早くやってみろよ m9(^Д^)  【緊急事態法】



スノーデン氏→国家秘密法は諜報機関NSAの日本での活動を容易にするために米国が設計して日本政府に導入を要求したもの。
全日本人が調査の対象であり、NSAはあなたの交際関係、信仰等の個人情報を把握している。
https://twitter.com/hopi_domingo/status/740193540529999873
今朝、辺野古で新基地建設に反対するママの会メンバーに対して、機動隊員が「お前たちには汚い血が流れている」などと暴言を吐いたそうです。
自分のやっていることを「だってお金欲しいもん〜」「俺の写真を待ち受けにしろ」とも (顔写真)
https://twitter.com/MothersNoWar/status/690357793702940672
サンマ以降のバラエティ芸人の大半が、暴走族出身で極右思想。原発反対派を「放射脳」と嘲笑する連中。
芸能界極右は石原慎太郎一家を筆頭に、上田晋也 草野仁 津川雅彦 向井理 松本人志 宇多田ヒカル マツコ 春日俊彰 田村淳 北村晴雄
https://twitter.com/tokaia mada/status/630627400552845312
215デフォルトの名無しさん
2016/06/14(火) 02:34:53.84ID:2DTiTbF7
vbaでshell関数を使って指定パスのエクスプローラをファイル選択状態で開いてるのですが、
家でやると何でもないのですが、会社でやると、その方法で立ち上げたエクスプローラは
1分〜数分以内に「エクスプローラは停止しました」となって落ちます。そのフォルダだけ
落ちるので他のは巻き込まれないだけマシですが、手動で立ち上げた他のエクスプローラで
このように不意に落ちた事はないので、プログラムから立ち上げたエクスプローラが特別
不安定だとしか思えないのですが、原因が不明です。
それで、家と会社の違いは、会社だと共有フォルダを開いている事です。
家ではテスト環境をローカルで構成している為か、全く問題は起きません。

色々ぐぐってみたのですが原因が不明です。
vbaから開く方法で、解決策、あるいは次善の方法等ありますでしょうか。

shell関数はこのように使っております。
Shell "Explorer.exe /select, """ & path & """", vbNormalFocus

環境はWindows7 Excel2010(32bit)です。
216デフォルトの名無しさん
2016/06/14(火) 06:56:55.57ID:wwwgAdKU
>>215
試しに自宅の環境で共有フォルダをshell関数でファイル選択状態で開いてみたけど
特に問題なかったよ

原因は共有フォルダであること
ではないのじゃないかな

その共有フォルダへのショートカットを作って
それをshell関数を使ってexplorerで開いてみるとかは?
217デフォルトの名無しさん
2016/06/14(火) 08:10:13.51ID:BcKyLCvc
手動で起動したプロセスは、親プロセスが無く、単独のプロセスだから、ずっと生き残るのかな?

Aプログラム(Aプロセス)から起動したプロセスは、親プロセスがAとなり、
Aを終了すると、その子プロセスもすべて、連鎖して終了するのかな?

プロセスを起動する際、親子関係を切れば?
ただしそうすると、起動されたプロセスは、A終了後も残り続けるから、
誰がそのプロセスを終了するのかが、問題となる

漏れは、Windowsはよく知らない。Linuxから推測して書いた
218デフォルトの名無しさん
2016/06/14(火) 08:45:39.28ID:2DTiTbF7
>>216
ショートカットから開く方法ですか、考えもしなかったです。
確実に再現するバグではない(場合によっては20分くらい経ってからクラッシュしますし、端末によっては何も起きなかったりします。)
なので、原因を掴むのが難しいです。

>>217
なるほど、プロセスが分離されているから巻き込まれなかったんですかね。

前後のコードを見返しているのですが、shell関数を読んだ直後に
Kill thisworkbook.fullName
thisworkbook.close
を読んで終了させているんですが、ひょっとしたらこの兼ね合いが原因かも?とふと思いました。
shell関数は非同期処理で、会社の共有フォルダを開くときはローカルと違って若干起動に時間がかかります。
shell関数の処理が完了しきっていないのに即終了させるから、動作が不安定になってる可能性はありますかね・・。

なのでとりあえずShell関数を、Wscript.ShellのRunメソッドの同期処理に置換えてみました。
それで明日会社でテストしてみます。
219デフォルトの名無しさん
2016/06/15(水) 20:38:23.92ID:985LHqkd
それVBAとか関係なく、普通にネットワーク上のフォルダを表示してるエクスプローラでも発生してるんじゃないのか?
https://support.microsoft.com/ja-jp/kb/972685#/ja-jp/kb/972685
https://support.microsoft.com/ja-jp/kb/2494427#/ja-jp/kb/2494427
とりあえず俺はこの二つで直ったが、エクスプローラ 落ちる とかでググってみ
220218
2016/06/16(木) 07:48:37.40ID:MO4h1nff
>>219
同期処理に変えたら全く落ちなくなりました。
どうやら推測は当たったみたいです。

手動で立ちあげてる時には同じトラブルは一度も起こったこと無く、誰からも聞いていないので、
VBA処理が原因で間違いないと思います。

ぐぐっては見てたんですけど、VBA関連でのエラー報告は0でしたね。
しかし、元々この手のトラブル報告がかなり多いことにはびっくりしました。

とりあえずは解決です。皆さんどうも有難うございました。
221デフォルトの名無しさん
2016/06/16(木) 14:05:29.72ID:tOwQ8tvq
タイミングの問題で、バグが起きるときは、

sleep 3秒などで、時間稼ぎすることが多いな
222デフォルトの名無しさん
2016/06/16(木) 16:27:03.77ID:YtVxucfB
>>221
タイミングというか処理を待ち合わせる必要があるって事だよな
3秒で完了しない処理だと問題が起きる
90%くらい解決出来れば実用上は問題にならないかも知れないけど
223デフォルトの名無しさん
2016/06/16(木) 21:40:45.67ID:JOmdLZoV
' キャッシュ反映を待って5秒待つ

↑これなんとかして
224デフォルトの名無しさん
2016/06/16(木) 21:53:33.23ID:EpEOLr57
>>223
何のキャッシュか判らないけど
キャッシュをフラッシュするインターフェイスがあればそれを使えば良いのでは
無いなら知らない
225デフォルトの名無しさん
2016/06/17(金) 01:16:02.29ID:Sh+IdTol
起動方法と起動のタイミングの問題で
>1分〜数分以内に「エクスプローラは停止しました」
>場合によっては20分くらい経ってからクラッシュ
のような症状が出るとは考えにくいけどな

まあ、直ったって言うならそれでいいけど
226樵の結び目。
2016/09/03(土) 18:27:18.44ID:Ms7vNg4j
この作者について
http://img.atwikiimg.com/www9.atwiki.jp/gensouv/attach/346/23/ExcelVBAPractice.html
どう思いますか??
 
227デフォルトの名無しさん
2016/09/28(水) 19:27:48.59ID:BVBInYIb
vbaの And, Or って短絡評価してくれないの???
228デフォルトの名無しさん
2016/09/28(水) 20:30:34.84ID:X231kNmm
>>227
普通しない
(常にしないかどうかは知らんけど)
229デフォルトの名無しさん
2016/09/28(水) 22:20:25.14ID:w7cfX4QA
X(n) And Y(m) で X(n) = False だった場合、Y(m) は評価しなくても式が False と確定する
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で動いてしまってエラーになってはまったわ。
232デフォルトの名無しさん
2016/09/29(木) 12:46:05.66ID:tIM+raH6
VBAあるある
233デフォルトの名無しさん
2016/10/06(木) 19:51:33.65ID:prbbit7d
.NetならOrElseやAndAlsoが使えるし
Nullable指定も出来るから便利なんだけどなー

まあ無いものねだりしても始まらないか
234デフォルトの名無しさん
2016/10/08(土) 17:43:11.29ID:fiaM9vLl
VB(A)はWithとかある割にそういうとこは全然気が利かないよな
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 逆引き辞典パーフェクト 」は名著だよ
238デフォルトの名無しさん
2016/10/28(金) 04:23:54.86ID:s9odN72t
>>237
ありがとうございます。
クラスや多段階配列、イベント自作、擬似コントロール配列あたりの情報がある書籍はありませんか?
239デフォルトの名無しさん
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
249デフォルトの名無しさん
2017/02/07(火) 07:09:26.95ID:HIDKMkau
>>246
条件によるだろ
思いつきで即答すんなアホ
250デフォルトの名無しさん
2017/02/07(火) 07:27:10.54ID:ff698yUf
>>249
条件って
ファイル本体に埋め込みたい
ってことだろ
>>246 の保存場所がどこの事を言ってるのかよくわからんが >>245 より >>248 の方がはるかにマシ
251デフォルトの名無しさん
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:diTiDCUQ
>>254
> 変な場所に
透明のシェイプとかのことですね、わかります
256デフォルトの名無しさん
2017/02/13(月) 17:14:33.92ID:QPcPOced
50枚のスライドが入ったパワポが5個あります。
これを統合したいのですが
ファイル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:uIQboeV9
>>256
この作業用を何回も繰り返さないといけないの?
1度きりならあなたの場合は手作業の方が早い気が
262デフォルトの名無しさん
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(新規のファイル)
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
264デフォルトの名無しさん
2017/02/23(木) 14:40:32.47ID:bekNjoMq
>>263
再計算とイベントも停止してみた?
あと、コレクションに対するループの中で自分自身のコレクションが変化するのは、なんとなくまずい気がする
根拠はないけど、それって遅くなる要因と違う?
265デフォルトの名無しさん
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

じゃ駄目?
266デフォルトの名無しさん
2017/02/23(木) 15:08:21.72ID:Q2T7iSLN
選択されているセル範囲については最初のIf文でExit Subしてるから削除されないんじゃ?
処理がよく分からん。

選択されている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の前ね。
268デフォルトの名無しさん
2017/02/23(木) 15:24:01.29ID:5OVH7aZj
>>265
質問者じゃないけど変わって説明するよ
・シート上に文字と図形が複数箇所に設定されている
・消す範囲を選択して、その範囲内の文字と図形を消すコードを書いた
・でもなぜか遅い

質問者に言えるのは、
・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

じゃ駄目なの?
270デフォルトの名無しさん
2017/02/23(木) 16:07:14.86ID:xPy6pfR0
今までは長い時で1〜1.5秒程止まっていました
>>268さんの言われた通り、Selection.ClearContentsの位置を変えたらスムーズになりましたのでこれで行こうと思います
たくさんご意見頂きありがとうございました
271デフォルトの名無しさん
2017/02/23(木) 16:14:41.52ID:5OVH7aZj
>>269
> If TypeName(Selection) <> "Range" Then Exit Sub
だよ
272デフォルトの名無しさん
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\"の部分をフォルダ選択できるようにできるのでしょうか?ご教示お願い致します。
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"

じゃないかな?
あと
元コードもそうだけど
フォルダ内に その画像ファイルが存在してなかった時の対策も必要だと思うよ
同じエラーになるぞ それとも絶対 あるのが 確定してる?
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
276デフォルトの名無しさん
2017/02/26(日) 16:57:59.74ID:nMuhJunv
>>275
あっ!できました!ありがとうございます!助かりました!
277デフォルトの名無しさん
2017/03/06(月) 23:29:36.96ID:QCgyLcj6
こんにちは。

パワーポイント2013のVBAについて分かる方教えて下さい。

やりたいことは、グラデーションの塗りつぶしがあるシェイプのGradientStopsのそれぞれの色を変化させるアニメーションの方法です。

2013ではできないけど2016ではできる等の情報もあればお願い致します。
278デフォルトの名無しさん
2017/03/08(水) 21:50:45.20ID:DO0ivfK5
vbaだけでhttpサーバーって出来る?
279デフォルトの名無しさん
2017/03/08(水) 23:04:04.36ID:Tpob7EG8
俺が手を下すまでもないな
答えてやれよ
>>280
280デフォルトの名無しさん
2017/03/09(木) 01:39:01.40ID:UFk6xx1O
VBAだけってのが
外部コントロール使用禁止
API呼び出し禁止
なら不可能です
281デフォルトの名無しさん
2017/04/09(日) 15:56:17.26ID:9WwYB+FH
VBAの変数の値を次回の処理を行う時まで記録しておくのにセルに書き込みをしたりしていますが、

セルにアクセスするのを減らすためにセルに記録しなくて処理終了時に変数値をVBA内で保存しておいてくれる一次記憶領域みたいな物はないのでしょうか?
282デフォルトの名無しさん
2017/04/09(日) 16:02:56.39ID:9WwYB+FH
ちりも積もればの話ですが
足し算引き算割り算レベルの計算をセルに関数を割り当てて行うのと
同じ計算式を変数を用いてVBAで書いて実行するのとで、より処理速度が速いのはどちらでしょうか?
283デフォルトの名無しさん
2017/04/09(日) 16:09:57.30ID:Lq/WJuQk
>>281
セルでいいんじゃないの?
ただそのIOは配列アクセスを使うべき
ループで1セルづつ読み込むとかがナンセンス
284デフォルトの名無しさん
2017/04/09(日) 16:14:42.36ID:K8MFArI9
>>281
説明がいまいち分かりにくい。
次回ってのは何時のことを言ってる?
グローバルな変数じゃダメなの?
次にそのブックを開くまで保持したいならセルってのも分かるんだが。
で、その場合にセルの代わりに保持したいならCustomDocumetProperties使ったりするかな。
285デフォルトの名無しさん
2017/04/09(日) 16:27:32.06ID:9WwYB+FH
>>283
ありがとうございます。
>配列アクセス
勉強してみます。

>>284
Bookを閉じずに他からデーターを取り込み再度VBA実行を繰り返します。
>グローバル変数
>CustomDocumetProperties
勉強してみます。

グローバル変数に代入した数値は処理を中断しても生き続けるのであればそれで解決しそうです。
286デフォルトの名無しさん
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個以上でも問題ないとか?
288デフォルトの名無しさん
2017/04/09(日) 19:51:50.86ID:0T9WQSVM
>>287
使えるメモリは決まってる
変数の個数じゃなくてそれぞれのバイト数の合計
289デフォルトの名無しさん
2017/04/09(日) 23:55:43.90ID:K8MFArI9
>>287
グローバル変数(Public)は便利に見えるけどスコープを考えて必要無い所では使わない方が良い。
PublicかPrivateかプロシージャ内で宣言するかを意識して使った方が良いね。
290デフォルトの名無しさん
2017/04/10(月) 02:47:06.39ID:AhmZ51rM
日曜の午後からずっとVBAを書いてるけどまだおわらね〜
てかやればやるほど選択肢が爆発的に増えてきて一生かかってもおわりそうにね〜!w
291デフォルトの名無しさん
2017/04/10(月) 04:05:13.85ID:sRLMXvmn
>>287
しかもEndやErrorで抜けたら破棄されるという罠
292デフォルトの名無しさん
2017/04/11(火) 00:40:18.97ID:egN7ZnVO
素数や組み合わせ爆発のような数学の迷宮的な問題に陥って
一生かかってもコードを完成させるのは無理ですよみたいな場合もあるのでしょうか?
293デフォルトの名無しさん
2017/04/11(火) 10:41:22.79ID:Ei1BFwyD
>>292
数学的バックグラウンドがなければコードが書けないという類いの問題はあるね。
たとえばNP困難なやつ。
巡回セールスマンとかナップサック問題とか、ナーススケジューリング問題とか。
自力でなければ、それなりの回答が得られる解法(コード)が既に存在してるものもある。
294デフォルトの名無しさん
2017/04/11(火) 11:01:45.96ID:o/k96Ri6
問題を解く方法を考案するのと、その方法をコンピューター言語に翻訳する作業は別ですわ
それぞれに異なった知識と才能が必要となりますので
295デフォルトの名無しさん
2017/04/11(火) 11:03:15.94ID:6dnWkPrh
>>291
End Subの行にブレークポイント、これ
296デフォルトの名無しさん
2017/04/12(水) 22:41:46.94ID:iuenojzm
パブリック変数で

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」 と表示されますみたな、、 
300デフォルトの名無しさん
2017/04/21(金) 21:28:31.62ID:BWuBR5xw
>>299
最終的には
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次元配列全てを要素として持つコレクションオブジェクトを生成して操作する
302デフォルトの名無しさん
2017/04/21(金) 22:18:30.36ID:TpPjDerb
>>300
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/Mll
>>302
>>301
ありがとうございます。Collection Dictionary 調べてみましたが
どちらも説明をざっと読んでも使い方が理解できませんでしたが挑戦してみます。

phpのように (aaa & no) =
と変数名自体を複数の変数で合成する事は出来ないのですね。
306299
2017/04/22(土) 08:27:20.54ID:zUhE/Mll
>>300
>>301
>>302
>>304

aaa1=「状況に応じて変化する数値1」
aaa2=「状況に応じて変化する数値2」
aaa3=「状況に応じて変化する数値3」


すみません説明を単純にするために「例文1」としてましたが
変数に格納されるのは状況に応じて変化する数値(他の集計の計算結果)でした。
固定された文言であればDictionary keyで処理できるというのはわかりましたが
格納されている物が変化する数値の場合かつ
変数名を数字で管理(他の集計から3という結果が出たら→aaa3が適応されるみたいな)
したい場合こういうことを実現する方法はありますでしょうか?
307デフォルトの名無しさん
2017/04/22(土) 08:53:12.92ID:MM2jcjjz
>>306
変数名を数字だけで管理する方法はない。
VBAの仕様上、できない。

というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。
やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。
308デフォルトの名無しさん
2017/04/22(土) 11:27:30.44ID:6RXuRSFv
>>306
Dictionaryのvalueは変更可能
309299
2017/04/22(土) 15:29:06.19ID:zUhE/Mll
>>308
>>307
理解するのにかなり時間がかかりましたがDictionaryなんとなくわかりました。
これって Dim とかPublicとかの変数とは別に存在できるんですね。
全く未知の分野ですが使ってみます。ありがとうございました。
310デフォルトの名無しさん
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で指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、
グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
311デフォルトの名無しさん
2017/04/22(土) 22:48:51.75ID:AOzJBbd9
>>310
プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない

でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
312デフォルトの名無しさん
2017/04/22(土) 23:30:15.48ID:zUhE/Mll
>>311
ありがとうございます。
今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして
全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
313デフォルトの名無しさん
2017/04/23(日) 05:30:19.61ID:t5ve42Di
>>312
Dim dic As New Dictionary
の宣言を何処でしているかによるんじゃね?
314デフォルトの名無しさん
2017/04/23(日) 10:16:09.39ID:wfwXXeKO
>>312
標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな
ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
315デフォルトの名無しさん
2017/04/23(日) 16:51:51.75ID:fs201BJ1
>>311
引数に渡すってのを忘れてるぞ。
一番使われてるんじゃないか?
316デフォルトの名無しさん
2017/04/23(日) 17:11:32.92ID:yvJyPXpi
>>315
何の引数に渡すことを指してるのかな?
317デフォルトの名無しさん
2017/04/23(日) 18:02:04.26ID:fs201BJ1
>>316
プロシージャを跨ぐって話だろ。
別のプロシ−ジャに引数として渡せば形の上ではそれぞれのローカル変数でも値は保持されるだろ。
318デフォルトの名無しさん
2017/04/23(日) 18:27:09.16ID:yvJyPXpi
>>317
>>310を読んでなんとなく、一個のルーチンのプロシージャ間の値の受け渡しの話ではなく、ルーチン内で一度AddしたDictionaryのKeyとItemを何らかの形で保存して、同じルーチンを再実行したときにKeyとItemを再利用することが出来るかどうかという話だと思ったんだが

まぁ、オブジェクトプロパティへの値の保存も実際はそのオブジェクトを定義してるクラスのメソッドに引数を渡してるのと同じだから、変わらないといえば変わらないけど
319デフォルトの名無しさん
2017/04/28(金) 17:33:41.10ID:krqKI6DB
超既出FAQですな。

『Public 宣言された変数の有効期間』
https://support.microsoft.com/ja-jp/help/408871

簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。
320デフォルトの名無しさん
2017/04/28(金) 19:14:11.69ID:AZuqyiJa
>>319
俺は使う時にクリアされてるかチェックしてクリアされてたら再設定するようにしてるな。
値が0だったら値を取得するFunctionを呼び出すって感じ。
321デフォルトの名無しさん
2017/04/28(金) 22:13:43.74ID:A3VkBONm
Publicな静的変数は使わない。
エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
322デフォルトの名無しさん
2017/04/29(土) 02:16:02.91ID:2iGvQ1xG
>>321
いや、それは格好悪いんじゃね?
セルを使ったりCustomDocumentPropertiesも使うけど、それに合ったものだから使うわけでPublic変数に合ったものもある。
適材適所だろ。
323デフォルトの名無しさん
2017/05/25(木) 20:51:55.45ID:yS9f0RVc
ontime で実行するプロシージャって標準モジュールに書かないとあかんのか。
このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。って出た。
324デフォルトの名無しさん
2017/05/25(木) 21:07:30.77ID:JTnnq+Q0
>>323
スコープ
普通にCallで呼び出せる場所にないと実行できないのは、どの方法でも同じ
325デフォルトの名無しさん
2017/05/26(金) 00:03:34.69ID:Fw61rXsb
>>324
ThisWorkBookのモジュールからOnTimeでThisWorkBookのモジュール内のPrivate Sub を予約したんですが・・・これじゃ駄目なんですかね?
326デフォルトの名無しさん
2017/05/26(金) 23:19:52.51ID:Fw61rXsb
>>325です
OnTimeで実行予約するプロシージャを標準モジュールに移動したら動くようになりました〜
327デフォルトの名無しさん
2017/06/05(月) 21:02:56.92ID:bd1ggU41
特定の文字が含まれているセル(複数ある)を検索し、

検索されたセルを含む行全体(Entirerow)を同時選択する方法

以上お願いします。
328デフォルトの名無しさん
2017/06/05(月) 21:06:49.56ID:bd1ggU41
その文字を含むセルを、行ごと削除したり、行ごとコピーしたりと、いろいろしたいので質問致しました。
329デフォルトの名無しさん
2017/06/05(月) 21:25:48.60ID:nSGQpg3a
鮮やかな丸投げっぷりにワラタ
作成依頼OKな Excel VBAスレと間違えてない?
330デフォルトの名無しさん
2017/06/05(月) 21:31:47.51ID:tRFV5HQ5
>>328
とりあえず、複数行を選択するところをマクロの記録で見てみたら?
ctrlキー押しながら選択するのとshiftキーを押しながらのとで。
331デフォルトの名無しさん
2017/06/05(月) 21:41:12.12ID:jKyX/qwq
検索対象のセル範囲でForループを回す
セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく
ループ終了後にSelectする
以上
332デフォルトの名無しさん
2017/06/05(月) 21:45:35.27ID:epzJZZwH
>>327
Ctrl+Fで検索しろやボケナス
ちゃんと行選択までしてくれるぜ
333デフォルトの名無しさん
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のコマンドを教えていただきたいです。
337デフォルトの名無しさん
2017/06/07(水) 21:49:32.12ID:nqbSOdK9
>>336
コマンドはありません
338デフォルトの名無しさん
2017/06/07(水) 22:23:27.64ID:L3ua+fDn
>>336
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を作成して終了。
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")〜に補足コードを書くなどで同じ処理を実現する方法は無いのでしょうか?
341デフォルトの名無しさん
2017/06/25(日) 17:20:36.10ID:A4A49pvi
MsgBox Range("A1").Text
とか
MsgBox Format(Range("A1"), "hh:mm:ss")
とか
342デフォルトの名無しさん
2017/06/25(日) 17:26:03.97ID:/fEFwdln
>>341
なんと!!
変数をだらだら定義すること無く綺麗さっぱり解決できました!ありがとうございました。m(_ _ )m
343デフォルトの名無しさん
2017/07/17(月) 17:20:20.62ID:7pjXcMGR
プロシージャの中で1回しか使わないのに、わざわざ変数にするやつとかいるよね。(しかもハンガリアン記法で)

100行に満たない程度のコードなら、Withステートメント使ったほうがむしろ可読性は上がる。
344デフォルトの名無しさん
2017/07/17(月) 17:25:26.05ID:l3sSLpQS
マシンパワーが貧弱だった大昔ならともかく、今時はリソースを気にする必要なんてないんだから、可読性を最優先で記述するべきだよ。
345デフォルトの名無しさん
2017/07/23(日) 22:54:52.46ID:EbUz/UVB
>>343
ああ、俺だ。
Ubound(配列)とか、For〜Nextの中で何回も実行すると、
なんか遅いような気がして、一度変数に入れちまう。
346デフォルトの名無しさん
2017/07/24(月) 03:07:48.10ID:/3vdoRrW
>>345
何回も実行するなら変数に入れたほうがいいんじゃね?
347デフォルトの名無しさん
2017/09/01(金) 23:04:37.73ID:RmCwgyLh
>>345
(1)
For I1 = 1 to UBound(xxx)
For I2 = 1 to UBound(xxx)
(2)
J=UBound(xxx)
For I1 = 1 to J
For I2 = 1 to J

普通に考えて本のチョット早いと思われますが、記述の労力ほどじゃない。
他の方の書いてますが、今は、処理速度が物凄く早くなっています。
気にしなくていいと思います。
ただし、私はEXCELでVBAを書くのですが、シートのセルに書き出すと物凄く遅くなる。
VBAの配列とかメモリーならばほとんど気にしなくていいです。
ですから、メモリー内で処理して最後の最後にシートに書くようにしてます。
348デフォルトの名無しさん
2017/09/02(土) 08:26:52.52ID:tqo/3wkP
>>347
> ですから、メモリー内で処理して最後の最後にシートに書くようにしてます。
基本中の基本だからいちいち書かなくてよろし
349デフォルトの名無しさん
2017/09/05(火) 10:53:29.80ID:WmSrV0rS
アノニマスに入会したいんですがVBA知ってるだけで入れますか?
あと入会ってどうやんの? スーツ着て履歴書持って事務所に面接に行くの?
350デフォルトの名無しさん
2017/09/05(火) 12:25:17.40ID:P2jRu54V
たまにハローワークに求人出てるから行ってみれば?
351デフォルトの名無しさん
2017/09/12(火) 02:10:43.27ID:2wFcaigK
超初心者です
同じブック内の複数のシートにある顧客データをUserFormを用いて(検索するイメージ)抽出し、別のシートへ出力するコードを書きたいのですがいまいちわかりません。
大変困っているのでヒントをくださればありがたいです。
352デフォルトの名無しさん
2017/09/12(火) 02:30:21.88ID:U3/YorLf
>>351
超初心者には無理です
パソコン教室に通ってせめて初級をクリアしてから質問してください
353デフォルトの名無しさん
2017/09/12(火) 04:10:40.96ID:2wFcaigK
>>352
返信ありがとうございます
Excel自体触ったことない超初心者ですが頑張っているところです( ??? )
354デフォルトの名無しさん
2017/09/12(火) 08:28:28.15ID:GFFccSR9
>>351
自称初心者がどこでUserFormとか覚えたの?
まずはシート上でやってみようね
355デフォルトの名無しさん
2017/09/12(火) 12:27:40.35ID:7XJfZGpJ
どこで覚えようとお前の知った事じゃねえだろw
なんだこのバカはwww
356デフォルトの名無しさん
2017/09/12(火) 13:06:30.39ID:N1ygkJfx
>Excel自体触ったことない超初心者

ユーザーフォームを作ったことはあるのか?
 無けりゃ、この時点でやろうとしていることはもう無理

VBAはほんの少しでも書いたことはあるのか?
まぁ最初は>>354の言うようにシート上で実現して、それをユーザーフォームにもっていくのが順当
というか触ったこと無いって時点で釣り確定
357デフォルトの名無しさん
2017/09/12(火) 16:38:53.70ID:2wFcaigK
VBA参入門書とネットの知識を詰め込みました。
Excel初心者は本当です。友達に教えてもらいつつやっています。気分を害された方、すみません。
>>356さん非常に分かりやすいです。
二日間くらい最初からコードを書こうとしてもがいていましたが、マクロの記録が使えそうな気がします。
そのコードをいじってボタンで起動するユーザーフォームとくっつけるイメージで挑戦してみます。
358デフォルトの名無しさん
2017/09/12(火) 16:41:08.80ID:2wFcaigK
>>354さんもありがとうございます!参考&励みになります
359デフォルトの名無しさん
2017/09/12(火) 20:34:49.57ID:/wKXVszF
このスレで一番の基地外が満を持して遅れて登場
360デフォルトの名無しさん
2017/09/12(火) 20:51:47.27ID:U3/YorLf
俺のことかな?
361デフォルトの名無しさん
2017/09/13(水) 00:17:05.57ID:DHqL5rdG
>>357
ユーザーフォームでその機能を実現する必然性が感じられない
フィルタオプション機能を用いて、検索結果の出力先を新規シートに設定するだけで事足りると思うぞ
362デフォルトの名無しさん
2017/09/14(木) 07:47:53.75ID:w7wWQUJY
フィルタオプションとマクロの記録で8割方完成できるな
363デフォルトの名無しさん
2017/09/15(金) 10:19:31.10ID:wFtq+9vG
ADOの事でちょっと質問です
変数を定義する時に

Dim wkR as New ADODB.Recordset

ってするんだけど、RecordsetとRecordの違いって何?
364
2017/09/15(金) 10:57:55.87ID:oEkV+GvG
http://matsuri.2ch.net/test/read.cgi/morningcoffee/1472464096/
365デフォルトの名無しさん
2017/09/18(月) 06:42:59.71ID:xbe9SlrW
>>361-362 ありがとうございます、簡単なプログラムですが完成して感動しました。
Ifとマクロの記録が万能すぎることを肝に銘じてこれからもがんばります( ??? )
366デフォルトの名無しさん
2017/09/18(月) 15:10:56.93ID:7Xxpypu9
>>365
万能過ぎないけどね。
そればっかり使ってる人は永遠に初心者なままだし、色々な面で出来の悪いプログラムになる。
自動生成されたコードのそれぞれの意味を理解して自分なりに書けるようになると上達する。

例えば
Range("B4").Select
Selection.Value=10
のようなコードが生成されると思うけど意味を考えたら
Range("B4").Value=10
で良いとわかるよね。
367デフォルトの名無しさん
2017/09/18(月) 20:44:49.78ID:ydCO3vgD
>>363
Recordset オブジェクト
https://msdn.microsoft.com/ja-jp/library/cc364264.aspx
Record オブジェクト
https://msdn.microsoft.com/ja-jp/library/cc364270.aspx
368デフォルトの名無しさん
2017/09/18(月) 23:50:59.42ID:XctjYupl
すみませんお力添えをお願いします!
エクセルマクロ(VBA)の件でお尋ねいたしたく思います!
まずグラフの系列名はセル参照で表示させてます
シート名:あいうえお
適用グラフ:グラフ4
系列範囲:A11:Z11
必要なデータ選択は全ての系列で済ませています
あとはグラフで不要な系列を削除したいため、グラフに乗せたくない系列名は”×”になるようにしてます
この系列名”×”をVBAで自動的に削除させることは可能でしょうか?
またグラフは別シートの数値入力をもって自動作成される仕様にしているので、トリガーは設けません
デフォルトだと全部”×”のため(初めは数値データの入力がないため)
数値が入ると正しい系列名に変更されるため、VBAではまず”×”で削除して、”×”以外の系列名に変わったら復活するという構想を練っています
とりあえず、まず”×”を消すコードを見よう見まねで書いてみたのですが動作しませんでした
消すのは良いですが復活させるのも組み込むとなるとちんぷんかんぷんです
是非ともご教示お願いします!
Sub test()
Dim d As Long
Dim i As Long
Dim j As Long
For i = 2 To Sheets.Count
d = Range("A11:Z11").End(xlUp).Row
With Worksheets(i).ChartObjects("グラフ 4").Shapes.AddChart.Chart
.ChartType = xlLineMarkers
For j = .SeriesCollection.Count To 1 Step -1
If .SeriesCollection(j).Name <> "×" Then
.SeriesCollection(j).Delete
End If
Next j
End With
Next
End Sub
369デフォルトの名無しさん
2017/09/19(火) 20:55:54.78ID:2SFxAhMD
>>367
説明サイトへのリンク、ありがとう。
取り敢えず、「階層構造のデータ間を移動する手段として」のRecordオブジェクトは使うこと無さそうw
370デフォルトの名無しさん
2017/09/20(水) 01:17:31.22ID:2dxgF4qE
IF文初心者ですが
3つ数字の中から一番小さい数を判定したいのですが、
elseや入れ子で複数書けば判定できるというのは推測がつきますが
最も簡潔に記述するとしたらどんな記述方法がありますでしょうか?

例)
33 12 3

3を抽出
371デフォルトの名無しさん
2017/09/20(水) 05:19:03.75ID:mkPuPLWs
>>370
最小値 = WorksheetFunction.Min(Array(33, 12, 3))
372デフォルトの名無しさん
2017/09/20(水) 05:37:31.94ID:mkPuPLWs
>>370
x = 33
y = 12
z = 3
If x < y And x < z Then
  最小値 = x
ElseIf y < x And y < z Then
  最小値 = y
Else
  最小値 = z
End If
373デフォルトの名無しさん
2017/09/21(木) 21:28:21.10ID:j1SDXypf
>>372
>>371
明確な答えをありがとうございます。
やはりIFの場合は372が妥当なようですね。
374デフォルトの名無しさん
2017/09/21(木) 22:56:33.81ID:8rkXkN3+
>>372は < じゃなくて <= にしないと誤判定する
375デフォルトの名無しさん
2017/09/22(金) 06:56:36.59ID:zUC9dslV
例題の対象が3ではなくて1000とかに増えたら破綻するだろw
376デフォルトの名無しさん
2017/09/22(金) 07:13:14.29ID:TPoybrYY
>>375
数字3つという前提を勝手に変えるこういう馬鹿はなんだろう
377デフォルトの名無しさん
2017/09/22(金) 09:34:43.90ID:KphHXryq
汎用性を考慮しないのか。
なかなかひどい。こういう人もいるという参考になったわ。
378デフォルトの名無しさん
2017/09/22(金) 09:37:13.81ID:oVXNeyl2
ソートアルゴリズム書くだけやん
379デフォルトの名無しさん
2017/09/22(金) 09:54:47.89ID:yLI54yGL
372のはアルゴリズムと言うよりその場しのぎの対応
380デフォルトの名無しさん
2017/09/22(金) 10:13:30.00ID:yLI54yGL
配列に入れてループで最小値と比較して小さければ最小値を更新していくのが定石なのでは。
381デフォルトの名無しさん
2017/09/22(金) 10:29:30.23ID:WIc1mdfR
だからMin関数で一発なのに、無駄に車輪の再発明をしたがるやつが多くてリンダ困っちゃう
382デフォルトの名無しさん
2017/09/22(金) 10:32:40.77ID:4is4PUWl
>>379
順次比較も立派なアルゴリズムの一種なんだが
383デフォルトの名無しさん
2017/09/22(金) 14:42:52.69ID:KphHXryq
これはひどい
384デフォルトの名無しさん
2017/09/22(金) 14:57:48.38ID:WETwNkme
IF初心者とか言ってる人に何言ってるんだか

あといつからこのスレはEXCEL VBA限定になったんだ
385デフォルトの名無しさん
2017/09/22(金) 20:39:03.91ID:zUC9dslV
>elseや入れ子で複数書けば判定できる
>最も簡潔に記述するとしたらどんな

という問いに、elseや入れ子の回答するのは無能以前に答えになってないのとちがう?
386デフォルトの名無しさん
2017/09/22(金) 22:15:07.62ID:250/7oh7
え?え?日本語理解できてる?
質問には「Elseを使わずに」なんてどこにも書いてないぞ

ざっくり意訳すれば「IfとElseの数を最小に」する方法を聞いてるんだろ
387デフォルトの名無しさん
2017/09/23(土) 06:12:18.34ID:6cN/4Ux4
372のは374が書いてるように、例えば
x=1
y=1
z=3
と入れただけで誤判定する。アルゴリズムの最低限を割ってるぞ。
372がベストアンサー(笑)だと質問者が思ったなら気の毒なので念のため。
388デフォルトの名無しさん
2017/09/23(土) 07:50:16.98ID:nAanI8EG
そもそも計算量も最少じゃないしな
普通に

最小値 = x
If y < 最小値 Then 最小値 = y
If z < 最小値 Then 最小値 = z

ってやる方がわかりやすい
389デフォルトの名無しさん
2017/09/23(土) 10:07:44.78ID:hX9NlXap
うん、ベストアンサーはMin使った方だね。
俺だったら迷わずMin使用する。
同時にMin使わない方法も考える。
配列ループも考えた。

でも、別にIf文使っても良いんじゃない?
そんな目くじらを立てるようなことじゃない。
390デフォルトの名無しさん
2017/09/23(土) 12:22:56.52ID:/uotOgAp
>>386が分かってないバカ多すぎw
391デフォルトの名無しさん
2017/09/23(土) 14:36:58.57ID:OMtgmcpv
だから372はif elseだとしても最小(計算量的に)の答えにもなってないし、そもそも答えとして間違ってるって話だろ
392デフォルトの名無しさん
2017/09/23(土) 17:06:13.24ID:HTwX+3ra
それは勉強する奴と仕事にしてる奴のスタンスの違いだな。
仕事にしてる奴はIfを使わなきゃならないなんてことに遭遇しないから、はなっから抜けてる。
393デフォルトの名無しさん
2017/09/23(土) 23:00:39.63ID:9AVefP05
必ずIfを使う縛りなら>>388がベストアンサー
ソートアルゴリズムの最初の1回目のループを展開してるだけなんだけど、基本中の基本のやり方
394デフォルトの名無しさん
2017/09/23(土) 23:28:57.04ID:UvR7p8sn
>>392
if文の使い方を聞かれてmin()関数を教えるような人はプログラムを仕事にしないで欲しいのです
いえ、仕事をしないで欲しいのです
395デフォルトの名無しさん
2017/09/23(土) 23:49:29.12ID:9AVefP05
仕様書はちゃんと読んで、条件は無視しちゃいけないよね
396デフォルトの名無しさん
2017/09/24(日) 02:12:05.73ID:3B64fACL
勉強のため何が何でもIfだけで解決しなきゃいけなかったのか、
まだ初心者だからMinという便利な物があることを知らなかったのか
それによって変わってきちゃうからー
397デフォルトの名無しさん
2017/09/24(日) 08:43:50.06ID:LX+6AD0q
>>395
仕様書ならそれが正解
しかし案件定義なら顧客が何をしたいかを読み取ってより良い方法を提案することも必要
そもそも>>370にはIf使えとは書いてないし
398デフォルトの名無しさん
2017/09/24(日) 09:20:40.69ID:SDtHFGLj
>>394
分かってねえなあ。
勉強を教える仕事じゃないならユーザーにとって一番使いやすいとか、速度が速いとか、ユーザーが満足するようなものかどうかが大事なのであって、どんなコードじゃなければならないとかの要望は普通無い。
そして、メンテナンス性とかコードの書き方に関してもMinの方が良いとなればそもそもの問い掛け自体仕事で発生することは無い。

そして実際には、何でMinじゃ駄目なのと問い掛けられない奴は仕事の出来ない奴ということになる。
(もちろん明確に理由が有るならIfで書く。)
指示通りにしか作れない奴じゃ単なるコーダって奴になるしかない。

仕事ではMinを使わないなら明確な理由が存在するし、打ち合わせなんかのやり取りで既に意思統一されてる筈だ。
つまり今回の問い掛けのような事態は存在しない。
399デフォルトの名無しさん
2017/09/24(日) 10:07:44.74ID:lViLIhLn
>>393
だな、簡素で分かりやすく奇麗なコードだ
400デフォルトの名無しさん
2017/09/24(日) 15:00:43.73ID:3BjqQEbI
>>398
なんか仕事をしてる体で話してますけど
あなたの想像上の仕事では自分にとって都合の悪い事態は存在しないのですね
さぞかし楽しかろうとは思いますが
あなたは社会に出ないでください
401デフォルトの名無しさん
2017/09/24(日) 16:46:42.97ID:jWeMnfEt
>>400
仕事をしたことの無い奴には分かるまいw
402デフォルトの名無しさん
2017/11/08(水) 05:55:55.96ID:mrDDFdOE
こっちを再利用?
403デフォルトの名無しさん
2017/11/08(水) 09:41:10.42ID:VRSOCYqC
再利用したいけどExcelの話をしたいときに困るのかな
404デフォルトの名無しさん
2017/11/08(水) 10:15:34.15ID:6WBHyYXn
そのうち立つんじゃね
405デフォルトの名無しさん
2017/11/08(水) 11:10:32.82ID:JKxKdsR3
「Excelの話」したいんだったら総合相談所でやれ
406デフォルトの名無しさん
2017/11/08(水) 11:59:42.12ID:VRSOCYqC
なるほどなるほど
407デフォルトの名無しさん
2017/11/08(水) 12:50:47.32ID:+KUB1/9h
早速質問
今vbaでマップ使って
とある表の集計を行なっております
一つのkeyに対しアイテムが複数あるので
配列で入れようと思ったのですがうまくいきません
何か良い方法はありませんか?
408デフォルトの名無しさん
2017/11/08(水) 16:45:58.99ID:pE/cp7rq
もう少し具体的にどうぞ
409デフォルトの名無しさん
2017/11/08(水) 21:23:36.05ID:+KUB1/9h
>>408
一つのキーに対して複数のアイテムがある
これをどうにかこうにか出来ないか

やりたいことは
キーが重複された二次元配列を
グループ化&合計を取りたい
410デフォルトの名無しさん
2017/11/08(水) 21:28:10.43ID:aQlO1Uq5
>>409
エクセルならピボットテーブルでいいんじゃない?
411デフォルトの名無しさん
2017/11/08(水) 21:32:09.19ID:+KUB1/9h
>>410
自動で計算させるんだよ
412デフォルトの名無しさん
2017/11/08(水) 21:33:56.61ID:aQlO1Uq5
>>411
ピボットテーブルをvbaで作ればいい
413デフォルトの名無しさん
2017/11/08(水) 21:38:43.05ID:vt31E4Mm
エスパーじゃないんだから、もっと具体的に説明しないと、何がしたくて何ができないのか判んないよ。
そして多分だけど普通にifで分岐するプログラムを書くだけだと思う。
414デフォルトの名無しさん
2017/11/08(水) 21:40:37.09ID:0sSRKP/b
いや多分forでループするプログラムを書くだけだと思う
415デフォルトの名無しさん
2017/11/08(水) 22:38:17.07ID:+KUB1/9h
データシート
キー 金額a 金額b
1 10 20
2 20 50
1 30 90

結果(期待)
キー 金額a 金額b
1 40 110
2 20 50



上のような感じのシートがあって
集計かけたり
平均とったり
最大値だったりしたい
416デフォルトの名無しさん
2017/11/08(水) 23:08:47.37ID:aQlO1Uq5
>>415
そのくらいの事を自分でできないなら
ピボット使った方がいいと思うぞ
バグって計算結果が合わないから
417デフォルトの名無しさん
2017/11/08(水) 23:25:51.57ID:0sSRKP/b
そのくらいの事を自分でできないから質問してんだろ
そのくらいの事を理解できないなら質問スレに来ない方がいいのに
418デフォルトの名無しさん
2017/11/08(水) 23:38:17.91ID:aQlO1Uq5
そのくらいの事も判らない人にも実現できる方法を提案してるだろ
419デフォルトの名無しさん
2017/11/09(木) 00:17:55.65ID:hDRDp7cw
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚
上のように各列の情報に応じて、一定の条件にヒットしたら評価欄に追記、ということをしているのですが、
上手い書き方が思いつかず、冗長で読みにくいコードになってしまいます
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚

どうすれば綺麗で読みやすいコードになるでしょうか?

特に、変数(ここでは「評価」)の参照先のセルに書き込みつつ、変数の値自体も更新するスマートな方法と
If文で2つの条件が当てはまった場合に両方の処理を実行させる(ここでは40点以下と60点未満のIf文を一つで済ませるとか)方法があれば知りたいです
420デフォルトの名無しさん
2017/11/09(木) 03:11:02.61ID:HAMnFTNh
>>419
配列を使え
あとソースを読んだり修正したりやりにくいから画像にせずそのままテキストとして貼ってくれ

科目 = Array("国語", "算数", "理科")
For j = 0 to 2
  点数 = i.Offset(0, j + 1)

  If 点数 <= 40 Then
    i.offset(0, -1).Value = i.offset(0, -1).Value & 科目(j) & "の点数が以下略" & vbCrLf

みたいな感じで教科の数に関わりなく記述を1回にできる
条件が3つ以上ある時はCaseで分ける方法もあるけど、どんどん文字列を追加するならIfを並べる今の書き方で別に悪くない
421デフォルトの名無しさん
2017/11/09(木) 08:39:48.02ID:m3IDSHjM
ありがとうございます、やってみます
(コードは行数制限とインデントが反映されなかったのでつい画像に…すみません)
422デフォルトの名無しさん
2017/11/10(金) 08:15:39.86ID:vvDXnBRS
オートフィルの連続データでA1が0なら終わりでそれ以外なら下にオートフィルの連続データを追加して行くってどうやればいい?
423デフォルトの名無しさん
2017/11/10(金) 08:52:12.12ID:EDTrdPIL
何をどこまで追加すんの?
424デフォルトの名無しさん
2017/11/10(金) 09:18:59.30ID:vvDXnBRS
下に一つオートフィルの連続データを追加してもしもその数が0以外ならばその下に一つづつ追加してもし0になったら終わるってことです

オートフィルの連続データまでは成功しました!
425デフォルトの名無しさん
2017/11/10(金) 12:58:08.94ID:MIqJX5DT
>>424
何をやりたいのかさっぱりわからんから
> オートフィルの連続データまでは成功しました!
のコードを晒してくれ
426デフォルトの名無しさん
2017/11/10(金) 22:07:12.41ID:KbRkXeO5
何をどーしたいのかよーわからんが、
オートフィルの連続データが完成したならDo  While Loopでも使えばいいんじゃね
427デフォルトの名無しさん
2017/11/11(土) 10:59:01.85ID:t1iacSS7
そうですね連続データと探す作業分けてDo until使ってみたら目的は達成できました ありがとございます
428デフォルトの名無しさん
2017/11/16(木) 11:42:09.40ID:DcGHOE5h
漠然とした質問で申し訳ない
コレクションというのがあるけど、その利点というかこういう場合に使うとかという
のを教えてくれないだろうか。配列は動的配列も含めてよく使うけどコレクション
というのはあるのは知ってるけどどういう場合に使うものなのか判らない。
(まぁそれでも何とかなってるということは今の時点ではそれでも問題ないって
ことでもあるんだけど)
429デフォルトの名無しさん
2017/11/16(木) 12:38:12.83ID:Xd3mhum+
>>428
Dictinonaryだとキーが重複してたらエラーになるから
重複させたくない場合は便利だと思う

あと既にそのキーが登録してあるか調べるメソッドがあるから便利

配列でも実現出来るけど生産性の問題だと思う
430デフォルトの名無しさん
2017/11/16(木) 12:40:16.53ID:+IKZz2Nz
>>428
Excelならコレクションは知らないうちに必ず使ってるから心配しなくてもいい

オブジェクトを複数まとめた物がコレクションで、例えばワークシートオブジェクトをまとめた物もコレクションの一種
新規ブックを作るとワークシートが3枚あるじゃろ?それがもう既にコレクションなんだわ

名前をよく見ると「Worksheets」って複数形になっとるじゃろ?これが「複数まとめた」コレクションを示しておるのじゃ
431デフォルトの名無しさん
2017/11/16(木) 16:08:34.06ID:mcjOn36E
>>428
コレクションの便利さを実感できるのは、For Each 〜 Nextとか
432デフォルトの名無しさん
2017/11/16(木) 17:01:22.70ID:yjV64GpF
For Each
配列でも使えるけどね
433デフォルトの名無しさん
2017/11/16(木) 19:57:40.06ID:NwFToy+4
広い意味では配列もコレクション
元質問のコレクションが何指してるか質問からは分からん
434デフォルトの名無しさん
2017/11/16(木) 22:05:24.15ID:CQAbf3aD
>>433
どの言語でもコレクションの定義は曖昧だからなあ。

配列のように物理的に連続したメモリ領域で動かせないものが配列。
435428
2017/11/17(金) 16:52:50.63ID:wkN6jGAZ
気付かないうちにコレクションを使ってたってのは、あぁそうなのかって感じですけど

>元質問のコレクションが何指してるか

思い浮かべてんのは連想配列とかディクショナリとかってやつですかね。
ディクショナリが重複チェックにも使えるってのは知りましたが。
今現在動かしているのをディクショナリに変えて見ようかなとと思ってます。
どちらにしろ自分で判らないことにはすすまんので。

後、曖昧模糊とした質問に答えてくれた皆さん、ありがとう
436デフォルトの名無しさん
2017/11/17(金) 18:29:39.77ID:71HLXjvB
連想配列は配列と言いながら実体はコレクション
437デフォルトの名無しさん
2017/11/18(土) 09:55:58.36ID:8LVfn2cG
配列数の制御がめんどいし
個々のデータ型も合わせんでいいし
438デフォルトの名無しさん
2017/11/19(日) 20:25:41.56ID:TCtIBT5G
感覚的な話になるけど、例えばA列、B列、C列には○と×が入っててD列には何かの名前が入ってる時に、A、B、Cの組み合わせが×、○、○の時のD列の名前を表示したいとするわな。
こういう場合は一行ずつ見て行って×、○、○の組を探すわな。
こういう場合はFor Next使うわな。
つまり普通の配列が感覚に合う。

一方、A1:F100の範囲の各セルで1つだけ○、他は全て×の時に○のアドレスを知りたいなんて時には見つかるまで全てチェックすれば良いわけで、どう見ていくかなんて関係無いわな。
こういう場合はFor Each Next使うわな。
つまり連想配列が感覚に合う。
439デフォルトの名無しさん
2017/11/19(日) 22:00:10.14ID:jY4FOG+m
>>438
そんなもん普通はvlookup使うわな。
440デフォルトの名無しさん
2017/11/20(月) 09:52:50.14ID:6BLE5ZLY
>>439
ばーか。
感覚を例として挙げてることが分からないバカは黙ってろ。
もっと上手い方法があるだろうことは最初から分かってる。

順番を意識しないIteratorの感覚を説明してる。
コレクションにだって順番は実際はある。
しかしそれを意識しないような場合にぴったりということだ。
441デフォルトの名無しさん
2017/11/20(月) 11:39:33.25ID:VyTKZ5qI
ああ言えばこういうわな
442デフォルトの名無しさん
2017/11/20(月) 19:55:38.19ID:9xFKx2hL
他人の回答の批判とかするほうがおかしいね
質問に対して自分の考えで回答すればいいのに
443デフォルトの名無しさん
2017/11/20(月) 20:06:38.53ID:Pkea+7u9
適当に批判してやらなきゃお前ら好き勝手に質問と関係ない事ばかり言うじゃん
批判してくれる奴に感謝しろよw
444デフォルトの名無しさん
2017/11/20(月) 22:04:34.15ID:9xFKx2hL
質問と関係ないこと言ってもいいと思うけどなんでそれが駄目なのかな?
445デフォルトの名無しさん
2017/11/20(月) 22:24:58.18ID:Pkea+7u9
>>444
自分は質問と関係ない自分語りするけどそれを批判されるのは許せないってか?
どんだけワガママに育てられたんだお前は
446デフォルトの名無しさん
2017/11/20(月) 23:53:15.67ID:9xFKx2hL
>>445
感謝しろよ
447デフォルトの名無しさん
2017/11/29(水) 12:35:10.96ID:rUGEU7g7
ドカタ仕事の憂さ晴らしをここでやるのはやめてほしいと思うのです
汚い言葉を使うのは本人は無頼漢的にイケてるつもりかもしれないけど
側から見ると貧乏くさいのです
448デフォルトの名無しさん
2017/11/29(水) 15:23:49.10ID:3jZS2ju5
のです
449デフォルトの名無しさん
2017/11/30(木) 12:22:49.90ID:xlQjmi4Q
accessの条件付き書式について質問です。
FormatConditions.Add(acExpression,,
の後の式は変数を展開してくれないでしょうか?
また、関数の呼び出しも出来ないでしょうか?
例えばmonth関数は呼び出して戻り値が得られるのですが、自作関数だと呼び出せなくて困っています。
450449
2017/11/30(木) 21:43:31.97ID:xlQjmi4Q
解決しました。関数使えますね。変数はまだ試していませんが、たぶんダメでしょうね。
451デフォルトの名無しさん
2017/12/01(金) 18:18:22.33ID:pnEu13zx
Includeのようなことはできないでしょうか?
参照設定ではありません。

現在、ユーティリティ関数を集めたxlamファイルがあるのですが、中身が膨れ上がってきました。
機能単位でファイルを分割したいのですが、
そうすると今まで参照設定でutility.xlam1つで済んでいたのが、
utility_picture.xlam
utility_text.xlam
utility_workSheet.xlam ...
と、いくつも参照しなくてはならなくなります。

utility_xxx.xlamをすべてインクルードした1つのファイルを作り、
それを参照すればすべて使える、というようにしたいのです。

こういうことはできるでしょうか。
452デフォルトの名無しさん
2017/12/01(金) 18:51:00.09ID:eRljVU/z
似たようなことはできるんじゃね
453デフォルトの名無しさん
2017/12/01(金) 19:38:52.29ID:xB5YUWoV
>>451
ひとつのxlamがいくつの標準モジュール、クラスモジュールを持ってるの?
VBAでそんなに大きくなるイメージがいまいち湧かないんだが
454デフォルトの名無しさん
2017/12/01(金) 19:54:29.89ID:WVxyYcg9
なんでも詰めこめばいくらでも大きくなるだろw
どんだけ貧困なイメージ力だよw
455デフォルトの名無しさん
2017/12/01(金) 22:49:56.60ID:kRHH2X4z
なんでも詰め込んで大きくなったならダイエットしろというアドバイスになるだろw
456デフォルトの名無しさん
2017/12/02(土) 00:01:54.31ID:ab3YxIeg
ダイエットするとチンコも細くなるんじゃね
457デフォルトの名無しさん
2017/12/02(土) 00:51:50.91ID:aL/u+cy3
>>451
そういう運用は良いのかという問題がある。
それぞれのアドインがバッティングしないのなら、そもそもアドイン1つに纏めるべきじゃね?
カテゴリが別だからとか色々理由が有るんだろうけど、その理由がそのままいくつも参照すべきという理由になるだろ。

アドインを1つに纏めるべきかいくつも参照すべきのどちらかじゃね?
458デフォルトの名無しさん
2017/12/02(土) 10:54:25.96ID:7He58R5A
>>457
・プロジェクトエクスプローラが縦に長くなりすぎて使いづらい。
・巨大なクラスになるとfacadeパターンを使って分割しているのですが、
 その際に処理を委譲するクラス名にxxx_reader, xxx_outputter等つけています。
 ファイルを分けられれば単にreader, outputterで済むのですっきりさせたい。
この辺が分けたい理由です。
触るのが久しぶりだったので忘れていたのですが、a→b→cで参照が連鎖している場合、
a→cの参照がないとaからcの関数を呼び出せないだけで、プログラム自体は動くんですね。
いくつも参照でやってみようと思います。

>>453
単一目的のマクロ(そのutilityを呼び出す側)はそれほど大きくならないのですが、
画像操作、データシート処理のラッパー、デバッグ機能など
汎用的に使える機能をutility一つにまとめて行ったら大きくなってしまいました。
この辺を別ファイルにしようと思っています。
459デフォルトの名無しさん
2017/12/02(土) 12:26:31.44ID:zSxtsSJv
どうせ使う時は全部必要なんだろw
無駄なことすんなw
460デフォルトの名無しさん
2017/12/02(土) 13:17:30.17ID:7He58R5A
使うときは割と全部必要ですが、細かく分かれていないと
機能追加やリファクタリングが面倒なんですよ。
モジュールをディレクトリ分けしてツリー構造にするような
ことができれば一番いいんですが。
461デフォルトの名無しさん
2017/12/03(日) 00:26:04.64ID:R5bnWQiD
出来るかどうか知らんが
親のユーティリティで子を自動的に参照設定すればいいんじゃね
たしか参照設定もVBAからいじれたはず
462デフォルトの名無しさん
2017/12/07(木) 12:49:30.75ID:C5q9p8Fb
ほまは
463デフォルトの名無しさん
2017/12/09(土) 18:42:21.44ID:YxeiwW1g
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim objMe As Recipient
Set objMe = Item.Recipients.Add("[email protected]")
objMe.Type = olBCC
objMe.Resolve
Set objMe = Nothing
End Sub

検索すると出てくるこのプログラムだと、
再送しようとした場合、BCCが複数追加されてしまいます

Outlookで自動的にBCCを設置するプログラムは調べたら乗っているのですが
BCCに既に設定したいアドレスがあった場合は追加処理をしないというプログラムを追加したいです
464デフォルトの名無しさん
2017/12/09(土) 22:22:36.98ID:kQB3PqQK
>>463
変数objMeを宣言している行の直前に以下の処理を追加

Item.BCCプロパティに設定されている文字列を取得して、その中にdomonなんたらっていうアドレスが含まれているかどうかをInStr関数で調べる
含まれていたらExit Sub
465デフォルトの名無しさん
2017/12/10(日) 10:15:21.59ID:DS9ojUbh
ありがとうございます

間違えてメールアドレスそのまま載せてしまいました
やってしまった…

もう一度頑張ってみます
466デフォルトの名無しさん
2017/12/16(土) 05:30:44.06ID:LzUTFJWj
滅入るよね
467デフォルトの名無しさん
2017/12/18(月) 22:21:50.88ID:gUtmU3pD
Excelに「Python」搭載検討 Microsoftがアンケート実施中
https://headlines.yahoo.co.jp/hl?a=20171218-00000045-zdn_n-sci


Python知らんけど余計なことすんなボケ
468デフォルトの名無しさん
2017/12/19(火) 07:02:00.39ID:hrV3NPqq
VBAとPythonが併用できるのかな?
前例あるの?
469デフォルトの名無しさん
2017/12/19(火) 08:02:47.16ID:QIKPQsgo
一営利企業の一製品に過ぎませんから
470デフォルトの名無しさん
2017/12/27(水) 06:37:14.56ID:LSGNQ/gQ
ざんねん!
471デフォルトの名無しさん
2017/12/27(水) 11:51:23.41ID:3pB/qkZc
python入る言うてもどのバージョンかとかライブラリかとかアップデートはするのかとか色々課題あるだろ
472デフォルトの名無しさん
2018/01/25(木) 12:20:39.14ID:HAPJI9RJ
質問なのですが、別表の項目から他の表の項目(セルの位置)にデータを飛ばしたいんですが、できますか?
473デフォルトの名無しさん
2018/01/25(木) 12:55:31.94ID:MSU0yE0z
できます。
474デフォルトの名無しさん
2018/01/25(木) 13:07:55.93ID:HAPJI9RJ
ご教授ねがいたいのですが
475デフォルトの名無しさん
2018/01/25(木) 13:19:32.33ID:Hqq1J0vI
×ご教授
○ご教示
あと、見も知らぬ他人にタダで教えてもらうんならそれ相応の作法は必要じゃないのって、端で見てて思う
476デフォルトの名無しさん
2018/01/25(木) 13:38:48.56ID:ULmYwE81
>>472
もっと具体的にどんなのが作りたいか書いてもらわないと難しいです。

5列目を変更した時に同じシートの1列目を選択するようにしたい、とか。
あるいは、別のシートのA1セルを選択したいとか。

飛ばすといっても、そのタイミングが変更した時なのか、選択したときなのか、特定の数値が入ったときなのか。
477デフォルトの名無しさん
2018/01/25(木) 14:35:16.74ID:HAPJI9RJ
こんな感じの表Aがあって、似たような表Bが別シートにあるんですけど、
表Aのセルの色を付けると同時にB表のセルのイロを変える

または、セルの文字も一緒に持ってくる

できますか?
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚
478デフォルトの名無しさん
2018/01/25(木) 14:36:19.20ID:HAPJI9RJ
すいません、よろしくおねがいします
479デフォルトの名無しさん
2018/01/25(木) 16:44:16.87ID:WTDPcIn+
できるけど、コード教えてもらって、それを標準モジュールなり、sheet1モジュールなりに書き写せます?
それを使いやすいように改良できます?
480デフォルトの名無しさん
2018/01/25(木) 17:08:48.29ID:WTDPcIn+
できるって書いたけど、色を変えるのをイベントにするのは無理だから、マクロをボタンに登録するか、何かほかのイベントに割り当てるかしないとダメだわ。
481デフォルトの名無しさん
2018/01/25(木) 17:26:04.37ID:HAPJI9RJ
書き写しくらいはできます!
482デフォルトの名無しさん
2018/01/25(木) 18:45:37.13ID:/25QAGMM
>>477
RaiseEventを使う
483デフォルトの名無しさん
2018/01/25(木) 19:01:57.40ID:KaDWqQ6/
>>482
お忙しいのにみなさんありがとうございます
ちょっと詳しく説明すると、こんな感じです
左のsheetの表は一項目につき3段、その3段目の情報で仮にA,Bが記載されてある色つきのセルの情報のみを抜き出し、右にある別sheetの表に反映させたいのです

分かりづらかったらすいません

どのように組めば行けるのか、詳しく教えて頂くとありがたいです


VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚
484デフォルトの名無しさん
2018/01/26(金) 08:27:26.24ID:zry4uQ/L
指1本で核ボタン押せる
485デフォルトの名無しさん
2018/01/26(金) 08:28:00.51ID:zry4uQ/L
>>484
スマン激しく誤爆
486デフォルトの名無しさん
2018/01/26(金) 09:48:49.15ID:zry4uQ/L
おわび
御貴兄たち、何卒添削お願いします。変数colとかrowのほうが良かったな
Const OFFSET_X = 1
Const OFFSET_Y = 1
Const BLOCKS_Y = 3
Const WIDTH = 6
Const HEIGHT = 6
Private Sub CommandButton1_Click()
  Dim src As Worksheet
  Dim dst As Worksheet
Dim x As Integer, y As Integer
Dim des_x As Integer, des_y As Integer
  Set src = ThisWorkbook.Sheets("sheet2")
  Set dst = ThisWorkbook.Sheets("sheet3")
  dst.Cells.Clear
  des_x = 1 + OFFSET_X
  des_y = 1 + OFFSET_Y
  For y = 1 + 3 To HEIGHT * BLOCKS_Y Step 3
    For x = 1 To WIDTH
      If src.Cells(y, x + OFFSET_X).Value <> "" Or _
        src.Cells(y, x + OFFSET_X).Formula <> "" Or _
        src.Cells(y, x + OFFSET_X).Interior.ColorIndex <> xlNone Then 'エラー判定は無し
        src.Range(src.Cells(y, x + OFFSET_X), src.Cells(y, x + OFFSET_X)).Copy _
           Destination:=dst.Cells(des_y, des_x)
      End If
      des_x = des_x + 1
    Next x
    des_x = 1 + OFFSET_X
    des_y = des_y + 1
Next y
End Sub
487デフォルトの名無しさん
2018/01/26(金) 10:05:41.40ID:cX+GX3c5
これ色付き以外のセルにも文字列は入ってるんだよな?
488486
2018/01/26(金) 11:04:59.89ID:HJtMv0FJ
あー〜スマン
>表Aのセルの色を付けると同時にB表のセルのイロを変える
この仕様を見逃してたわ
見なかったことにしてくれ
489デフォルトの名無しさん
2018/01/26(金) 19:09:34.97ID:o3fzSqcU
>>487
入ってます
欲しいデータは1色で統一されてますが
ちなみに他に文字が存在しており、それらはほかの色で存在しています

>>488
お手数お掛けしております
ほんとにありがとうございます

色で判断をなくして、(条件で変えるので)>>483に書いてある欲しいデータ4種類を転記させるものでも良いのですが、難しいでょうか
490デフォルトの名無しさん
2018/01/26(金) 19:28:54.13ID:s5W3X/Fy
できると思うけど、見本の写真がよく見えない。
491490
2018/01/26(金) 21:06:22.97ID:K81AssZX
パソコンで見たら見えた。
これ、変更したところだけ反映したいの?
それとも、元表の3行目全てを反映したいの?
というか、データだけなら=で結べばいいのでは?
492デフォルトの名無しさん
2018/01/26(金) 21:17:19.09ID:o3fzSqcU
>>491
そこまでして見ていただいて申し訳ないです

三段目だけを反映させたいのですが、その手書きの表の列、行ともに結構長い表なのです
手っ取り早く一瞬で作れたらと思って質問した次第です
493デフォルトの名無しさん
2018/01/26(金) 21:21:20.15ID:Vo+OzJVu
Excel VBAスレいけば寄ってたかってみんなで教えまくってくれんじゃね?行けば?
494デフォルトの名無しさん
2018/01/28(日) 00:24:57.82ID:NUwCXosq
>>493
いまはゴキブリが湧いてるからあっちは行かない方が良さそう
495490
2018/01/28(日) 01:47:10.17ID:xXGJMKWE
>>492
結構長いというけど、どれくらい?
数十列数十行くらいで、1回だけなら右にオートフィルして、行ごとコピペするのが早いと思う。
=で繋ぐだけなら1回やっておけば、あとは自動でかわる。

マクロでやるとしても、数式で=を入れればいいのか、値を持ってくるようにした方がいいのか。
表の範囲指定はどうするか?
current.regionか、usedrangeか、直接指定するか。(元の表に罫線が引いてあるか、空欄があるかで変わってくる)
496デフォルトの名無しさん
2018/01/28(日) 14:19:41.49ID:Erw8GBm0
数式だって絶対参照、相対参照をきちんと意識して書けばRange=数式でアドレスに併せて変えてくれるから1回の代入で終わる。

以外と知らずに1セルずつ代入する人もいるけど。
497デフォルトの名無しさん
2018/01/28(日) 14:51:25.14ID:fbEFMaxh
>>495
3段目に毎回同じ文字がくるとは限らず、最低3種類の文字がくるので、とりあえずif分使って作成しました

横に日数1年分、縦に各項目50程です

絵にある通り、全く同じ表をコピペして使いますが(線あり)、ほんとは転記先の表は1段で済ませたい所でした
日替わりで最低3種類のうちのひとつが返ってきたらいいので

わかりづらくてすいません
498デフォルトの名無しさん
2018/01/28(日) 14:52:48.13ID:fbEFMaxh
>>496
そうなんです
やり方を知らないので今は1セルずつ代入しています
499490
2018/01/28(日) 17:27:50.85ID:z3VzjyNA
>>498
fast-uploader.com/file/7072682105190/

目的のものと全然違うかもしれないけど作ってみました。
データの最初のセルだけは自分で指定してください。
500490
2018/01/28(日) 17:29:06.20ID:z3VzjyNA
パス 0128
501デフォルトの名無しさん
2018/01/28(日) 18:08:34.70ID:745uG8BQ
>>499
乙です
老婆心ながらアップする前に「ブックの検査−ドキュメント検査」したほうがよろしいかと。
502499
2018/01/28(日) 18:41:56.85ID:UOLejiJq
サンクスです。
渡辺明さんになるところだったか。
503デフォルトの名無しさん
2018/01/28(日) 21:37:23.53ID:4m06L1KL
>>499
見れないのですが、消されたのでしょうか
504デフォルトの名無しさん
2018/01/28(日) 23:12:38.58ID:Erw8GBm0
>>498
やり方も何も、例えばA1からA列に1、2、3、・・・と入力されてるとしてRange("B1:B10").Value="=A1"を動かしてみな。
全部A1を参照したいならRange("B1:B10").Value="=$A$1"とする。
本当はValueではなくてFormulaだけどValueでもちゃんと相対参照してくれる。
505499
2018/01/28(日) 23:23:45.53ID:9bi4pzKP
fast-uploader.com/file/7072704922415/

パス 0128
506デフォルトの名無しさん
2018/01/29(月) 00:30:08.47ID:flk0qVid
>>504
>>505
みなさん、無知ですみません
ほんとに助かります
ありがとうございます

>>505
ひとまずダウンロード致しましたので明日内容を確認します
お時間割いて作っていただいて、ただただ感謝です
おやすみなさい
507デフォルトの名無しさん
2018/01/29(月) 00:48:46.52ID:rWIIKeXW
下から5行くらいにtext ってあるの、valueに直した方がいいかも。
textでも問題ないかもしれないけど。
508デフォルトの名無しさん
2018/01/29(月) 08:59:53.06ID:flk0qVid
おはようございます

昨日ダウンロードさせてもらったファイル開かないのですが、どうやったら開きますか?
509デフォルトの名無しさん
2018/01/29(月) 18:12:06.82ID:acQcDZwj
エクセルのバージョンは?
当方2013で開けましたよ。
510デフォルトの名無しさん
2018/01/29(月) 21:31:37.99ID:flk0qVid
>>509
2010です

すいません、どうやって開きました?
511デフォルトの名無しさん
2018/02/03(土) 14:43:09.33ID:xQQ90zOV
プログラマですがvbaの初心者です。
C,java,lisp,python 基本的な言語とその意味論はだいたい知ってます。
vbaで書籍を探すと、大抵業務問題の解決という文脈で本が書かれているようですが
純粋に言語的な機能を抽出した言語仕様、あるいはリファレンスに相当するものを求めています。

そのような書籍のうちもっとも簡潔に記述されているような本はないでしょうか?
512デフォルトの名無しさん
2018/02/04(日) 02:06:08.04ID:Nq0C9+DR
>>511
本職のPGならマイクロソフトのディベロッパーセンターの英語版リファレンスを直に読んだ方が良い
あと、場合によってはVBAとほぼ同じシンタックスになってるVB.NET用のMicrosoft.Office.Interopクラス以下の各アプリケーションのオブジェクトのリファレンスの方が役に立つこともある
513デフォルトの名無しさん
2018/02/04(日) 09:03:45.01ID:PHOmwLAR
テスト
514デフォルトの名無しさん
2018/02/04(日) 09:08:27.88ID:PHOmwLAR
VLOOKUP関数の応用で、2列のリストがあり、検索セルではどちらかを入力するともう片方が入力されるものをVBAで作りたいのですが、、、
515デフォルトの名無しさん
2018/02/04(日) 09:30:57.37ID:VbMnR6W2
>>514
左をキーにしてvlookup 、次に左をキーにしてvlookup すれば良いんじゃないか?
右と左に同じ内容が存在するとダメだけど。
516デフォルトの名無しさん
2018/02/09(金) 20:30:22.36ID:fQxgZtkH
テスト
517デフォルトの名無しさん
2018/02/12(月) 15:08:18.20ID:IVihLGwq
グラフを作成するときにXValuesってすべての系列で統一しないといけないんですか?
x1={0., 1., 2.}, y2={0., 1., 4.}
x2={0., 0.5, 1., 1.5, 2.},y2={0., 0.25, 1., 2.25, 4.}
みたいな2つの系列があったときにplot(x1,y1), plot(x2,y2)みたいに扱いたいのですがどうしたらいいでしょうか
518デフォルトの名無しさん
2018/02/15(木) 06:58:28.28ID:oNAH0wTr
特定のフォルダ内のすべてのブックにC列に複数存在する特定の文字列『a』のすべてに対して右隣のセルに文字列『aa』を入力して、さらに同じシート内でC列に複数存在する特定の文字列『b』のすべてに対して右隣のセルに文字列『bb』を入力するようにしたいのですがどのような感じになりますでしょうか?
519デフォルトの名無しさん
2018/02/16(金) 06:08:56.24ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
520デフォルトの名無しさん
2018/02/17(土) 15:07:23.94ID:1VKCp1qU
518ですが、自己解決しました。
521デフォルトの名無しさん
2018/02/19(月) 16:09:20.27ID:CaXwZ0Gg
vbacでmdbファイルをcombineしていると、「このアクションを実行するとプロジェクトがリセットされます。実行しますか?」というダイアローグが出てくるのですが、回避策をご存じの方いますか?
522デフォルトの名無しさん
2018/03/07(水) 08:26:06.09ID:tPOSTBDK
VBA初心者です。
省略可能なキーワードOptionalに関して質問がございます。
・質問内容
以下のコードにおいて、なぜ"ABC"が2回繰り返されるのでしょうか?
Optionalで指定した1が初期値としてtmpに格納され、For〜Nextステートメントの処理が0〜1となり、回答は”ABC”のみだと考えました。

・コード
Sub Sample1()

Call Sample2

End Sub

Sub Sample2(Optional tmp As Long = 1)

Dim i As Long
For i = 0 To tmp
Debug.Print "ABC"
Next i
End Sub

基礎的な質問で恐縮ですが、ご解説いただければ幸いです。
よろしくお願いします。
523デフォルトの名無しさん
2018/03/07(水) 09:34:45.98ID:1c1zt9Ui
>>522
0も1回と数えるから、i が0の時に1回、1の時に1回、合計で2回です

For i = 1 To tmp
にすれば1回になるよ
524デフォルトの名無しさん
2018/03/08(木) 09:50:20.87ID:kgkGNmtQ
>>523
解説頂きましてありがとうございます。
0も1と数えるのはややこしいですね。。
しっかり復習します。
525デフォルトの名無しさん
2018/03/08(木) 17:16:49.20ID:1OkrDYdr
配列は0スタートとか知っておいたほうが良い(VBAの場合はOption Baseで切り替えられるけど)
526デフォルトの名無しさん
2018/03/08(木) 18:23:37.87ID:bSaoLb8p
>>524
理屈で覚えればややこしくはないぞ。
配列の添字は距離のようなもので、「当該配列の1個目の要素のポインタを起点としたときに、そのポインタにどれだけ(何回)加算した場所に、その要素の格納されているメモリが存在するか」を示す数字。
1個目の要素から1個目の要素に移動するための加算回数=距離は0だから、1個目の要素にアクセスするときの添字は0になる。
527デフォルトの名無しさん
2018/03/08(木) 20:23:06.52ID:wcvra3LB
>>514
if文でセルの指定範囲の時実行で1列目の時と2列目の時で分けたらどうですか?
528デフォルトの名無しさん
2018/03/08(木) 21:31:26.55ID:Tr04o/zO
>>525
0スタートどころか-100スタートとかも可能
529デフォルトの名無しさん
2018/03/08(木) 21:40:28.86ID:Og1NJDFT
こればかりはプログラマーを混乱させるために導入されたとしか思えない謎仕様
530デフォルトの名無しさん
2018/03/09(金) 07:32:15.03ID:KC7p8RhA
こんなので混乱してるのはお前だけじゃね? w
531デフォルトの名無しさん
2018/03/09(金) 19:02:04.18ID:M2r/B6Zk
>>530
お前はバカなんだからしゃべるな
532デフォルトの名無しさん
2018/03/09(金) 19:32:06.94ID:CekgNpjO
>>531
配列添字の範囲指定なんてPascalの時代からあるのにバカって悲しいな w
533デフォルトの名無しさん
2018/03/09(金) 19:47:08.42ID:M2r/B6Zk
>>532
あれ?発言を許可した覚えはないけど?
534デフォルトの名無しさん
2018/03/10(土) 04:04:01.67ID:hJ8m/Sii
>>529
C#だとint[] intArray = new int[2]で要素は[0] と[1]になるんだが、
vbaだとdim Array(2) as Longが0,1,2の三つになるからたまにコンパイルエラーで悩む。Collectionは一から始まるが
Dictionaryは0からというのもたまに嵌る。
535デフォルトの名無しさん
2018/03/10(土) 12:36:10.36ID:f+B2oLbA
>>534
> vbaだとdim Array(2) as Longが0,1,2の三つになるからたまにコンパイルエラーで悩む。
0,1,2になるか1,2になるかはOption Baseによる
コンパイルエラーは意味わからんが

>>533
お前が黙っとけよ w
536デフォルトの名無しさん
2018/03/11(日) 13:41:16.21ID:1qbV0tMy
>>535
オマエも黙っとけハゲ
537デフォルトの名無しさん
2018/03/11(日) 14:02:07.49ID:z1FVyjSJ
>>536
お前もなー
538デフォルトの名無しさん
2018/03/11(日) 14:18:05.90ID:AoygmFYl
ExcelのCellsの添え字が1オリジンだからデフォルトで使うしかない
539デフォルトの名無しさん
2018/03/11(日) 16:09:32.52ID:auu5o0Ru
>>535
cell番地が1から始まるからbaseも1じゃなきゃ書けないバカはレス禁止
540デフォルトの名無しさん
2018/03/11(日) 16:12:01.55ID:ULAXnW5C
Cellsはコレクションオブジェクトを返すプロパティ関数だから、インデクサが1オリジンなのは文法上当たり前
541デフォルトの名無しさん
2018/03/11(日) 16:16:16.76ID:auu5o0Ru
>>540
配列の話してんだよバカチョン黙ってろや
542デフォルトの名無しさん
2018/03/11(日) 16:36:25.15ID:z1FVyjSJ
>>539
誰にレスしてんだよ、ボケ w

>>540
アホすぎ、そんなもん仕様によるだろ
543デフォルトの名無しさん
2018/03/11(日) 17:04:17.63ID:sEfAJdP7
Excelが開発された当初はまだ0の発見前だったからだろ。
今作るなら0から始まるようになる。
544デフォルトの名無しさん
2018/03/11(日) 19:02:59.32ID:lvju0XX+
あーこれはスベったな
545素人
2018/03/11(日) 22:39:56.16ID:/xAIuEgQ
こんばんは! おしえてください!
VBAでフリーフォームを書いたり、既にあるフリーフォームの頂点編集をしようとしています。
書く方は上手くいって、Shapes.BuildFreeformに、AddNodesコマンドで10点頂点を追加して、
楕円を書きました。

続いて、頂点の編集を行うべく、書かれたshapeのnodesや、Verticesで頂点情報を取得したら、
なぜか30点あります。ベジェ曲線で描かれた頂点の座標はもう残っていないのでしょうか??
546デフォルトの名無しさん
2018/03/15(木) 07:48:53.70ID:O8Mn8lcP
>>545
コード貼ればレス付くかも
547デフォルトの名無しさん
2018/03/24(土) 15:42:57.45ID:5WWUtLn7
こんにちは。
VBA初心者です。
Excelで知恵袋のような社内用のQ&Aを作成中です。
質問フォームに入力すると質問が縦に書き込まれていくところまで作りました。
しかし回答を質問に対応させることができません。
回答は対象の質問の横に入力されていくように作りたいですが、どうしたらよろしいでしょうか。
教えて下さい。

分かりづらいかもしれませんが、下記のように作りたいです。

質問1 回答1 回答2 回答3…
質問2 回答2-1 回答2-2…
質問3
548デフォルトの名無しさん
2018/03/24(土) 17:19:37.49ID:S4dIExI6
シートを別にする
質問ごとにIDを振って回答にその質問IDを保持させる
549デフォルトの名無しさん
2018/03/25(日) 18:51:44.63ID:S3aSBsrx
いけそうです。ありがとうごさいました。
550デフォルトの名無しさん
2018/04/26(木) 06:16:16.15ID:5eP/vpMI
htmlからidやnameに属さない、独自の名前を付けられた値を取得したいです。
<li id="result_1" result-rank="1" data-original="hoge">
<li id="result_2" result-rank="2" data-original="fuga">
・・・
<li id="result_123" result-rank="123" data-original="hage">

data-original="hoge"の「hoge」を取得したいです。
常にidのresult_1を取得したいわけではなく、またidの値も検索結果によっては変動します。
data-originalは必ずliタグの中にあります。
htmlは変更できません。

ウィザード級の方々何卒お力をお貸しくださいませ。m(_ _)m
551550
2018/04/27(金) 04:34:25.39ID:HRYENVs1
自己解決しました。
552デフォルトの名無しさん
2018/04/27(金) 17:39:47.51ID:Ewgb7+aM
ExcelVBAの質問です
adodbStreamを使って、jisコード(ISO-2022-JP)で書かれたテキストファイルを読み込んで色々するマクロを作っています
対象のテキストは1行120バイトのレコードが何行も含まれるという体裁になっているファイルです
このファイルを入力ファイルに指定したところ、なぜか3行目のみ最初の12バイト分が読み込まれません
レコードの内容を変えて何度か試してみたのですが、決まって3行目のみ行頭の12バイトが抜け落ちてしまいます
adodbを使う際に何か必要なことがあるのでしょうか?
553デフォルトの名無しさん
2018/04/27(金) 17:40:39.83ID:Ewgb7+aM
上げておきます
554デフォルトの名無しさん
2018/05/07(月) 00:53:53.60ID:Zjii9/TV
Webにあるスクリプト入れても動いたり動かなかったり
厳しいね、これは。
555デフォルトの名無しさん
2018/05/11(金) 11:32:55.94ID:Vbz54Hwk
ファミコンゲームを再現したいんですが、単純な構造のゲームってありますか?
556デフォルトの名無しさん
2018/05/11(金) 12:17:07.84ID:Pz/tQeeR
シート1のA44:I44のセルの内容を、マクロでシート2の最後列に貼り付けていきたいです。
下記のマクロだと、シート1のA44のセルをシート2の最後列のAのセルにのみ、コピーするだけになってしまいます。
どう変更すればいいのか、よかったら教えて頂きたいです。
よろしくお願いします。

Sub テスト()
Dim LastRow As Long
With Worksheets("シート2")
LastRow = Worksheets("シート2").Range("A"&Rows.Count).End(xlUp).Row + 1
Range("A"&LastRow).Value=Worksheets("シート1").Range("A44:I44").Value
End With
End Sub
557デフォルトの名無しさん
2018/05/11(金) 12:32:44.52ID:p+/wpzED
>>556
Resizeで貼り付ける範囲を広げてあげる
幅を9セルにしたいならResize(, 9)って付け足す
558デフォルトの名無しさん
2018/05/11(金) 15:54:14.26ID:Pz/tQeeR
>>557
できました!ありがとうございました!
559デフォルトの名無しさん
2018/05/23(水) 19:25:31.94ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

HCSP8
560デフォルトの名無しさん
2018/05/24(木) 10:45:12.88ID:cPlRxlDn
HCSP8
561デフォルトの名無しさん
2018/05/30(水) 16:34:41.89ID:C5TotkC4
VBAってリボンにメニューを作成出来る?
562デフォルトの名無しさん
2018/05/31(木) 12:50:35.76ID:TWLhtyG5
できるよ
563デフォルトの名無しさん
2018/05/31(木) 22:00:54.69ID:mTNxmz5w
出来ないだろ
564デフォルトの名無しさん
2018/05/31(木) 22:10:43.12ID:tlOTml64
シートにボタンがいくつかあって、押したときの処理が結構複雑なんです
とりあえずclickedをシートモジュールに書いて、そこから呼び出される関数も全部シートモジュールに書いたら分量がすごいことになりました
やっぱりクリック検出だけにしぼって残りは全部標準モジュールにすべきなんですかね。そのシートでしか呼び出されないわけで分けるのも分かりにくいような気もして
565デフォルトの名無しさん
2018/05/31(木) 23:13:50.53ID:eZ3BghFT
>>563
Excel2003までのツールバーにメニュー追加するコードを書くと2007以降ではリボンにメニューが追加されるけど違う話かな?
566デフォルトの名無しさん
2018/07/02(月) 19:23:11.48ID:kZ0RH16R
Access2016でコンボボックスの規定値をnullから1へ変更したくて
フォーム!コンボボックス.DefaultValue = """1"""とするフォーム上は1と表示されるんだが、プロパティーシート上は全く変化なくて、フォームをとじてから開くと規定値が変わっていなくてNullのまま。
VBAからは既定値の変更が出来ないのかな?
567デフォルトの名無しさん
2018/07/04(水) 18:36:07.99ID:uOrTSuCX
フォームを閉じるときに変更を保存しなけりゃ普通に考えてもとに戻るわけだが
568デフォルトの名無しさん
2018/07/04(水) 19:06:38.06ID:SBPTcvBw
>>567
仰るとおりでした
569デフォルトの名無しさん
2018/07/04(水) 22:40:17.29ID:gFgZc5FG
5OK
570デフォルトの名無しさん
2018/07/06(金) 12:23:43.73ID:uTPDH9XV
5OK
571デフォルトの名無しさん
2018/07/26(木) 23:25:17.04ID:10W3NzaF
ここはjscriptはアカンけ?outlookをjsで弄りたいんだが
572デフォルトの名無しさん
2018/07/27(金) 11:07:24.57ID:zSlylfXh
Jscriptなら近いのはVBSじゃないか?
573デフォルトの名無しさん
2018/07/27(金) 11:15:30.85ID:OAh4kN9K
HTAとか
574デフォルトの名無しさん
2018/08/01(水) 19:27:32.96ID:sloNm1e3
Wordで読みとり専用推奨で保存されてるファイルをVBAで書き込み可で開いて編集して上書き保存したいんですが、やる方法はありますか?
575デフォルトの名無しさん
2018/08/01(水) 22:01:52.24ID:oaZVWoyy
読み取り専用推奨なんて属性ビットがあるのか?
576デフォルトの名無しさん
2018/08/01(水) 22:05:26.28ID:oaZVWoyy
マジだったカオスと思ったが
開くと読み取り専用か聞いてくるのか

まあ、OS側でなくワード側で制御してそうだから、回避は厳しそうな気がする
577デフォルトの名無しさん
2018/08/01(水) 22:15:26.91ID:HUVD91D/
カオス言いたい年頃なのでどうか大目に見てやって下さい
578デフォルトの名無しさん
2018/08/01(水) 22:18:30.88ID:NozJFPGH
カオスは天地が分かれる前の状態 あるいは光と闇が分かれる前の状態
579デフォルトの名無しさん
2018/08/01(水) 22:21:17.59ID:6UiRsc0v
カオスエンジェルで抜いた
580デフォルトの名無しさん
2018/08/02(木) 00:14:28.59ID:isxfR7GW
>>576
VBAを使わずにファイルを開いてダイアログのウィンドウをつかまえて「いいえ」ボタンにメッセージを送るという力技ぐらいしか方法はないんでしょうか?

Excelでは開くときにIgnoreReadOnlyRecommenedというのを指定すれば良さそうなんですが
581デフォルトの名無しさん
2018/08/02(木) 01:48:50.77ID:I4e8JJGh
document.openメソッドにも引数readonly があるみたいだけど
582デフォルトの名無しさん
2018/08/02(木) 08:52:11.65ID:L3mOQQ2h
>>581
ReadOnlyにFalseを渡しても読みとり専用で開かれるのは確認済みです
583デフォルトの名無しさん
2018/08/02(木) 12:49:47.07ID:rM6odxjs
>>574
ありません。
Wordは手動でやるしかない。
Excelとは違いますから。
584デフォルトの名無しさん
2018/08/02(木) 18:55:35.87ID:kRv3+o5C
>>580
VBAでもその力業で出来るけどね。
でも読み取り専用推奨で保存する目的はそのメッセージを出すことにあると思うからそれをスキップするコードを書くべきかという問題もある。
585デフォルトの名無しさん
2018/08/02(木) 19:38:51.82ID:CFW8XzdE
>>582
すくなくともうちの環境では、ReadOnly:=Falseで書き込み可能で開いてるけど?
その状態からReadOnlyRecommended = Falseにして保存したら、読み取り専用推奨は外れてるが

まあうちの環境がかなり古いから最近では出来ない可能性もあるが
それホントに推奨なだけなのか?
586デフォルトの名無しさん
2018/08/02(木) 20:14:42.01ID:L3mOQQ2h
>>585
試した環境はWord2010ですがここに書いてある通りです。できません。

https://support.microsoft.com/en-us/help/275976/word-document-opens-as-read-only-when-you-try-to-programmatically-open
587デフォルトの名無しさん
2018/08/02(木) 21:07:22.34ID:CFW8XzdE
>>586
じゃあ2010から出来なくなったんだな
うちの2007ではできてるから

ただそこの文書
Note The following example applies to Word 2003 and 2002:
とか書いてあるな
Last Updated: Apr 19, 2018
らしいけど、適用対象バージョンがよくわからんな
588デフォルトの名無しさん
2018/08/08(水) 01:24:38.39ID:vu1bVHsA
ACCESSでオートルックアップクエリを使用したフォームでマスタにないものを入力した際、
フィールドとキーが一致しているレコードをテーブルで探すことができません。
と出ますが、マスタにないデータを入力しようとしたとき、上のメッセージを出すことなく、マスタ登録用フォームを呼び出すにはどうすればよいでしょうか?教えていただけると助かります。
589デフォルトの名無しさん
2018/08/22(水) 19:57:58.33ID:I61xiysx
スパークラインをVBAで挿入したいんだけど範囲指定のところがうまくいきません。
わかる方いたら教えてください。よろしくお願いします。

call cells(10 , h ).SparklineGroups.Add(xlSparkLine, "n5: n100")

"n5: n100" のところなのですが、 
range(worksheets(h).cells(14,5) , worksheets(h).cells(14 , G ))

のようにして ワークシートごとの数値群をスパークラインにしていきたいのですが、、、
何か良い方法を教えてください。
よろしくお願いします。
590デフォルトの名無しさん
2018/09/02(日) 12:36:29.88ID:/2qGDDvp
質問 
Outlook2010なのですが
受信トレイの検索(Ctrl+E)で「請求書」を検索するのと同じ動作を
VBAにしたいのですがどのように記述すればいいのでしょうか
ボタンに登録して使うつもりです。

OutlookVBAを使うのは初めてでしてお手引きをお願いいたします
591デフォルトの名無しさん
2018/09/02(日) 16:03:58.04ID:v7+8Ol2A
VBAで質問です
【前提】
・デスクトップにフォルダA
・フォルダAの中に9月1日分のExcelファイル"0901"とマクロ作動用の.xlsmファイル

【したいこと】
・フォルダAの中に9月2日分のフォルダ"0902"を作成
・"0901"を開き、B2セルの2018/9/1を2018/9/2に書き換え
・フォルダ"0902"内にファイル名を"0902"にして保存 


日毎のレポートのひな形を作ろうとしています
あまり知らないながら書いてるのですがエラー出まくりで泣きそうです
592デフォルトの名無しさん
2018/09/02(日) 16:16:35.28ID:7fXcCHFS
>>590
Application.Searchメソッド、もしくは
Application.Session.GetDefaultFolder(olFolderInbox).GetTable(DASLクエリの引数) を使えば良いのでは
593デフォルトの名無しさん
2018/09/02(日) 16:51:32.22ID:Q0JGCJ3q
>>591
悪いこと言わないから、手でやるか詳しい人に頼みなさい
複数のブックが同時に開かれている状態でのVBA処理には
いろいろ面倒なところがあり、経験が必要
5ちゃんでサクっと説明できるものではない
しかもフォルダ処理も伴っているので、エラー処理を含め
きっちり作ろうとするとけっこうな規模のアプリになってしまうと思う
594デフォルトの名無しさん
2018/09/02(日) 17:27:55.14ID:1l6OdzeH
>>591
thisworkbook.path\フォルダA\0901を開いてあとはブック名から指定して必要事項を書き換え。
ブック名を指定してsaveAsで
thisworkbook.path\フォルダA\0902で保存。


蛇足だが、必要無くともブックもシートも常に指定した方が良い。
595デフォルトの名無しさん
2018/09/02(日) 17:44:00.59ID:GR8jnF/5
>>591
とりあえず作ったコードを晒せば色々添削してもらえるかと

>>593
回答できないなら黙ってなよ
596デフォルトの名無しさん
2018/09/02(日) 18:16:50.42ID:dkuRxOF+
おそらくやりたいことはこんな感じだろう。
0901ファイルを開いた状態で、9月2日当日にレポートを作成する前提。
0901ファイルを修正するという話だったからその通りにしたけど、本当ならここはテンプレートファイルから書き起こすようにするべきだと思う。
テスト実行してないので、エラーが出たらごめんなさい。

Sub CreateDailyReport

Dim Report As Workbook
Set Report = Application.Workbooks("0901")
'テンプレートから新規ファイルを作成するなら以下のように変える
'Set Report = Application.Workbooks.Open(テンプレートのパス)

Report.Worksheets("Sheet1").Range("B2").Value = Format(Date, "yyyy/mm/dd")

Dim PathString As String
PathString = Thisworkbook.Path & "¥" & Format(Date, "mmdd")

If Dir(PathString, vbDirectory) = "" Then MkDir PathString

Report.SaveAs PathString & "¥" & Format(Date, "mmdd") & ".xlsx"

Report.Close

End Sub
597デフォルトの名無しさん
2018/09/02(日) 18:17:42.72ID:1ZQrBI0R
593の言うことは間違ってないと思いますよ。
598デフォルトの名無しさん
2018/09/02(日) 21:02:04.61ID:/2qGDDvp
>>592
Application.AdvancedSearchして
Searchオブジェクトを検索フォルダーにSaveするっていうことですかね

単純にVBAでCrtl+Eのクイックサーチ(?)する方法があればと思ったのですが
無理っぽいですね
ありがとうございました
599デフォルトの名無しさん
2018/09/06(木) 16:40:58.45ID:KlP6yXrE
初歩的な質問でごめんなさい
うまくできません

If IsNumeric(myN) Then
Range("A1").Value=Range("A1").Value + myN

End If

myNが1の時と2の時があるとしてセルA1の値を3にしたいのですが
やってみると12っていう風に数字が並んでいってしまいます
どうしたらいいでしょうか
600デフォルトの名無しさん
2018/09/06(木) 19:12:55.41ID:iNH/PWkM
>>599
もしmyNがString型、あるいはObject型に文字列データが入っている場合は数値型に変換する必要がある
Range("A1").Value = Val(Range("A1").Value) + Val(myN)
でいいんじゃないかな
601デフォルトの名無しさん
2018/09/06(木) 19:23:08.77ID:KlP6yXrE
>>600
String型になっていました
参考にしてもっと勉強します
お付き合いくださりありがとうございました
602デフォルトの名無しさん
2018/09/21(金) 21:15:16.71ID:Fm9zyYJ3
超初心者です。

Googleの検索窓に「VBA」と入力する サンプルコード
https://vba-code.net/ie/set-value-to-textbox/) を実行してみましたが、
objIE.document.getElementById("gbqfq").Value = "VBA"のところで
「実行時エラー 424 オブジェクトが必要です。」となって動きません。

「標準モジュールに以下のコードを追加して」の意味が分からないので、
標準モジュールをどう書いたらよいのか、どこに追加したらよいのかわからず
サンプルコードのみを実行しました。

どなたか親切な方、対応方法を教えてください。
難しいことはわからないので具体的にコードを書いてもらえると嬉しいです。
よろしくお願いいたします。
603デフォルトの名無しさん
2018/09/21(金) 22:26:39.22ID:9i7TQATj
>>602
>>objIE.document.getElementById("gbqfq").Value = "VBA"

objIE.Document.getElementById("lst-ib").Value = "VBA"
604デフォルトの名無しさん
2018/09/21(金) 22:40:18.36ID:Fm9zyYJ3
>>603
ありがとうございます!
できました!!!
なんか分からないけど動いて嬉しいです!
頑張ります。
605デフォルトの名無しさん
2018/09/21(金) 22:42:58.72ID:MqKbhYRD
>>604
おう頑張れ!わからんかったらまたいつでも聞いてくれな!
606デフォルトの名無しさん
2018/09/21(金) 23:16:58.27ID:Fm9zyYJ3
>>605
ありがとうございます!

同じことを別のホームページでしたくて、
URLと入力するところを変えてみたのですが、
実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしていませんとなって動きません。
ホームページは

https://www2.smile-etc.jp/NASApp/etcmlg/MlgReq;jsessionid=0001kXELRCuGax2mjI7VtXa12rz:15fqn57ku?gvlddpef=1011100000&mdwsetmb=1011120000の画面でしたくて、


入力するところは
objIE.document.getElementsByName("Name1Kana").Value = "マイレージ"としてみました。

お時間あるときでよいので出来たらお願いします。

仕事で毎日同じような入力ばかりしていて自動化できるところをできたらいいなと思っているのですが、超初心者にはハードルが高くて難しいです 涙

'
607デフォルトの名無しさん
2018/09/21(金) 23:29:19.39ID:m8DL5ZJ4
getElementById("gbqfq")
getElementById("lst-ib")

君は、この違いがわからないの?
HTML, DOM, CSS, JavaScript とか知らないの?

VBA には関係ないのだけど。
全言語・プログラミングに共通の話題なんだが
608デフォルトの名無しさん
2018/09/21(金) 23:59:36.29ID:Fm9zyYJ3
>>607
すみません、わかりません。
609607
2018/09/22(土) 01:01:33.83ID:DCTpeoPT
HTML に書いてある、ID だよ

ウェブページは、HTML(DOM), CSS, JavaScript で出来ている。
ブラウザでF12 を押すと、開発者ツールが起動するだろ

これらを知らないと、ウェブ開発はできない!

VBA とは、全く関係ない
610デフォルトの名無しさん
2018/09/22(土) 03:52:07.76ID:AiTHsE5Z
>>609
>>609
知識もないのに場違いな質問をしてしまいすみませんでした。ご親切にありがとうございました。
611デフォルトの名無しさん
2018/09/22(土) 09:42:45.32ID:AiTHsE5Z
>>606
自己解決して、自動入力マクロができました!ありがとうございました。
612デフォルトの名無しさん
2018/10/12(金) 07:52:16.28ID:OKfVsW46
VBAでできることはC#でもやることはできますか?
613デフォルトの名無しさん
2018/10/12(金) 07:55:38.55ID:/wsNoZ03
できます
614デフォルトの名無しさん
2018/10/12(金) 09:20:25.16ID:dGKqHjcm
ユーザー定義関数の作成以外ならなんでもできます
615デフォルトの名無しさん
2018/10/12(金) 09:54:55.01ID:TjU2aakC
それにしても、なんで、マクロはFunctionしかcall出来ないんだろうね。
無駄にFunctionを作らないようにと英語の本には書いてある。Subで済むもをFunctionにするなと書いてある。
なのに、マクロの仕様のために、無駄にFunctionをつくったり、SubをcallするだけのFunctionを作ったりしないといけないのは間抜けな仕様だと思うがどうだろうか?
616デフォルトの名無しさん
2018/10/12(金) 10:38:39.78ID:/wsNoZ03
>>614
それもC#で可能

>>615
ちょっと何言ってるかわかんないですね
617デフォルトの名無しさん
2018/10/12(金) 10:53:20.05ID:TjU2aakC
>>616
マクロからSubをCallできないのは知ってますか?
618デフォルトの名無しさん
2018/10/12(金) 12:09:03.01ID:bZOmvKy4
>>617
知らないです
私の知ってるマクロだとsubもcallできるので
619デフォルトの名無しさん
2018/10/12(金) 12:28:42.41ID:YStpcFYj
>>616
本当に?
ワークシートからDLL関数をCallするためのインターフェースだけはVBAネイティブのFunctionとして書かなきゃいけないと思ってた
ワークシートから直接C#ソースの関数をCall出来るってこと?

>>615
SubもCall出来る
というかSubは本来Subroutineのことを指すのでそもそもCallできなきゃおかしい
620デフォルトの名無しさん
2018/10/12(金) 14:32:33.06ID:E7u6qrbY
あれ?エクセルは出来るの?
アクセスは駄目なんだよ
621デフォルトの名無しさん
2018/10/12(金) 17:15:46.40ID:QO2uhWCP
VBAしか使わない人間は、WinAPI使わない人間はSubしかCallしない。
622デフォルトの名無しさん
2018/10/12(金) 17:26:32.07ID:Vm21lImY
VBAより日本語がおかしい
623デフォルトの名無しさん
2018/10/12(金) 17:45:20.75ID:TjU2aakC
なんでAccessはマクロからSubを呼び出せない仕様なんだろうか?
624デフォルトの名無しさん
2018/10/12(金) 17:45:47.46ID:TjU2aakC
つーか、ここはExcelのスレなのかな?
625デフォルトの名無しさん
2018/10/12(金) 18:11:30.85ID:Zsf/ZX4u
Accessでも出来るぞ
626デフォルトの名無しさん
2018/10/12(金) 18:20:18.57ID:4bQjrfTH
ほんとに?MSのサイトに対処方法が書いてあったけどなあ。
仕事で使ってたmdbでエラー出まくってSubをFunctionに書き換えた記憶があるけどなあ
627デフォルトの名無しさん
2018/10/12(金) 18:45:46.09ID:S2JrLclJ
意味が分からん。
ExcelだろうがAccessだろうが当たり前にできる。
やり方間違えてるだけだろ。

lngRet = FuncA("何かの引数")
Call SubA("何かの引数", "何かの引数2")
これはできる。

SubでCallを省いた場合に
SubA("何かの引数1", "何かの引数2")
とするのは出来ない。

Callを省く場合は
SubA "何かの引数1", "何かの引数2"
とする。
628デフォルトの名無しさん
2018/10/12(金) 19:05:34.79ID:TjU2aakC
>>627
AccessとExceの用語の違いが問題かもしれません。
Accessだとマクロのデザインビューで新しいアクションの実行→プロシジャーの実行を選択→プロシジャー名を指定という流れです。
ここでSubを入れるとエラーになり、Functionを入れると実行されます。
全く同じ動作でもSubだとエラーでFunctionだと実行されるという謎仕様のことです。
629デフォルトの名無しさん
2018/10/12(金) 19:37:39.24ID:aE6SgoRY
同じように困ってる人がいました。
Subプロシージャをマクロで実行する方法を教えてください
http://webcache.googleusercontent.com/search?q=cache:PplL--43vEQJ:www.accessclub.jp/bbs3/0178/superbeg59084.html+&;cd=5&hl=ja&ct=clnk&gl=jp&client=firefox-b-ab

Calling Sub from Macro
https://www.pcreview.co.uk/threads/calling-sub-from-macro.3966923/
630デフォルトの名無しさん
2018/10/12(金) 19:39:49.69ID:wk7eAlWy
>>628
Accessマクロの「プロシージャの実行」機能は、Functionプロシージャに限ってアプリ経由でコールバックさせることができるっていう一種のリフレクション機能だから、仕様上Subプロシージャを呼べないのは当たり前

でも普通はVBAその他一般のプログラミング言語の話題でCallするとかコードを呼び出すとか言う場合、プログラムのコード中で他のプロシージャ(=メソッド)を呼び出すこと一般を指す
AccessだろうがCallステートメントでSubを呼べないわけがない

全然話してる内容が違う
631デフォルトの名無しさん
2018/10/12(金) 19:42:56.49ID:4ERZBcjn
MSの提示する対処方法
https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/runcode-macro-actionから抜粋
>>[!ヒント] Visual Basic で記述した Sub プロシージャまたはイベント プロシージャを実行するには、Sub プロシージャまたはイベント プロシージャを呼び出す Function プロシージャを作成します。
>>その後、 RunCode アクションを使用して、Function プロシージャを実行します。
632デフォルトの名無しさん
2018/10/12(金) 19:47:22.51ID:4ERZBcjn
>>630
そうなんですか?Callという言葉の使い方が悪かったのですね。
Accessのマクロのプロシジャーの実行からSubを実行できないという表現が適切なんですね。
それにしても謎仕様ですね。いちいちCall_SubみたいなFunctionを作らないといけないなんて馬鹿らしいですよね。
Subを使うのを止めて戻り値を使わないのになんでもかんでもFunctionにしている人がいるのはこのあたりにも原因があるのでしょうかね。。。
633デフォルトの名無しさん
2018/10/12(金) 20:06:27.08ID:a+EZTAPW
C#やJavaなどの言語にはfunction相当の構文しか存在しないから、それに合わせてるだけかも
634デフォルトの名無しさん
2018/10/12(金) 20:12:42.89ID:Vm21lImY
サブルーチンというものは、マクロ上での繰り返し処理や重複処理が必要な場合に同じコードを何度も記載することを回避して、プログラムの再利用性と簡潔性とメンテナンス性を高めるためのもので一種の共通部品で呼び出して使えるためとても便利。
その代わり呼び出し側のコードが必ず必要。
635デフォルトの名無しさん
2018/10/12(金) 20:15:04.20ID:Vm21lImY
よってユーザー定義関数とは自ずと目的が違う。
636デフォルトの名無しさん
2018/10/12(金) 20:43:31.86ID:xhA4Quty
たとえ1回しか使わなくても、機能ごとに分けて名前を付けることでコードの見通しを良くするという目的もある
637デフォルトの名無しさん
2018/10/12(金) 23:37:21.09ID:CecLyO81
どーでもいいわそーゆーおまえのこだわりw
638デフォルトの名無しさん
2018/10/12(金) 23:40:27.93ID:kwtsHVW5
・Accessのマクロの「プロシージャの実行」機能は要するに「関数を実行する」ことに重きを置いている機能なので、関数ではないSubプロシージャは呼び出せない。
・「呼び出す」と「Callする」は意味が(あるいは受け取り方が)違うので下手に知ったかぶりしないこと。
639デフォルトの名無しさん
2018/10/12(金) 23:43:28.15ID:CecLyO81
アクセスさんの気持ちを代弁するやつw
640デフォルトの名無しさん
2018/10/13(土) 14:18:57.90ID:7+viDhhJ
>>638
関数という言葉の定義次第ではSub Procedureも関数の一種になるぞ

あと、Accessマクロの実行機能に関する話題でマクロピッカーからプロシージャを直接選択して実行する操作を指して「呼び出す」とか「Callする」と表現する例は比較的稀だと思うぞ
641デフォルトの名無しさん
2018/10/13(土) 18:29:35.77ID:hGe/e45K
数学的な定義だと関数は一対一の写像だから戻り値がないものは関数ではなくなってしまう
丸投げアウトソーシングとでも言えばいいのか
642デフォルトの名無しさん
2018/10/14(日) 01:16:47.10ID:FNEdXER5
>>641
その理屈だと、Function Procedureが戻り値なしの記述を許容していること、戻り値と全く論理的な二項関係がない処理をFunction Procedureの中に書けてしまうことを考えた場合、Function Procedureが果たして関数と言えるのかどうかということの方が怪しくなる
643デフォルトの名無しさん
2018/10/14(日) 18:45:30.05ID:+nd0Ta/b
それはプロパティとメソッドについても言えるわけで。
意味合いから使い分ければ良い。

Accessの仕事してるけどいわゆるAccessのマクロ機能は嫌いなので殆ど触ったことないな。
644デフォルトの名無しさん
2018/10/15(月) 00:09:25.20ID:bvVmxQGC
>>640
マクロからVBAプロシジャを実行するのを、呼び出すと言うのはすごく一般的だとおもうが
むしろ呼び出す以外にどう言うんだ

>>642
戻り値を指定しないFunctionだって戻り値はちゃんとあるんだが
まあそもそもプログラミング上でいう関数は数学的定義の関数ではないんだがな

>>643
一般的なプログラム用語としてはそうかもしれんが
VBAや旧VB,VB.NET,C#なんかはプロパティはメソッドとは別な構文で定義されてる
VBAの話するならちゃんと区別しれ
645デフォルトの名無しさん
2018/11/14(水) 18:28:17.85ID:yWBiOXbZ
vba初心者でわからないところがあって質問したいんですけど、ここで大丈夫ですか?
646デフォルトの名無しさん
2018/11/14(水) 18:50:01.08ID:JBsUV7Ak
ExcelとAccessは専門スレが別にあるけどな
647デフォルトの名無しさん
2018/11/14(水) 19:18:54.83ID:yWBiOXbZ
学校の課題なんですがさっぱり分かりません
コードの入力?を教えてほしいです
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚
648デフォルトの名無しさん
2018/11/14(水) 19:27:08.71ID:yRk1YRk6
>>647
その宿題をやるには「フォームの作成」という作業が必要で、それは文章だけの掲示板じゃとても説明できない
649デフォルトの名無しさん
2018/11/14(水) 19:33:23.32ID:JBsUV7Ak
二次方程式 VBAのキーワードでぐぐればそれなりに情報はあるよ
650デフォルトの名無しさん
2018/11/14(水) 20:36:22.41ID:yWBiOXbZ
>>648
フォームの作成ってこれですか?
ここしかわかんなかったです…
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net	YouTube動画>1本 ニコニコ動画>1本 ->画像>12枚
651デフォルトの名無しさん
2018/11/14(水) 20:37:40.54ID:yWBiOXbZ
>>649
調べてみます
ありがとうございます
652デフォルトの名無しさん
2018/11/14(水) 22:42:46.78ID:iSnTRpeY
学校でExcelの課題出るのか
全員Excel入りのWindows機もってる前提なのか
653デフォルトの名無しさん
2018/11/14(水) 22:53:14.87ID:JBsUV7Ak
商業科高校と大学生は皆持たされる時代やね
654デフォルトの名無しさん
2018/11/15(木) 12:24:37.27ID:yIPB3Fsn
なきゃ学校にあるPC使うだけやんけ
変な事気にする奴やな
655デフォルトの名無しさん
2018/11/15(木) 14:25:13.91ID:njFgw0Uw
>>653
商業科の電卓名人みないな奴は、もぅおらんのか
656デフォルトの名無しさん
2018/11/15(木) 23:21:50.05ID:XqpfGkJo
VBAで3つ数値があった時、最大値を表示させたい時
下記URLのNo.4の回答のelseifを使ったものがありますが、
elseifを使わずにelseだけで表示しようとすると、
どのようになるのでしょうか?
宜しくお願いします

https://oshiete.goo.ne.jp/qa/5352661.html
657デフォルトの名無しさん
2018/11/15(木) 23:28:15.36ID:XqpfGkJo
分かりづらそうなので追記で、下記のところです。
宜しくお願いします 
  a = 10
  b = 200
  c = 30

  Max = a

  If b > Max Then
    Max = b
  ElseIf c > Max Then
    Max = c
  End If
658デフォルトの名無しさん
2018/11/15(木) 23:37:03.06ID:dI+Dsxy9
Max = a
If b > Max Then
  Max = b
Else
  If c > Max Then Max = c
End If
659デフォルトの名無しさん
2018/11/16(金) 06:18:18.01ID:biDBAQdb
>>658
ありがとうございます
試してみたいと思います
660デフォルトの名無しさん
2018/11/16(金) 06:57:12.53ID:fQoG7lNZ
そもそも657では最大値求められないだろ。
なぜ他の2つと比較してから決めないのか
661デフォルトの名無しさん
2018/11/16(金) 07:24:20.18ID:biDBAQdb
すいません、まだ初心者でまだ理解が追いついていなくて
とりあえず最大値求めるにはこういう形...とかで覚えようとしてて....頑張ります
662デフォルトの名無しさん
2018/11/16(金) 07:30:47.41ID:1oL4uemZ
658でも最大値は求められない
試しに
a = 1
b = 2
c = 3
で試してみるといい。Maxが2になってしまう

Ifだけでやる場合の正解の一例
Max = a
If b > Max Then Max = b
If c > Max Then Max = c
663デフォルトの名無しさん
2018/11/16(金) 07:35:16.96ID:1oL4uemZ
>>661
If Elseの構文は、最初のIfの条件が成立したらElse以降は処理されずEnd Ifまで飛ばされる
つまり、
a = 1
b = 2
c = 3
だった場合、
b > Maxが成立したらc > Maxの部分は飛ばされてしまうからMaxは2のまま終わってしまう
664デフォルトの名無しさん
2018/11/16(金) 07:44:30.26ID:fQoG7lNZ
elseやelseifは先行条件でTrueにならない場合にしか実施されない仕組みなことを理解しましょう
665デフォルトの名無しさん
2018/11/16(金) 08:11:14.61ID:nU0jfNiC
>>661
このレベルを形で覚えようとしている貴方にプログラミングは向いてない
666デフォルトの名無しさん
2018/11/16(金) 09:26:27.62ID:RKO+v0zL
ID変ったかも知れませんが>>656です
皆さんありがとうございます

>>665
手痛いレスですが、出来るところまで頑張ろうと思います。プログラマーではないですが基本は覚えないと連携し辛い位置の役職のため頑張ります。
667デフォルトの名無しさん
2018/11/16(金) 09:39:56.01ID:fQoG7lNZ
本当のプログラミング初学者なら仕方ない。制御構文なんてどの言語も似てるので、1つ覚えれば次は勘が効くようになるよ、長い目でがんばりなされ
668デフォルトの名無しさん
2018/11/17(土) 01:11:45.44ID:A0ACnair
最大値を求めたいならWorkSheetFunction.MAX使えば良いんじゃね?
669デフォルトの名無しさん
2018/11/17(土) 12:08:31.57ID:vo1go4s2
自民党ですらエクセル操作ミスるくらいだからな
670デフォルトの名無しさん
2018/11/17(土) 12:09:52.07ID:vo1go4s2
税金の計算もおかしくね?って思う
671デフォルトの名無しさん
2018/12/16(日) 00:58:32.35ID:SwJ6GlUb
>>668
わにわに
672デフォルトの名無しさん
2018/12/16(日) 01:01:16.65ID:SwJ6GlUb
パニックを、5人がかりでやれば楽勝だろ、とか言ってるようなもの。
673デフォルトの名無しさん
2018/12/17(月) 09:39:23.91ID:5sE/cfMN
エクセルVBAじゃなかったらどうするの
674デフォルトの名無しさん
2018/12/18(火) 22:55:12.06ID:A6rQVaax
確かに。
エクセロかも知れないもんな。
675デフォルトの名無しさん
2018/12/26(水) 21:53:30.63ID:KrpjpPkw
VBA初心者です。少し長くなってしまいますが質問です。
・やりたいこと
1:現マクロ有効ブックのsheet1にフォームボタン設置する。
2:押すとC:\Users\Public\動物まとめ.xlsx をバックグラウンドで開き、その中のシート名"カピバラ情報"の E列4行目から5行目6行目...と、空白が来るまでの情報を取得しする。
3:現マクロ有効ブックに新しくsheet2を作り、その新シートのA1からA2A3...に取得した情報を書き込む。

現在のマクロは下記ですが上手くいかないです。
Option Explicit
Sub practice()
Dim i As Long
    i = 4
Dim fullPass As String
'セルのB3に C:\Users\Public\動物まとめ.xlsxと記述
fullPass = Range("B3")

Dim wb As Workbook
Dim Anothersheet As Worksheet

Workbooks.Open fullPass
Set Anothersheet = wb.Worksheets("カピバラ情報")
Sheets.Add After:=ActiveSheet
Range("A1").Select

Do While Cells(5, i).Value <> ""
 i = i + 1
Loop
Call wb.Close
End Sub

上手く情報を取得できないのでアドバイスお願いします。
676デフォルトの名無しさん
2018/12/27(木) 00:53:04.14ID:coxr7jtk
>>675
wbに何も代入されてない。
AnotherSheetへの代入もこけるはず。
AnotherSheetが正しく生成されたとしても、その後使用されていないから何かとってこれるはずがない。
677デフォルトの名無しさん
2018/12/27(木) 00:55:19.50ID:coxr7jtk
>>675
fullpass じゃなくて、fullpath ね。
678デフォルトの名無しさん
2018/12/27(木) 01:02:39.75ID:coxr7jtk
>>675
行列指定が逆?
5行目を右方向に評価してくような感じになってるけど、新規に作ったシートが対象になってるから、一周もループしてないよね?
679デフォルトの名無しさん
2018/12/27(木) 01:09:08.59ID:coxr7jtk
>>675
Cell値を取るときは、デフォルトにまかせずちゃんとプロパティ指定しよう。
680デフォルトの名無しさん
2018/12/27(木) 01:16:51.54ID:coxr7jtk
>>675
バックで開いたつもりのブックに新規シート作っちゃってない?
ブックのフォーカスを制御するとか必要かも。
681デフォルトの名無しさん
2018/12/27(木) 09:18:35.23ID:psUgzr4+
ID変わりましたが>>675です。

>>676>>680
遅い時間帯でありながら見てくださって
ありがとうございます。

色々と不十分だったのですね。
指摘箇所を直したりして
また報告しようと思います。
682デフォルトの名無しさん
2018/12/27(木) 09:19:34.30ID:lhYnw8ev
>>675
最初に注意すべきなのは、いきなりRangeやCellsは絶対に使うべきじゃないってこと。
ちゃんと省略せずにWorkbookやWorksheetから書くようにする。
しかしそれだとコ―ドが長くなるのでそのために今回のコードのように変数で受けるかWith文を使う。

以下はスマホ上で書いてるんで動くかは不明です。
683デフォルトの名無しさん
2018/12/27(木) 09:20:24.73ID:lhYnw8ev
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デフォルトの名無しさん
2018/12/27(木) 09:22:53.65ID:lhYnw8ev
>>680
フォーカスを制御すべきじゃない。
いきなりRangeやCellsを使うから上手くいかないのであって、きちんとブックやシートから書けばフォーカスを制御しなければならないことは滅多に無い。
685デフォルトの名無しさん
2018/12/27(木) 09:26:03.58ID:lhYnw8ev
早速間違いだ。
fullPassと書いてる所が一ヶ所ある。
fullPathに直しておいてね。
686デフォルトの名無しさん
2018/12/27(木) 11:21:46.87ID:coxr7jtk
>>684
まぁ、そうかもね。
でも最初はいろいろ試してもいいんじゃない?
687デフォルトの名無しさん
2018/12/27(木) 11:57:21.88ID:psUgzr4+
>>682‐685
ありがとうございます
深夜のご指摘から>>685まで参考にしていて

現在デバッグしてますが、“カピバラ種類”のシートが上手く取得できていないようです。
ちなみに
'セルのB3てどこ?
'多分ボタンのあるシートかなと推測。
その通りです、分かりづらくてすいません。

改行制限のためいくつかコメントは掲示板に書き込むとき省いてしまいました。

'Range("A1").Selectって何の為に有るの?
ですが 、新シートのA1から書き込む為に書きましたが、デフォルトでA1から書き込むみたいですので
無駄なマクロでしたね。
688デフォルトの名無しさん
2018/12/27(木) 12:23:02.37ID:psUgzr4+
少し言葉足らずでした。
iのカウント(空白行までループ)は上手く出来ているので、現マクロ有効ブックの新シートに取得情報を
書き込めていないようです。
689デフォルトの名無しさん
2018/12/27(木) 12:57:12.54ID:lhYnw8ev
>>688
うん?
Do〜Loopの中はiのカウントアップしてるだけなので、あなたが省略した(と勝手に思ってるんだけど)コードが動いていないということ?

念のためにいうと、元々のコードには情報を取得するコードが全く無いからこのコードだけじゃ取り込めないのは当たり前だよね。
690デフォルトの名無しさん
2018/12/27(木) 13:47:48.84ID:psUgzr4+
すいません、
不覚に気づき、
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:20.08ID:psUgzr4+
細かい修正として
j = i
i = i + 1
の部分も
i = i + 1
j = i - ○
のようにして、
無駄にできてしまう空白もなくしました。

お付き合いしてくださった方、
ありがとうございました。
692デフォルトの名無しさん
2019/01/03(木) 04:15:42.29ID:aAVkqECP
質問です
ワークシート上にすでに引かれている複雑な枠線をコードとしてどうにか変換というか取得できる方法はないでしょうか…
693デフォルトの名無しさん
2019/01/03(木) 04:35:53.91ID:Em9anKIf
>>692
描くのの逆をするだけじゃ?
694デフォルトの名無しさん
2019/01/03(木) 13:29:44.69ID:aAVkqECP
>>693
返事ありがとうございます
すみません、私の頭では理解できません…よかったらもう少し詳しく教えてもらえませんか
695デフォルトの名無しさん
2019/01/03(木) 14:57:12.35ID:9QrYctZ6
何をしたいのか書いてよ
罫線の設定状況を知りたいだけならRange.Borders見なよとしか言えないし
https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.borders
696デフォルトの名無しさん
2019/01/03(木) 15:15:01.64ID:Em9anKIf
>>694
罫線を描く動作は理解できてる?
マクロ記録で簡単に調べられますよ。
例えば、2行2列選んで、縦横斜め全てに実線入れて
記録されたものを見ればどのような構造で描かれているのか
分かります。
記録の際は、xl〜の定数でよいですが、取得の際は数値で
返ってくるので注意。
調べたければオブジェクトブラウザで調べてもよいですが、
イミディエイトで、?xlThin みたいに簡単に確認する方法も
あります。
でも、取得して使うなら数値のままでもOKです。
ここまではOK?
697デフォルトの名無しさん
2019/01/03(木) 16:26:50.99ID:+aY40et6
>>695
>>696
会社でとある先人の作ったエクセルのフォーマットがあるのですが、それを使って作業するおばあちゃんが度々壊してしまうのです
セル結合やセルの幅など複雑になっている物なので、壊してしまったパソコンの不得意なおばあちゃんはいつも四苦八苦していて、どうにか入力された数値以外の罫線や列幅などだけボタン1つ簡単に戻せるものを作ってあげたいと考えています

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

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

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

この読み方はあってますか?
704デフォルトの名無しさん
2019/01/19(土) 20:32:43.51ID:b1memYXI
さいごフォルス
705デフォルトの名無しさん
2019/01/20(日) 08:43:51.62ID:KJwN8fo6
マジか!
自信なくなってきたわ。
フォー イーチ 〇 イン、スターコンブ、ブイビーナロウ、コンカット、
ナンバーフォーマットローカル、ドゥ ホワイル、イズナメリック、
デカー ファンクション セットウインドウロング リブ "ユーザー32" エリアス、
バイバル 〇 アズ ブーラン、アプリケーション.ハウンド、オプション エクスプリシト。
706デフォルトの名無しさん
2019/01/20(日) 09:19:09.77ID:1t0h4eLG
numeric ニューメリック
alias エイリアス
boolean ブーリアン
707デフォルトの名無しさん
2019/01/20(日) 09:40:31.66ID:brNktcWU
ディクレィア
708デフォルトの名無しさん
2019/01/20(日) 12:50:34.64ID:gJkAP+bh
ぶーりーんっておもってた
709デフォルトの名無しさん
2019/01/20(日) 14:02:45.95ID:1t0h4eLG
「デカー」ってなんのことだ?
710デフォルトの名無しさん
2019/01/21(月) 06:06:27.68ID:FqoKwBp9
ぶーりん ってよんでた
711デフォルトの名無しさん
2019/01/21(月) 06:58:21.81ID:NbFzEAOW
>>709
>>707が言う通りDeclareじゃね?
712デフォルトの名無しさん
2019/01/21(月) 08:09:02.73ID:jhC9vbHJ
declare デクレア(デクレアー)

発音記号を見るとディクレィアーなんだけど、音声ではディよりデに近く聞こえる
https://en.hatsuon.info/word/declare
713デフォルトの名無しさん
2019/01/21(月) 14:53:02.35ID:SqTYfLos
バイバリュー
714デフォルトの名無しさん
2019/01/31(木) 16:04:06.71ID:f4/Ws+Wz
パワポでExcelのVBAにある
Application.OnUndo
みたいなことって出来ない?
715デフォルトの名無しさん
2019/01/31(木) 23:51:12.55ID:eWv6zdmK
Application.CommandBars.ExecuteMso "Undo"
716デフォルトの名無しさん
2019/02/01(金) 00:00:16.48ID:BWIWaKpf
undoをフックできるか?って質問の気がするが
717デフォルトの名無しさん
2019/02/01(金) 15:41:12.07ID:lbEDOgk3
>>716
そっちだね
あるいはパワポの内部変数(たとえば図形のRGB値とか)の変化を検知してイベント上げるとかでもいいんだけども
718デフォルトの名無しさん
2019/02/01(金) 19:24:08.72ID:69So7CMb
質問スレでいつも思うんだけど、どんな状況でそれが必要なの?
Excelで出来るんなら、逆にExcelをパワポっぽく見せるという手もあるんじゃないの?
719デフォルトの名無しさん
2019/02/02(土) 00:14:40.30ID:hkITps2T
勉強もかねてパワポのアドイン作ってるのよ
だからExcelじゃなくてパワポで出来なきゃ意味がない
その機能自体が必須で欲しい訳ではないから出来ないなら出来ないで諦める
720デフォルトの名無しさん
2019/02/08(金) 13:11:59.73ID:WrxcLohJ
何か斬新な使い方って無い?
ワードでファミコンみたいな。
721デフォルトの名無しさん
2019/02/09(土) 00:13:31.38ID:nXE2v5Lv
Functionで値を返すのと、ByRefで返すの、どう使い分けたらいいのか、わからなくなってきた。
どっちでも返せる状況なら、どっちがいい?
722デフォルトの名無しさん
2019/02/09(土) 00:37:08.95ID:gPze9fmT
他人とか将来の自分が読みやすいようにFunctionで
723デフォルトの名無しさん
2019/02/09(土) 00:41:30.67ID:ThSbhyi3
処理によるとしか
724デフォルトの名無しさん
2019/02/09(土) 04:25:25.62ID:6oInKB58
Function一択

ByRefは古い書き方で互換性のために残してる
これから作るプログラムには使うべきじゃない
725デフォルトの名無しさん
2019/02/09(土) 09:13:25.95ID:NnmcfWng
>>721
どちらでもいい状況ならFunctionの方が使い易いのでFunctionにした方がいい
あと>>724はアホだからスルーで
726デフォルトの名無しさん
2019/02/09(土) 09:25:22.06ID:ThSbhyi3
ByRefが互換性維持のために存在するという話は聞いたことがないぞ
727デフォルトの名無しさん
2019/02/27(水) 18:52:45.21ID:0gstYK5t
sortのcustomorderって、セル値を入れられたりはするのでしょうか?
複数のセル値を優先順位としてデータを並び替えるマクロを作成したのですが動作が遅いので改善出来ればと考えています。(forとifで判定する手法をとっています)
よろしくお願いします
728デフォルトの名無しさん
2019/03/02(土) 08:39:42.60ID:PK2Geudt
標準のソート機能で出来ないことでもやるの?
駄目ならSQL使うとか。
729デフォルトの名無しさん
2019/03/19(火) 09:29:22.78ID:3/8oXV0g
VBAがどっとNet対応
キターーーー!
730デフォルトの名無しさん
2019/03/19(火) 10:26:45.09ID:NT4YoXBH
Select from…
懐かしいな
731デフォルトの名無しさん
2019/03/19(火) 11:16:03.50ID:7F9Wq7Fv
>>729
732デフォルトの名無しさん
2019/03/19(火) 22:45:44.06ID:i2FNQUrb
さて、名前付き範囲ってVBA@Excelで使えないんだろうか。
もし使えたとして、実行時間はどうなのだろうか。
色々と謎が多い。
733デフォルトの名無しさん
2019/03/19(火) 23:22:30.00ID:/asoePaH
>>732
それ使うと後でエラー見つけるのめんんどくさくなる
734デフォルトの名無しさん
2019/03/20(水) 00:38:39.23ID:vmDq6MjZ
>>732
使えるよ
Application.Namesでコレクション取得して名前つき範囲にアクセスできるし、シートのRangeプロパティの引数ラベルとして名前をそのまま使ってセル取得できる
735デフォルトの名無しさん
2019/03/20(水) 16:11:53.05ID:VkiUMgxP
>>733
横からだけど、どう面倒になるの?
736デフォルトの名無しさん
2019/03/20(水) 19:48:02.99ID:lxQ2zmLg
>>735
セルの編集したときに壊れてた
737デフォルトの名無しさん
2019/03/20(水) 21:06:17.96ID:ad3N4bFR
名前をキーにして名前付き範囲にアクセスするときはリスト形式になってるNamesコレクションの要素に対して正規表現か何かで逐次マッチ検索してるはずだから、名前付き範囲が増えれば増えるほどアクセスが遅くなる
738デフォルトの名無しさん
2019/03/21(木) 01:35:24.94ID:XMapNPTs
なんで正規表現?
完全一致でいいじゃろ?
SortedListなら量に正比例して増えることはない
739デフォルトの名無しさん
2019/03/21(木) 07:27:32.08ID:u3u8nbsq
>>736
それおま環だろ
740デフォルトの名無しさん
2019/03/21(木) 07:34:08.81ID:u3u8nbsq
>>737
> 正規表現か何かで逐次マッチ検索してるはずだから
なんだその意味不明な思い込みはw
普通に考えてハッシュなりB-Treeなり使ってるだろ
そもそも逐次検索だとしても遅さが気になるほど大量の名前付き範囲使う時点でなにか間違ってると思う
741デフォルトの名無しさん
2019/03/22(金) 17:57:33.45ID:DJ7JSKt5
会社でブラウザの検索結果のページで
いっぱいURLのリンク先が表示されるのですが
そのたくさんのURLのそれぞれを開いたページ(毎回違うけど50ページくらいある)のデータを取得するVBAのコードを考えています。
IEの定番のCreateObject("InternetExplorer.Application")とDOMツリーの方法で実現できてはいるのですが
1つ1つページを開いて取得して閉じる、という作業がネットワークの遅さで異常に時間がかかります。
この複数のページを同時で取得する方法ってないでしょうか?よく知らないけどJavaでいうスレッドみたいな?
742デフォルトの名無しさん
2019/03/22(金) 18:35:53.24ID:HaipTOms
>>741
VBAはマルチスレッド非対応だから無理
743デフォルトの名無しさん
2019/03/22(金) 19:06:27.17ID:DJ7JSKt5
>>742
そりゃないよ、かあちゃん
744デフォルトの名無しさん
2019/03/22(金) 19:28:02.41ID:s6oj+Xdm
>>741
VBAでマルチスレッドは基本的に出来ないと考えるべき。
物凄く不安定だし、Excelのオブジェクト(Rangeとか)を触った途端にExcelが消える。
で、マルチスレッドは出来ないけどマルチプロセスは出来る。

1.プログラムのブックに指定のURLのページの情報を取ってくるプロシージャを作る
2.複数のExcel.Applicationを使って、自分自身のブックを別のExcelから開くメインプロシージャを作り、その中でobjExcel.Runを使って情報を取ってくるプロシージャを動かすようにコードを書く。
3.ブックを保存する。
4.メインプロシージャを動かす

たぶん、こんな感じでできたはず。
745デフォルトの名無しさん
2019/03/22(金) 19:35:54.55ID:DJ7JSKt5
>>744
ありがとうございます。
しかし、もし50個URLがあれば50個新しくExcel自体を起動しないといけないのですか?
そんなことしたら激重になってしまうように思うのですが。
746デフォルトの名無しさん
2019/03/22(金) 19:38:23.65ID:ls5du2vw
複数のInternetExplorer.Applicationのインスタンス立ち上げれば行けんじゃないか
747デフォルトの名無しさん
2019/03/22(金) 19:57:22.45ID:HaipTOms
>>746
今それができないって会話をしてたところだけど理解してる?
748デフォルトの名無しさん
2019/03/22(金) 20:04:27.42ID:ls5du2vw
>>747
どこでそれが出来ないって話をしてる?
749デフォルトの名無しさん
2019/03/22(金) 20:19:56.99ID:HaipTOms
>>748
>>742
750デフォルトの名無しさん
2019/03/22(金) 20:49:35.12ID:n3e2TSgf
>>741
フレームを50個並べたページのHTMLをローカルで作って開けば一気に読み込んでくれる
751デフォルトの名無しさん
2019/03/22(金) 21:25:13.65ID:uvzdlIQp
なんか勘違いしてるやつがいるけど、VBAがマルチスレッドじゃないことと、IEを複数開くのはまったく別のことだからな

IEはOfficeとはまったく無関係の独立したプロセスだから、いくつでもインスタンス化できるし同時にネットアクセスできる
IEオブジェクトを配列で作っといて、ページの読み込み完了を待たずにどんどん開いてけばいいんだよ
752デフォルトの名無しさん
2019/03/22(金) 22:10:54.82ID:HaipTOms
>>751
そのプロセスを制御するVBAがシングルスレッドだろ
753デフォルトの名無しさん
2019/03/22(金) 22:13:33.32ID:HaipTOms
>>751
あ、開けば終わりと勘違いしてる?
754デフォルトの名無しさん
2019/03/22(金) 22:13:49.76ID:LAgBLCyu
IEにタブをいくつも開いてもらって、みんな読み込んだところでおもむろに順番に処理すればいいってことだろ。
755デフォルトの名無しさん
2019/03/22(金) 22:15:47.88ID:CAtaruvO
>>752
VBAはシングルスレッドだが、IEでの読み込みは同時並行的にやってくれるんじゃねえの?
756デフォルトの名無しさん
2019/03/22(金) 22:38:21.07ID:DJ7JSKt5
>>750

>>751
その具体的な方法をコードで例示する形で教えていただきたいのでござるよ。

いまだと
Do While readyState < 4
Do Events
Loop
の待ちを50個のURLで1つ1つ順番にやってて
1つのURLを読んでデータ取って閉じる、というのをやるのが社内ネットワークが遅いため(データベースからの読み込みも含まれるからの)1つあたり1分近くかかってる。
だから異常に時間がかかる。
一気に全部同時にやれないかなと。
757デフォルトの名無しさん
2019/03/22(金) 22:40:55.80ID:tgov+uRX
そんなもんそれこそ流行りのRPAでやればいいのでは
758デフォルトの名無しさん
2019/03/22(金) 22:40:56.05ID:HaipTOms
できるっていうくせにコードは出てこないのね
759デフォルトの名無しさん
2019/03/22(金) 22:57:51.11ID:HaipTOms
そもそも回線が細いのはプログラムでどうこうできないから上司を説得して諦めてもらうしかない
760デフォルトの名無しさん
2019/03/23(土) 01:14:24.21ID:BU4e6Kdq
趣味でやってるんじゃなかったら
適当なダウンロードソフト使ったほうが良いんじゃない
761デフォルトの名無しさん
2019/03/23(土) 12:00:24.62ID:36Js1rz1
動くかどうか試してないけど、こんな感じでいいんじゃない?
もう少し効率を上げるなら、読み込めたページからさっさと処理してもいいし

Sub test()
  pg = 50   ' 同時に開きたいページ数
  Dim ie() As Object
  Dim url() As String
  ReDim ie(pg-1)
  ReDim url(pg-1)
'ここでURL設定
  For i = 0 To pg-1
    Set ie(i) = CreateObject("InternetExplorer.Application")
    ' ie(i).Visible = True  '表示しない
    ie(i).navigate url(i)
  Next
  Do
    flg = True
    For i = 0 To pg-1
      If ie(i).readyState < 4 Then
         flg = False
      End If
    Next
  Loop Until flg  '全ページの読み込み待ち
'ここで読み込んだページを処理
End Sub
762デフォルトの名無しさん
2019/03/23(土) 15:33:38.79ID:BqJUz3fJ
>>761
ありがとうございます。
試してみます。
最初のFor Nextループがものすごく時間がかかりそうで楽しみです。
あと先日は説明の簡略化のためにシンプルに書いたけど
実は開いたURL内で、ある条件があると、さらにその親URL内のAリンクの子URLも開かないといけない複雑な事情があるのです。
763デフォルトの名無しさん
2019/03/23(土) 19:47:18.63ID:h2FSWEPH
>>761
Exit For抜けてますよ
フラグも i = pg-1まで行けたときに立たせるだけで十分だと思います

あと、非表示でIEを50立ち上げると中断した時のプロセスの掃除が大変なので、Ajaxで無ければXMLHTTP60を使うのも手かもしれません。
764デフォルトの名無しさん
2019/03/24(日) 00:51:51.95ID:gZMjxNOF
>>752
まさかIEオブジェクトの読み込み動作がVBAのスレッドで処理されてると思ってるのか?
>>753
終わりじゃないので考慮点はある

コード書こうかと思ったけど、>>761さんが書いてるからまあいいか
読み込み完了の検出とかどうするか悩みどころではある
イベントハンドラの動的設定か、せめてWithEventsが配列にも宣言出来ればなぁ

まあ50も多重化してもオーバーヘッドかかるだけで高速化しない気がするから
数個固定で持たしてイベントハンドリングするのが現実的かもしれん
765デフォルトの名無しさん
2019/03/24(日) 01:34:57.18ID:Y3S3b5Ai
この場合Do Loopを抜ける条件が全ページの完了だから、Exit Forはあってもなくても結果というかスピードは変わらないね
さっさと抜けたところで、またForループに戻るだけだし

個人的には「pg - 1」が何回も出てくるのが美しくないなあとか、ForとDoの順番を逆にした方がコンパクトになりそうだなあとか
766デフォルトの名無しさん
2019/03/24(日) 01:38:23.22ID:Y3S3b5Ai
一括処理なら、この方がコンパクト
まあ、ホストの応答速度や、次の処理の内容次第では終わったページからどんどん片付けた方がいいだろうけど
For i = 0 To pg-1
Do
Loop Until ie(i).readyState >= 4
Next
767デフォルトの名無しさん
2019/03/24(日) 08:29:39.64ID:myNgr9GS
>>765
> 個人的には「pg - 1」が何回も出てくるのが美しくないなあとか
C言語とかに慣れてるんだろう
VBA的には
ReDim ie(1 To pg)
ReDim url(1 To pg)
For i = 1 To pg
だろうね
可能であればieとurlをTypeで纏めてそれを配列にした方が見易い
768デフォルトの名無しさん
2019/03/24(日) 08:58:33.34ID:Mw3X0nZC
>>766
ははは、これは笑った。確かにこれが単純明快でコンパクト w
769デフォルトの名無しさん
2019/03/24(日) 10:28:46.47ID:3PVCt58k
>>766
それだとサイズのでかいページで待ちが発生する

Do
For i
If ie(i)準備完了 And i.処理フラグFalse then
処理
処理フラグTrue
カウント
End if
Next
カウント=50 exit
Loop
770デフォルトの名無しさん
2019/03/24(日) 10:33:07.42ID:Mw3X0nZC
>>769
投げてからの待ちだからいいんじゃねえの?
俺はやったことないから知らんが、投げたらあとはIEが並行処理で取ってくるんだろ
で全部取ってから次の処理なら問題ない
でかいページでVBAが待っていても同時に他のページもIEが取って来てるんじゃねえの
だからでかいページで待っていてもそれが終わったら他の軽いページも取り終っていてあとは
ばたばたと進んで終了、と理解している
771デフォルトの名無しさん
2019/03/24(日) 10:52:55.88ID:Mw3X0nZC
>>769
ああ、すまん。それがわかってる上で待ち時間がもったいない、ということね
>>766もそこは注意書きはしているな
772デフォルトの名無しさん
2019/03/24(日) 10:56:37.24ID:OZ1kvGmt
IEはマイクロソフトも使うなって言ってるのに
VBAって不便だよね
773デフォルトの名無しさん
2019/03/24(日) 11:58:25.29ID:yYEn14s6
IE使えなくなったら、どうやってブラウザ制御するの?
UIAutomation面倒くさいかから、
774デフォルトの名無しさん
2019/03/24(日) 11:58:47.29ID:yYEn14s6
getElementByしたいんだけど。
775デフォルトの名無しさん
2019/03/24(日) 12:34:48.16ID:4ve/ST91
IE使えなくなったらってもう使ってる人なんていない
セキュリティに甘いとこは使えるのか?
776デフォルトの名無しさん
2019/03/24(日) 13:28:35.85ID:Y3S3b5Ai
ちゃんと動くのか試してみた
たしかにIEが複数開いて、平行処理でページを取ってくるね
VBAのシングルスレッドとか完全に無関係やん
777デフォルトの名無しさん
2019/03/24(日) 13:33:22.28ID:gDjNFFGJ
>>776
まだそこ?
778デフォルトの名無しさん
2019/03/24(日) 13:36:50.26ID:PYh3zpOu
大昔からあるファイルシステムだって非同期読み書きできる
1000倍遅いネットワークで出来ないはずがないだろうが
779デフォルトの名無しさん
2019/03/24(日) 13:55:48.62ID:gDjNFFGJ
>>778
無能管理職かよ
780デフォルトの名無しさん
2019/03/24(日) 14:55:03.02ID:gZMjxNOF
現実的には50並列で全ページ完了待ちするのはどうもなぁ

あと全力でループまわして完了待ちするのも無反応になるんじゃね
とりあえずDoEvents挟もうぜ

>>776
スレッド以前に、IEオブジェクトが別プロセスだから
アウトプロセスのCOM使うのはVBAで並列やる、おそらく安全で簡単な唯一の方法
まあCOM作る方は大変だがな

>>777
OSがサポートしてるだけで、VBAから使えるかどうかとは別の話
VBAで非同期並列やりたければ、基本的にはイベントベースでしかサポートされていない
781デフォルトの名無しさん
2019/03/24(日) 17:00:18.75ID:cASdygc2
>>776
これ、1つずつ待つ部分がVBAでマルチにしたいって話だったけどCreateObjectで既に別プロセスだから全部投げてから全部の完了を待つので正解なんだよな。

勘違いしてマルチプロセスでやろうとしちゃったよ。
ついでにApplication.Runで出来なくて、迷ってたんだけど、またまた勘違いでApplication.OnTimeが正解だった。
でもOnTimeって戻り値が取れないんだよな。
782デフォルトの名無しさん
2019/03/24(日) 17:02:38.91ID:cASdygc2
あと、ExcelVBAスレにあるようにInternetExplorer.Applicationじゃなくて別のオブジェクトの方が早いと思うよ。
783デフォルトの名無しさん
2019/03/24(日) 17:15:34.95ID:3PVCt58k
講釈垂れはいいからコードはよ
784デフォルトの名無しさん
2019/03/24(日) 17:48:52.18ID:yrUzMInJ
とりあえずDoEvents。
785デフォルトの名無しさん
2019/03/24(日) 21:00:07.33ID:IVIO7oct
取りあえず書いてみたんだが、1つずつ待っても速度が変わらん。
テスト用に繋げた所があんまり時間が掛からん所でReadyStateのループに入らんのよ。

取りあえずInternetExplorer.Applicationはやっぱり遅かった。
59個のURLから同じ場所にある特定のデータを取ってくる処理でMSXML2.XMLHttpなら5秒のところIEだと60秒くらい掛かった。
786デフォルトの名無しさん
2019/03/24(日) 23:42:52.24ID:Y3S3b5Ai
IEを普通にUIを持ったアプリケーションとして開けば、クッキーや画面のレンダリングからアクセス履歴の更新やキャッシュの整理までいろんな処理が走るから、そりゃ実質GETだけのXMLHTTPと比べたら遅くなるのは当たり前と言うか

>>785
画像検索にそれぞれ違うキーワードを設定すれば、それなりに時間がかかるようになるから負荷のテストにはおすすめ
787デフォルトの名無しさん
2019/03/25(月) 08:15:58.30ID:O3TyiYmg
>>786
そんなことは知ってるが、ここの話で具体的なのがIEだから、いやいや、IEはこんなに遅いですよと注意喚起したんだよ。

まあ、Script関連でIEじゃないと駄目な場合もあるけどね。
788デフォルトの名無しさん
2019/03/25(月) 21:50:57.49ID:D+uIa6Au
真のエクセラーならieなんか使わずにwebクエリーとか使って何とかするべきだろうが
789デフォルトの名無しさん
2019/03/25(月) 23:08:06.35ID:DuFQaNpH
getElementByもWebクエリも使ったことあるけど、
Webクエリはどうやって取ってきてるのか謎。
790デフォルトの名無しさん
2019/03/25(月) 23:19:23.02ID:XpTM98r8
レンダリングしないでペイロードのパースだけやってるんでしょ
791デフォルトの名無しさん
2019/03/26(火) 00:39:52.05ID:ke9zWH00
誰もSelenium basic使わんの?
IE使わなくていいしセッション維持とかも楽だぉ?
792デフォルトの名無しさん
2019/03/26(火) 18:58:02.34ID:ADoE3fhW
readystateが信用ならんのがな
completeになっても完全に読み込めてなくてその後の要素取得処理に失敗とか高確率で起こるし
WinHTTP使うのが確実だと思う
793デフォルトの名無しさん
2019/03/26(火) 22:23:16.17ID:0P7j5sat
>>791
x だぉ
o だよ
正しい日本語を使いたまえ
794デフォルトの名無しさん
2019/03/26(火) 23:48:15.28ID:KxwbGcFA
結局Do LoopとOn Error Resume Nextで逃げるしかないっていう。
795デフォルトの名無しさん
2019/03/27(水) 00:00:47.48ID:sk2gWEk1
>>794
x 結局Do LoopとOn Error Resume Nextで逃げるしかないっていう。
o 結局Do LoopとOn Error Resume Nextで逃げるしかないっていうことですね。
正しい日本語を使いたまえ
796デフォルトの名無しさん
2019/03/27(水) 00:54:24.99ID:bUJXWn5A
口語体が理解できないやつが正しい日本語とか
797デフォルトの名無しさん
2019/03/27(水) 06:30:58.48ID:61Xepw/0
アスペかしら…
798デフォルトの名無しさん
2019/03/27(水) 07:39:47.73ID:qB5RyyD6
では、教えてくれ。
正しい日本語の"正しい"とはなんのことだ。
先に言っておくが、国語辞典や義務教育は関係ないぞ。
799デフォルトの名無しさん
2019/03/27(水) 08:38:29.06ID:oJzskUWb
>>798
お前のようなノイズではないこと
800デフォルトの名無しさん
2019/03/27(水) 12:48:07.16ID:Mdwmg5PN
>>798
国語辞典や義務教育関係ないと言うのならば口語体でも問題ないと思うが…。
例えば力不足、役不足のように意味を間違えて使っていては当然正しい日本語ではないが、今回の様な場合では相手方に伝われば良いということにならないか。
801デフォルトの名無しさん
2019/03/28(木) 20:50:35.86ID:GAoTTZZk
関西弁は正しい日本語ではない
802デフォルトの名無しさん
2019/03/28(木) 20:59:08.44ID:M/yCVQ4H
正しい日本語とは
803デフォルトの名無しさん
2019/03/28(木) 21:53:50.06ID:cIkPDI6N
>>796
x 口語体が理解できないやつが正しい日本語とか
o 口語体が理解できないやつが正しい日本語とかどういうこと?
804デフォルトの名無しさん
2019/03/28(木) 23:24:25.12ID:Q+Q3MpKo
長いのでWithするかSetしましょう。

With 口語体が理解できないやつが正しい日本語
  とか = ×
  とかどういうこと? = 〇
End With
805デフォルトの名無しさん
2019/03/28(木) 23:39:02.51ID:cIkPDI6N
Sub CorrectJapanese()
Dim text As String
Dim inputText As String
text = "口語体が理解できないやつが正しい日本語とか"
inputText = InputBox("あなたの日本語は?")
If inputText = text Then
MsgBox "アホ"
ElseIf inputText = text & "どういうこと?" Then
MsgBox "そのとおり"
End If
End Sub
806デフォルトの名無しさん
2019/03/28(木) 23:57:12.09ID:OmRArJOr
日付フィルターを使うときにCriteriaに設定する値って、必ず一旦Double型に型変換したDate型データをもとにしてFormat変換しなきゃいけないのかな?
Date関数の戻り値をそのままFormat変換してもうまくフィルターがかからなくて危うくハマりかけたんだが、後学のために識者がいたら教えてほしい
807デフォルトの名無しさん
2019/03/29(金) 00:17:35.48ID:PdUuDb+g
まともなレスには異論返せないのな
808デフォルトの名無しさん
2019/03/29(金) 00:47:46.11ID:MmeaYZo8
>>807
x まともなレスには異論返せないのな
o まともなレスには異論返せないのね
809デフォルトの名無しさん
2019/03/29(金) 06:46:41.33ID:YUbMxDIL
>>804
ピリオド抜けてる
810デフォルトの名無しさん
2019/03/29(金) 12:23:42.03ID:Fu/JMZl+
異論返せていないまともなレスとはどれ
811デフォルトの名無しさん
2019/03/29(金) 12:35:07.47ID:7DnII+1F
>>810
この辺りじゃないか?
>>799
>>800
812デフォルトの名無しさん
2019/03/29(金) 12:37:39.38ID:FHKNInbw
どうでも良いことで延々と論じるのは如何なものか。
813デフォルトの名無しさん
2019/03/29(金) 18:52:59.03ID:DRFZR9Lo
>>809
シンタックスエラーになります
814デフォルトの名無しさん
2019/03/30(土) 09:25:26.20ID:Fw0ogXHz
VBAで実行時にシンタックスエラーが出るのはどういう場合だろう
デフォルト設定だと1行入力ごとに構文解析するし
815デフォルトの名無しさん
2019/03/30(土) 09:27:30.74ID:uS2atdcl
>>814
それ、1行ごとの構文解析だろ
For Next Do Loop If End If
のチェックまではしてないと思うぞ
816デフォルトの名無しさん
2019/03/30(土) 09:28:29.64ID:uS2atdcl
ああすまん。これってシンタックスエラーではないんだっけ
でもエラーになるよね
817デフォルトの名無しさん
2019/03/30(土) 09:41:55.36ID:Fw0ogXHz
Nextを書かなかった場合は
「コンパイル エラー:For に対応する Next がありません。」
だった

もしシンタックスエラーのエラーコード(変数Errの値)が存在すれば出る可能性があるってことだと思うけど、コードの一覧てどこにあるんだ?
検索してVBのは出るけどVBAのが見つからん
818デフォルトの名無しさん
2019/03/30(土) 09:49:53.73ID:uS2atdcl
シンタックスって言葉自体は構文規則だけど、コンパイルエラーって出るんだね
819デフォルトの名無しさん
2019/04/06(土) 00:50:26.14ID:ocPEvB9Z
ExcelVBAでListViewを参照設定で追加して
フォームに配置して使っているんですが、
別フォームからshowしてすでに項目をいくつか追加してある
ListViewのあるフォームを表示したときに
ListViewをアクティブ(そのままの状態から矢印キーで項目を選択できるようにする)
にすることは可能ですが?
例えば

Public Sub UserForm_Active()
With listview1
.ListItems(1).Select
.SetFocus
End With
End Sub

とした場合に、フォーカスは確かにListView1にあるのですが、
その状態では項目が矢印キーの上下で選択することができません。
ListView1.SetFocusではListView1全体にフォーカスはあるが
肝心の中身の項目にはフォーカスがない状態ということなのでしょうか?

なにかよい方法はありますでしょうか?
820デフォルトの名無しさん
2019/04/07(日) 19:10:32.15ID:nvpN9j7Q
sendkeysで Alt↓までやっちゃうとか
あまりおすすめできる方法ではないが
821デフォルトの名無しさん
2019/04/21(日) 00:26:59.66ID:WKly27nG
このスレは生きてますか
822デフォルトの名無しさん
2019/04/21(日) 17:39:05.84ID:VJZKP3mE
一応生きてるでしょ。
823デフォルトの名無しさん
2019/05/10(金) 13:15:01.20ID:SsAAf7AE
VBA勉強中のものです。

Setステートメントを勉強しているのですが、オブジェクト型についてお聞きしたいです。RangeオブジェクトとかWorksheetオブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。

どんなときに使うのか、教えてもらえるとありがたいです。
824デフォルトの名無しさん
2019/05/10(金) 16:53:41.17ID:SsAAf7AE
Excel VBA 質問スレで質問してみます。お邪魔しました m( _ _ )m
825デフォルトの名無しさん
2019/05/12(日) 02:32:02.86ID:0u/cIV/f
>>823
オブジェクトなら同じものを頻繁に扱うときにコーディングミスをしにくくなる。

毎回、名前でアクセスしていると、ちょっとしたことで、別のものを間違って扱う可能性が高まって、実行時エラーを発生させやすくなる。

定数化していれば防げるが、定数のスコープを大きくしないといけないので、定数の値を変えるときにあっちこっちを確認しながら、直すことになり面倒なことになりやすい。
826デフォルトの名無しさん
2019/05/13(月) 13:34:22.56ID:p6Zrf1zY
object型の初期状態はNothing
参照先が存在しない場合もNothing返るのがあってis式で判定できる
一方でvariantの初期状態はemptyなのでis式がエラーになる
827デフォルトの名無しさん
2019/05/13(月) 18:12:50.85ID:/95lNMvT
オブジェクトの値がNothingかどうかで判断するロジックはセンスがいいとは思えない。
828デフォルトの名無しさん
2019/05/13(月) 22:51:51.62ID:RqskJpsp
Typenameとか列挙定数とかポインタ関数の値で判定するのが良いわな
829デフォルトの名無しさん
2019/05/13(月) 23:46:53.76ID:4/CDP/BQ
自分で変数の値をコントロールしているのに、Nothingかどうかをあちこちで確認しているクソプログラマと1年前に仕事した。
830デフォルトの名無しさん
2019/05/14(火) 08:31:35.00ID:BLcva127
>>827
ライブラリ側は何で判定すべきなんだ?
それともNothingを渡されたら挙動は未定義とするとか?
831デフォルトの名無しさん
2019/05/14(火) 11:18:55.94ID:4FRIObo4
>>830
そのライブラリは他人が作ったものなのか?自分が作ったものなのか?
832デフォルトの名無しさん
2019/05/14(火) 11:29:20.25ID:5X9vxJLP
判定すべきものが、誰が作ったかによって変わる?
833デフォルトの名無しさん
2019/05/14(火) 12:37:11.77ID:W+bs/bzK
ライブラリに状態を持つプロパティがあればいい。

他人が作ったものを使うしかなく、オブジェクトがNothingかどうかでしか判断できないのなら、そうするしかない。
834デフォルトの名無しさん
2019/05/14(火) 13:35:55.15ID:UTGAJPws
>>833
ライブラリ関数が引数として受け取ったオブジェクトをどうNullチェックするかの話だぞ?
835デフォルトの名無しさん
2019/05/14(火) 16:16:33.74ID:E8REZJpG
いきなりライブラリと言われても何のことやらわからない。
836デフォルトの名無しさん
2019/05/14(火) 17:30:53.68ID:UTGAJPws
>>835
>>827 が「オブジェクトの値がNothingかどうかで判断するロジック」って言ってるじゃん。
ある関数がオブジェクトを受け取ったときの判断方法の話だと思うんだけど、
自分はライブラリ作者なのでその場合どうするのがいいのか気になった。
837デフォルトの名無しさん
2019/05/14(火) 21:45:48.80ID:s0Vi/y5R
普通にエラーでブレイクすればいいじゃん
838デフォルトの名無しさん
2019/05/14(火) 22:22:18.25ID:jcYCvcdA
>>837
エラーとは限らないけど変数の状態に応じて処理を分けたいと言うのはある。
空のオブジェクトに対してはまた空を返すとかね。
>>829の言ってることはわかるんだけど、>>827>>828の主張がわからん。
Nothing判定はシンプルだけどTypeNameやenumだともっと分岐のパターンが増えちゃうじゃん。
839デフォルトの名無しさん
2019/05/14(火) 23:23:54.78ID:+OBjJPst
>>836
世の中、変なやつがいて、オブジェクト変数に値をセットして、何も変わるはずがないのに、直後にオブジェクト変数の値がNothingかどうか判定するコードを書くやつがいる。
840デフォルトの名無しさん
2019/05/14(火) 23:30:59.65ID:KmX6ljlC
代入が成功したかどうか確認するテクニックも存在するから、そういう分野からの転職かな?
具体的には、コンパイラの型チェックを使った裏技だったり、ハードウェアの故障チェックなんかで使われる
841デフォルトの名無しさん
2019/05/15(水) 00:37:47.48ID:yOOg6UjC
直後であってもサブルーチンに分かれてるなら
入力情報のチェックを行うのは普通のこと
842デフォルトの名無しさん
2019/05/15(水) 02:24:21.58ID:MwugOkQt
なんか例のCプログラマがしつこいけど、いまどき関係ない別プロセスがメモリ上の値を書き換えたりするミスは、OSレベルでもCPUレベルでもあるので、持論を批判されていると思って反論しなくていいよ。

ここは漠然としたVBAのスレッドだから、見ているひとにはあなたの言うことは難しくて理解できないと思うよ。

スルー力がないのか、寂しくてかまってほしいのか知らないけど、要はクソコードを書くなと言ってるだけだ。
843デフォルトの名無しさん
2019/05/15(水) 02:28:07.88ID:MwugOkQt
なんでVBAスレで組み込み系のショボいハードウェアでのプログラミングを語っているのか?

ハードウェア、OS、ミドルウェア、プログラミング言語によって考え方やどこまで想定するのかは全然、違うからいっしょくたにしないでもらいたい。
844デフォルトの名無しさん
2019/05/15(水) 02:29:01.28ID:O3OiMSIx
一般ユーザー権限のアプリで別プロセスのメモリにアクセスできたのは、平成どころか昭和時代の話ですよ、おじいちゃん
希にOSやCPUのバグ騒ぎが起きますが、そんなのは例外中の例外なんで普通は気にしなくていいことです
845デフォルトの名無しさん
2019/05/15(水) 02:37:35.16ID:MwugOkQt
Windows 95、98、98SE、MeがいつのOSかもわからないのか
846デフォルトの名無しさん
2019/05/15(水) 05:12:46.46ID:TahQLJDH
そこまでわかってるのに、タチの悪いやつだな
847デフォルトの名無しさん
2019/05/15(水) 16:00:34.96ID:D3RbfE7K
イベント用インスタンスはPublicでやるの?
848デフォルトの名無しさん
2019/05/15(水) 20:12:16.23ID:XVltvZnu
せっかくのイベントなのにPrivateにしたら星飛雄馬のクリスマスパーティーみたいになるじゃん
849デフォルトの名無しさん
2019/05/15(水) 20:14:51.37ID:RIeke8Yt
>>848
座蒲団3枚あげる
850デフォルトの名無しさん
2019/05/15(水) 20:49:39.00ID:WHH9UP0v
何か面白いこと言った?
全然わからない。
興味あるからなぜ面白いか教えて?
851デフォルトの名無しさん
2019/05/16(木) 02:08:04.88ID:Ab5DOH6n
>>850
ニコ動



lud20251007020039ca

ID:BVBInYIbのレス一覧:


227デフォルトの名無しさん
2016/09/28(水) 19:27:48.59ID:BVBInYIb
vbaの And, Or って短絡評価してくれないの???
228デフォルトの名無しさん
2016/09/28(水) 20:30:34.84ID:X231kNmm
>>227
普通しない
(常にしないかどうかは知らんけど)
229デフォルトの名無しさん
2016/09/28(水) 22:20:25.14ID:w7cfX4QA
X(n) And Y(m) で X(n) = False だった場合、Y(m) は評価しなくても式が False と確定する
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で動いてしまってエラーになってはまったわ。
232デフォルトの名無しさん
2016/09/29(木) 12:46:05.66ID:tIM+raH6
VBAあるある
233デフォルトの名無しさん
2016/10/06(木) 19:51:33.65ID:prbbit7d
.NetならOrElseやAndAlsoが使えるし
Nullable指定も出来るから便利なんだけどなー

まあ無いものねだりしても始まらないか
234デフォルトの名無しさん
2016/10/08(土) 17:43:11.29ID:fiaM9vLl
VB(A)はWithとかある割にそういうとこは全然気が利かないよな
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 逆引き辞典パーフェクト 」は名著だよ
238デフォルトの名無しさん
2016/10/28(金) 04:23:54.86ID:s9odN72t
>>237
ありがとうございます。
クラスや多段階配列、イベント自作、擬似コントロール配列あたりの情報がある書籍はありませんか?
239デフォルトの名無しさん
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
249デフォルトの名無しさん
2017/02/07(火) 07:09:26.95ID:HIDKMkau
>>246
条件によるだろ
思いつきで即答すんなアホ
250デフォルトの名無しさん
2017/02/07(火) 07:27:10.54ID:ff698yUf
>>249
条件って
ファイル本体に埋め込みたい
ってことだろ
>>246 の保存場所がどこの事を言ってるのかよくわからんが >>245 より >>248 の方がはるかにマシ
251デフォルトの名無しさん
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:diTiDCUQ
>>254
> 変な場所に
透明のシェイプとかのことですね、わかります
256デフォルトの名無しさん
2017/02/13(月) 17:14:33.92ID:QPcPOced
50枚のスライドが入ったパワポが5個あります。
これを統合したいのですが
ファイル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:uIQboeV9
>>256
この作業用を何回も繰り返さないといけないの?
1度きりならあなたの場合は手作業の方が早い気が
262デフォルトの名無しさん
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(新規のファイル)
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

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1432173164/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 
  ↓この板の人気?スレ↓(一覧)
 
シェルスクリプト総合 その29
くだすれPython(超初心者用) その36
WPF(.NET, WinUI) GUIプログラミング Part33
次世代言語18 Go Rust Elixir Kotlin TypeScript
Ruby 初心者スレッド Part 59
オブジェクトチンポシコシコ隔離病棟
C#は糞2.0
ガチで便利な開発ツールを挙げるスレ
人工知能を作ろうver0.0.7
トランプであらゆるアリゴリズム
EclipsでJavaによるプロジェクトを製造
Java入門・初心者質問スレ Part.3
Xamarin Part6
バージョン管理システムについて語るスレ10
LinuxカーネルはC言語なのにオブジェクト指向
ChatGPTすごいな。これなら料理下手な俺でも
VBScriptについて必死に話し合うスレ
最近の奴は0.001秒で何命令実行できるかも知らない
【統計分析】機械学習・データマイニング29
プログラミング未経験だけど覚えたい言語がある
【会津】パソコン甲子園2004【若松】
Kotlin
くだすれPython(超初心者用) その40
なぜ世界中でP2Pシステムは成功しなかったのか?
関数型言語ML (SML, OCaml, etc.), Part 7
Visual Studio Code / VSCode Part13
Rust part17
これって解読可能ですか?
Perlについての罵倒スレ 63箱目
15:19:48 up 25 days, 6:41, 2 users, load average: 299.07, 325.12, 309.97

in 0.080613851547241 sec @[email protected] on 111705