X



VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
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/
0003デフォルトの名無しさん
垢版 |
2015/05/22(金) 20:11:01.96ID:HMp/+WyD
バカはレスしないでくれる?
個人の主張として批判せず、いたずらにある類として扱うのは極めて恣意的かおバカの批判にあらざる攻撃の特徴。
まあ、その軽蔑すべき発想で返した俺も反省はしてもよいが
はっきり言って精神病とバカの特徴でしかない論法でレスするなよ。
俺はバカと精神病きらいだからな。
おまえら、マジで精神病と思われる宣言的絶対主義の形而上学バカの一味は人類の公的な敵だとおもっているからな。
さしあたりお前らが馬鹿にされていることは科学的認識の健全性をそれなりに示すから喜ばしいがな。

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

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

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

ということがしたいですが可能でしょうか。
スタイル名を指定して本文内を検索する、という例が見つからず困っております。
0007デフォルトの名無しさん
垢版 |
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
0009デフォルトの名無しさん
垢版 |
2015/06/15(月) 17:19:16.55ID:pR/1zNa6
>>7
受信したメールを置換ってできないのでは?
置換したファイルをエクスポートするのですか?
0010デフォルトの名無しさん
垢版 |
2015/06/16(火) 22:15:42.00ID:x8vn2cko
すみません、受信メールではなく、作成中のメールです。
PCからガラケーに送ると、Enter改行だと無視されてしまうので、送る前にボタンを押してShiftEnter改行に変えたいのです。
リンク付きでPCの人にも送るので、HTMLメールのまま送りたいので。
0011デフォルトの名無しさん
垢版 |
2015/06/17(水) 02:45:22.84ID:WySeJcTb
>>10
リボンの編集→置換で(ワイルドカードを使用する)^13と^11を指定すればウィンドウからはできましたが、
この機能に該当するメソッドがどうにも探せないですね。
参考にされたコードはワードのものなんですけど、OUTLOOKで使うにはちょっと無理そうです。
0012デフォルトの名無しさん
垢版 |
2015/06/30(火) 10:29:12.58ID:ewTLWEfL
初心者から始め、2年ほど1人でVBA業務をしていたのですが
そろそろ引き継ぎ等も考え、コーディング規約のようなものを作成しようと考えています。
各プログラムで命名規則も違うため、統一したいのですが今ひとつ可読性の高い命名というのがわかりません。
修正前の変数宣言のコードを記載しますので、ぜひ添削していただけないでしょうか。
なお、グローバル変数宣言しているのは当時、この方法が一番良いと思ったためです。
0013デフォルトの名無しさん
垢版 |
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" '変動税率
0014デフォルトの名無しさん
垢版 |
2015/06/30(火) 16:19:51.35ID:GcuTOY9X
>>13
工事をConと省略せずにconstruction_xxxと書くべきだと思うが、それよりもワークシートのセル番地を固定文字列で定義するのはまずいだろう。
一行ずらしましょう、とかするときどうするの?不自由この上ない。
0016デフォルトの名無しさん
垢版 |
2015/06/30(火) 18:04:04.25ID:RGb3IB+F
>>14
セル番地の固定文字列については改めて見るとすごくおかしいと思いました。
修正したいですが、皆さんワークシートやセル番地の定数はどのようにされているのでしょうか。
検索はするものの、なかなか見つけられず困っています。
>>15
気づきませんでした、すみませんありがとうございます。
0017デフォルトの名無しさん
垢版 |
2015/06/30(火) 19:44:23.68ID:4fqzjiG2
セル番地はセルに名前を付ける
列番号はenumにまとめる
シート名はconst
基本適当
0018デフォルトの名無しさん
垢版 |
2015/07/01(水) 22:28:04.95ID:DXkWToqb
一日20項目ほどの数値データが入力されている月報の表を
月末にデータを全て消去して、同じWS上で次月の日付、曜日
の書き込まれた新しいフォームに更新したいのですが、
マクロで実現可能でしょうか?
0020デフォルトの名無しさん
垢版 |
2015/07/01(水) 23:04:39.40ID:DXkWToqb
やってみたけど30日までの月や31までの月などがあって
上手く行かないのです。
0021デフォルトの名無しさん
垢版 |
2015/07/01(水) 23:05:37.19ID:DXkWToqb
どこかにサンプルコードでも落ちてないでしょうか?
0023デフォルトの名無しさん
垢版 |
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
0025デフォルトの名無しさん
垢版 |
2015/07/02(木) 14:46:01.74ID:AbwDTtrn
年月は、ボックスからプルダウンリストで指定
するだけです。ただ、指定年月の1〜月末までの日付、曜日を月報の1.2行目に縦に列記するコードが出来ないのです。
0026デフォルトの名無しさん
垢版 |
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
0027デフォルトの名無しさん
垢版 |
2015/07/02(木) 19:18:37.45ID:zxCnKqA7
何とかできそうです。ありがとうございました。
0028デフォルトの名無しさん
垢版 |
2015/07/02(木) 20:29:21.19ID:Mdba4OI7
>>14
なんやわからん英語で書かれている方がよっぽど分かりずらいので、
あくまでもEXCELマクロで使用するスクリプトなのでコメントに書いている
そのコードを外人に見せるなら英語が望ましいけど、
漢字をそのまま使えばいいかと。
工事名称等は重複してるので、設定_工事名称とかになるんでしょうかねー。

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

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

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

>>33
いや、だから

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

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

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

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

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

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

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

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

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

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

分かりやすいソースのほうが、修正工程の見積もりだって立てやすい
お前のいう相対座標は、その一つの絶対座標に対して成り立っているんだから
見出しが追加されてずれる程度ならいいが、途中の箇所に複数追加変更されたら
むしろ修正面倒なんじゃね?
数万も入力させるセルがあるなんてシートの設計のがおかしいと思うが
数万のセルがあちらこちら変更になるのなら簡単で見やすい定義を切っている
ほうが引き継ぎもしやすいし、修正もしやすいってわからんのか?
0042デフォルトの名無しさん
垢版 |
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)
・・・

になる程度の話でしょ?

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

後任の人があらかじめ何の予備知識もないなら全部の要素を直接指定しているのかそうでないか自体、
少なくともコードを全部読まなきゃ判断できないわけで、それなら相対指定で書いてもおなじことです。
0043デフォルトの名無しさん
垢版 |
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)
・・・
0044デフォルトの名無しさん
垢版 |
2015/07/07(火) 05:48:03.16ID:PlDHyacp
さらに間違ってた
工事_AがRange型ならそれ以降にRange(工事_A)なんて書く必要なかった

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

応用力ないの?

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

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

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

> めんどくさいし

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

だろ

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

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

>>48
> どう書いてもたいして変わらんから、ごちゃごちゃ言い出した >>29 とか >>31 がバカと言う主張なら納得
0059デフォルトの名無しさん
垢版 |
2015/07/08(水) 13:02:19.06ID:KchLLrX8
>>57
>個人の感想です
>って書いといた方がいいんじゃないか

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

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

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

>どう書いても

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

またその話?

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

って書かれてますよ。

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

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

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

落・ち・着・け・よ
0065デフォルトの名無しさん
垢版 |
2015/07/08(水) 21:21:46.83ID:KchLLrX8
>>63
>該当の箇所を引用してみて

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

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

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

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

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

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

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

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

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

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

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

>落・ち・着・け・よ

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

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

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

>>66
帳票って見たことないの?
結構スカスカだよ
例えばこんな奴
https://garage.plus.co.jp/guide/estimate/image/egd_itm_1.gif
表の部分は元々複数出力するので VBA でループ回すから位置を変えるのは問題ない
ありがちなのは会社名とか見積もり番号の位置を変えたいとかで、他に影響することはあまりない
0068デフォルトの名無しさん
垢版 |
2015/07/08(水) 22:44:42.67ID:KchLLrX8
>>67
いや、それ言い出したらあなたの主張だって単なる個人の意見ですよ
たとえば帳票はスカスカだってのがあなたの意見なわけですが
そういうのじゃない表だってあるんですよ

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

あなたの主張が普遍的意義を持ってるならともかく、
こういう明らかな反例がある以上、
俺の根拠のみを私的意見だと言い切る資格はあなたにはないです。
0069デフォルトの名無しさん
垢版 |
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
ttps://msdn.microsoft.com/ja-jp/library/cc392241.aspx

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

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

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

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

また...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

書いてあるでしょ?

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

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

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

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

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

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

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

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

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

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

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

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

Sub ReplaceSample()

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

End Sub
0079デフォルトの名無しさん
垢版 |
2015/07/11(土) 02:27:12.83ID:lfRSVC1W
>>77
>これって何なんですか?
WordでSHIFT+Enterを入力したときに入る文字です

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

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

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

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

よろしくお願いします。
008685
垢版 |
2015/07/29(水) 22:12:54.99ID:JQYDYy2G
すいません、勘違いがありました。問題なく出来ました。
0087デフォルトの名無しさん
垢版 |
2015/08/04(火) 13:20:19.14ID:Xu3GeQZL
OWCのグラフで値が空のとこを非表示にするにはどうしたらいいですか?
0089デフォルトの名無しさん
垢版 |
2015/08/18(火) 16:30:28.51ID:1oq6H4HA
PowerPointでpptxを開いてPDFで保存するvbscriptを
書いたんですが発行中ダイアログが出てしまいます。
これを出ないようにする方法はないでしょうか?
0093デフォルトの名無しさん
垢版 |
2015/08/30(日) 22:49:46.81ID:PtUjiQ8D
>>89
試しにパワポにマクロでPDF出力を作ってみましたが
別に何も出ませんでしたよ?
Office2013ですけど。
0094デフォルトの名無しさん
垢版 |
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
0095デフォルトの名無しさん
垢版 |
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

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

これでクリエイトするオブジェクトです。
CreateObject("InternetExplorer.Application")
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況