VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK
ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください
VBAを開発環境としていろいろ作っちゃいましょう
前スレ
VBAなんでも質問スレ
http://peace.2ch.net/test/read.cgi/tech/1342087380/
関連スレ
Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419718732/
Access VBA 質問スレ Part1
http://peace.2ch.net/test/read.cgi/tech/1328536426/
VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/
Excel総合相談所 118 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/bsoft/1430352555/
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2015/05/21(木) 10:52:44.71ID:KLv0vQmm2015/05/21(木) 10:55:03.32ID:KLv0vQmm
前スレ埋まってたから立てた
2015/05/22(金) 20:11:01.96ID:HMp/+WyD
バカはレスしないでくれる?
個人の主張として批判せず、いたずらにある類として扱うのは極めて恣意的かおバカの批判にあらざる攻撃の特徴。
まあ、その軽蔑すべき発想で返した俺も反省はしてもよいが
はっきり言って精神病とバカの特徴でしかない論法でレスするなよ。
俺はバカと精神病きらいだからな。
おまえら、マジで精神病と思われる宣言的絶対主義の形而上学バカの一味は人類の公的な敵だとおもっているからな。
さしあたりお前らが馬鹿にされていることは科学的認識の健全性をそれなりに示すから喜ばしいがな。
それにしても、単なる知識を披露しあっているだけの時は頭良さそうなふりはできるが、
いよいよ自身の認識を問われる事態になるとここにいる連中、そこの浅さを露呈するやつ多すぎ
所詮、2chだな
個人の主張として批判せず、いたずらにある類として扱うのは極めて恣意的かおバカの批判にあらざる攻撃の特徴。
まあ、その軽蔑すべき発想で返した俺も反省はしてもよいが
はっきり言って精神病とバカの特徴でしかない論法でレスするなよ。
俺はバカと精神病きらいだからな。
おまえら、マジで精神病と思われる宣言的絶対主義の形而上学バカの一味は人類の公的な敵だとおもっているからな。
さしあたりお前らが馬鹿にされていることは科学的認識の健全性をそれなりに示すから喜ばしいがな。
それにしても、単なる知識を披露しあっているだけの時は頭良さそうなふりはできるが、
いよいよ自身の認識を問われる事態になるとここにいる連中、そこの浅さを露呈するやつ多すぎ
所詮、2chだな
2015/05/26(火) 09:57:20.64ID:98AIg8rM
ここまでテンプレ
2015/05/26(火) 11:15:15.08ID:IGUKy8Mq
6デフォルトの名無しさん
2015/05/28(木) 19:23:08.79ID:S82MiYOL どこかわからんのでココで。
WordVBAで質問です。
あらかじめスタイルを本文内に設定しておき、
マクロで指定したスタイルが設定されている箇所を検索→
そのスタイルが指定されている場所の文章の置き換え
ということがしたいですが可能でしょうか。
スタイル名を指定して本文内を検索する、という例が見つからず困っております。
WordVBAで質問です。
あらかじめスタイルを本文内に設定しておき、
マクロで指定したスタイルが設定されている箇所を検索→
そのスタイルが指定されている場所の文章の置き換え
ということがしたいですが可能でしょうか。
スタイル名を指定して本文内を検索する、という例が見つからず困っております。
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
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
2015/06/10(水) 12:51:59.79ID:Eg5H5jgh
2015/06/15(月) 17:19:16.55ID:pR/1zNa6
2015/06/16(火) 22:15:42.00ID:x8vn2cko
すみません、受信メールではなく、作成中のメールです。
PCからガラケーに送ると、Enter改行だと無視されてしまうので、送る前にボタンを押してShiftEnter改行に変えたいのです。
リンク付きでPCの人にも送るので、HTMLメールのまま送りたいので。
PCからガラケーに送ると、Enter改行だと無視されてしまうので、送る前にボタンを押してShiftEnter改行に変えたいのです。
リンク付きでPCの人にも送るので、HTMLメールのまま送りたいので。
2015/06/17(水) 02:45:22.84ID:WySeJcTb
>>10
リボンの編集→置換で(ワイルドカードを使用する)^13と^11を指定すればウィンドウからはできましたが、
この機能に該当するメソッドがどうにも探せないですね。
参考にされたコードはワードのものなんですけど、OUTLOOKで使うにはちょっと無理そうです。
リボンの編集→置換で(ワイルドカードを使用する)^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" '変動税率
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" '変動税率
2015/06/30(火) 16:19:51.35ID:GcuTOY9X
>>13
工事をConと省略せずにconstruction_xxxと書くべきだと思うが、それよりもワークシートのセル番地を固定文字列で定義するのはまずいだろう。
一行ずらしましょう、とかするときどうするの?不自由この上ない。
工事をConと省略せずにconstruction_xxxと書くべきだと思うが、それよりもワークシートのセル番地を固定文字列で定義するのはまずいだろう。
一行ずらしましょう、とかするときどうするの?不自由この上ない。
2015/06/30(火) 16:46:45.95ID:ybpzKx4V
Detaが気になる・・・
16デフォルトの名無しさん
2015/06/30(火) 18:04:04.25ID:RGb3IB+F2015/06/30(火) 19:44:23.68ID:4fqzjiG2
セル番地はセルに名前を付ける
列番号はenumにまとめる
シート名はconst
基本適当
列番号はenumにまとめる
シート名はconst
基本適当
18デフォルトの名無しさん
2015/07/01(水) 22:28:04.95ID:DXkWToqb 一日20項目ほどの数値データが入力されている月報の表を
月末にデータを全て消去して、同じWS上で次月の日付、曜日
の書き込まれた新しいフォームに更新したいのですが、
マクロで実現可能でしょうか?
月末にデータを全て消去して、同じWS上で次月の日付、曜日
の書き込まれた新しいフォームに更新したいのですが、
マクロで実現可能でしょうか?
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 どこかにサンプルコードでも落ちてないでしょうか?
2015/07/02(木) 02:39:59.24ID:9jOibGQm
翌日の日付が「1」だったらコードを実行するようにしたらいいんでない?
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
年と月が指定されればその月の日数は求められるよ
(月だけだとうるう年があるから2月に対応出来ない)
具体的やり方は複数あるだろうけど
例えばDateserial関数で指定月の翌月のゼロ日(ツイタチの前日)を求めれば出る
2015年7月の日数を求めたらこんな感じ
Sub Test()
Dim 年指定 As Long
Dim 月指定 As Long
Dim 日数 As Long
年指定 = 2015
月指定 = 7
日数 = Day(DateSerial(年指定, 月指定 + 1, 0))
End Sub
2015/07/02(木) 13:00:55.32ID:ww5oQ+GG
25デフォルトの名無しさん
2015/07/02(木) 14:46:01.74ID:AbwDTtrn 年月は、ボックスからプルダウンリストで指定
するだけです。ただ、指定年月の1〜月末までの日付、曜日を月報の1.2行目に縦に列記するコードが出来ないのです。
するだけです。ただ、指定年月の1〜月末までの日付、曜日を月報の1.2行目に縦に列記するコードが出来ないのです。
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
こんなんでどう?
対象のワークシートと年、月、を引数に指定してコールすれば
対象のシートの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 何とかできそうです。ありがとうございました。
2015/07/02(木) 20:29:21.19ID:Mdba4OI7
>>14
なんやわからん英語で書かれている方がよっぽど分かりずらいので、
あくまでもEXCELマクロで使用するスクリプトなのでコメントに書いている
そのコードを外人に見せるなら英語が望ましいけど、
漢字をそのまま使えばいいかと。
工事名称等は重複してるので、設定_工事名称とかになるんでしょうかねー。
セル番地の固定値を変数で持っているのが引っかかっているみたいですけど、
メンテするときはコードのメンテも込みになるでしょうから、
変数に代入して整理してるし良いのでは?
というか、そういう風にルールを敷けばいいとおもうの。
なんやわからん英語で書かれている方がよっぽど分かりずらいので、
あくまでもEXCELマクロで使用するスクリプトなのでコメントに書いている
そのコードを外人に見せるなら英語が望ましいけど、
漢字をそのまま使えばいいかと。
工事名称等は重複してるので、設定_工事名称とかになるんでしょうかねー。
セル番地の固定値を変数で持っているのが引っかかっているみたいですけど、
メンテするときはコードのメンテも込みになるでしょうから、
変数に代入して整理してるし良いのでは?
というか、そういう風にルールを敷けばいいとおもうの。
2015/07/03(金) 08:49:41.34ID:IELcwsmr
>>28
全体を一行下にずらす、とかするとき数十個ある変数を個々にメンテするの?
工事_A = "AO1" → 工事_A = "AO2"
工事_B = "AP1" → 工事_B = "AP2"
・・・
全体を一行下にずらす、とかするとき数十個ある変数を個々にメンテするの?
工事_A = "AO1" → 工事_A = "AO2"
工事_B = "AP1" → 工事_B = "AP2"
・・・
2015/07/03(金) 14:52:04.92ID:aFtg1Cyl
2015/07/03(金) 16:20:33.62ID:L435uo00
分りやすいっていうか、直接的だから理解はしやすいけど
修正が面倒で間違いも起きやすいね
レイアウト自体の変更ではなく、全体を一気に動かすなら
最初の一要素だけ絶対アドレスで指定して
あとはそこからの相対参照(要するにオフセット)にしておくというのもひとつの手だと思う
それなら1個いじれば全部まとめて直せる
修正が面倒で間違いも起きやすいね
レイアウト自体の変更ではなく、全体を一気に動かすなら
最初の一要素だけ絶対アドレスで指定して
あとはそこからの相対参照(要するにオフセット)にしておくというのもひとつの手だと思う
それなら1個いじれば全部まとめて直せる
2015/07/06(月) 05:20:54.03ID:UMBaWGrv
>>31
数十行にわたるコードのメンテぐらいで不満がある程度なら、
プログラム書くのは向いていないので、長いコードは書かないほうがいいと思う。
あと、ただ一つ変えれば全部まとめて直せるコードでも、
そのコードを知らない他人から見れば、結局全部見ることになると思うよ。
本当にそれでいいのかという部分も含めてテストすることになるから。
で、結局のところ別にどっちでもいいとなる。
数十行にわたるコードのメンテぐらいで不満がある程度なら、
プログラム書くのは向いていないので、長いコードは書かないほうがいいと思う。
あと、ただ一つ変えれば全部まとめて直せるコードでも、
そのコードを知らない他人から見れば、結局全部見ることになると思うよ。
本当にそれでいいのかという部分も含めてテストすることになるから。
で、結局のところ別にどっちでもいいとなる。
2015/07/06(月) 08:42:45.53ID:fhp0P+BJ
>>31
項目増えて、途中に一行追加されたら似たようなことになるでしょ
項目増えて、途中に一行追加されたら似たようなことになるでしょ
2015/07/06(月) 13:55:10.74ID:henE3y4I
向き不向きに関する思い込みだな
2015/07/06(月) 17:53:09.90ID:J6N5PkHq
2015/07/06(月) 18:38:29.56ID:fhp0P+BJ
2015/07/06(月) 21:37:27.39ID:J6N5PkHq
2015/07/06(月) 22:43:31.22ID:fhp0P+BJ
>>37
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。
普通はそうでしょ?
> 俺はあくまで他人から与えられた前提条件で考えただけの話
あまりない条件だけ考えることになんか意味があるのか?
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。
普通はそうでしょ?
> 俺はあくまで他人から与えられた前提条件で考えただけの話
あまりない条件だけ考えることになんか意味があるのか?
2015/07/06(月) 23:03:55.23ID:J6N5PkHq
2015/07/06(月) 23:42:36.40ID:QbnSMTRw
>>39
> ありえないとかいう
誰もそんなことは言ってないだろ?
お前さんも認めてるように
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多い
なら、そっちの対応を優先して設計した方がいいんじゃね?
って話
> ありえないとかいう
誰もそんなことは言ってないだろ?
お前さんも認めてるように
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多い
なら、そっちの対応を優先して設計した方がいいんじゃね?
って話
2015/07/06(月) 23:52:37.58ID:UMBaWGrv
>>37
別にセルのアドレスを固定で持ってようが、一つのアドレスに対して
相対で持ってようがどっちでもいいだろ
ケースバイケースで使い分けようとは思わないのか?
俺が言ったのは数十個(行)程度の修正から避けるために
相対座標で組んだ方が良いと思っているならプログラム組むのは
向いてないってことだよ
だから、お前は長いソースを組むような仕事は向いてないよって言ったんだよ。
せいぜい短く済むようなのを探しとけw
分かりやすいソースのほうが、修正工程の見積もりだって立てやすい
お前のいう相対座標は、その一つの絶対座標に対して成り立っているんだから
見出しが追加されてずれる程度ならいいが、途中の箇所に複数追加変更されたら
むしろ修正面倒なんじゃね?
数万も入力させるセルがあるなんてシートの設計のがおかしいと思うが
数万のセルがあちらこちら変更になるのなら簡単で見やすい定義を切っている
ほうが引き継ぎもしやすいし、修正もしやすいってわからんのか?
別にセルのアドレスを固定で持ってようが、一つのアドレスに対して
相対で持ってようがどっちでもいいだろ
ケースバイケースで使い分けようとは思わないのか?
俺が言ったのは数十個(行)程度の修正から避けるために
相対座標で組んだ方が良いと思っているならプログラム組むのは
向いてないってことだよ
だから、お前は長いソースを組むような仕事は向いてないよって言ったんだよ。
せいぜい短く済むようなのを探しとけw
分かりやすいソースのほうが、修正工程の見積もりだって立てやすい
お前のいう相対座標は、その一つの絶対座標に対して成り立っているんだから
見出しが追加されてずれる程度ならいいが、途中の箇所に複数追加変更されたら
むしろ修正面倒なんじゃね?
数万も入力させるセルがあるなんてシートの設計のがおかしいと思うが
数万のセルがあちらこちら変更になるのなら簡単で見やすい定義を切っている
ほうが引き継ぎもしやすいし、修正もしやすいってわからんのか?
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)
・・・
になる程度の話でしょ?
んでもって、何もわからない誰かに保守を引き継ぐのであれば表のレイアウトについてはコメントに書いておくべき物じゃないですかね?
後任の人があらかじめ何の予備知識もないなら全部の要素を直接指定しているのかそうでないか自体、
少なくともコードを全部読まなきゃ判断できないわけで、それなら相対指定で書いてもおなじことです。
ああ、ごめん
「ありえない」じゃなくて「あまりない」だったか
どっちにせよレアケースではないのでそこが重要とは思わんけど
>>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)
・・・
になる程度の話でしょ?
んでもって、何もわからない誰かに保守を引き継ぐのであれば表のレイアウトについてはコメントに書いておくべき物じゃないですかね?
後任の人があらかじめ何の予備知識もないなら全部の要素を直接指定しているのかそうでないか自体、
少なくともコードを全部読まなきゃ判断できないわけで、それなら相対指定で書いてもおなじことです。
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)
・・・
工事_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)
・・・
2015/07/07(火) 05:48:03.16ID:PlDHyacp
さらに間違ってた
工事_AがRange型ならそれ以降にRange(工事_A)なんて書く必要なかった
まぁ、何も知らずにコードを読んで表のレイアウトを理解できるかどうかとか
表の変更にかかるコストとかには大して影響ない話だけど
工事_AがRange型ならそれ以降にRange(工事_A)なんて書く必要なかった
まぁ、何も知らずにコードを読んで表のレイアウトを理解できるかどうかとか
表の変更にかかるコストとかには大して影響ない話だけど
2015/07/07(火) 07:47:40.19ID:yxtOW/kO
>>42
> どっちにせよレアケースではない
いや、レアケースかどうかじゃなくて
> 仕様変更で項目順の変更とか途中に項目追加とか
と比較しての話なんだが...
ひょっとして論理的な思考ができない人なの?
> 少なくともコードを全部読まなきゃ判断できないわけで、それなら相対指定で書いてもおなじことです。
セルアドレスなら一目でどこを指してるのかわかるけど、Offset( ) だとちょっと面倒でしょ?
そもそも、自分で間違えてるようじゃ説得力 0 だしね w
> どっちにせよレアケースではない
いや、レアケースかどうかじゃなくて
> 仕様変更で項目順の変更とか途中に項目追加とか
と比較しての話なんだが...
ひょっとして論理的な思考ができない人なの?
> 少なくともコードを全部読まなきゃ判断できないわけで、それなら相対指定で書いてもおなじことです。
セルアドレスなら一目でどこを指してるのかわかるけど、Offset( ) だとちょっと面倒でしょ?
そもそも、自分で間違えてるようじゃ説得力 0 だしね w
2015/07/07(火) 08:33:01.57ID:PlDHyacp
>>45
とにかく、コストがさほど変わらん以上、そういうことは重要ではないよね、
って言ってるんだけどそれが論理的に理解できない人なの?
んで、Offsetで(R1C1形式で)書くのがいやなら
RangeでA1形式で書けばいいじゃん
そんなの瑣末なことでしょ
あと、間違えたのは夜中にトイレで起きたときに書き込んだからで
たぶんあのときだとどっちで書いても間違えてる
(普段からR1C1形式で書くのでどっちかってーと俺はA1形式のほうが間違える)
とにかく、コストがさほど変わらん以上、そういうことは重要ではないよね、
って言ってるんだけどそれが論理的に理解できない人なの?
んで、Offsetで(R1C1形式で)書くのがいやなら
RangeでA1形式で書けばいいじゃん
そんなの瑣末なことでしょ
あと、間違えたのは夜中にトイレで起きたときに書き込んだからで
たぶんあのときだとどっちで書いても間違えてる
(普段からR1C1形式で書くのでどっちかってーと俺はA1形式のほうが間違える)
2015/07/07(火) 08:34:48.94ID:xJTxnmtV
相対座標がどうたらというのは>>31が言い出したことにすぎないし、"AY0"とかいう文字列で指定すること自体がけしからんという意見。
2015/07/07(火) 12:53:11.67ID:yxtOW/kO
2015/07/07(火) 13:20:08.70ID:PlDHyacp
>>48
全体を動かす際のコストは明らかに相対参照のほうが上で、
レイアウト変更ならどっちもどっち、って話だよ。
俺個人としては表の各要素の絶対座標よりも表のレイアウト内での相対位置のほうが
重要だと思うんで可読性は相対表記のほうが上だと思う。
もちろん、range("E3").Range("G4")とは書かないよ
だからこそのOffset表記なんであって
仮に書くなら
工事_A = Range("G4")
工事_B = 工事_A.Offset(0,1)
みたいに書けば表の中での位置関係が分りやすい(、と思うってだけなんだけどね)
んでさ、一々相手の人格攻撃するのは止さないか?
反論するのは難しくないけどめんどくさいし
貴方にとっても内容を論理的に言うこと以外に自説の説得力を増す手法なんてないよ
全体を動かす際のコストは明らかに相対参照のほうが上で、
レイアウト変更ならどっちもどっち、って話だよ。
俺個人としては表の各要素の絶対座標よりも表のレイアウト内での相対位置のほうが
重要だと思うんで可読性は相対表記のほうが上だと思う。
もちろん、range("E3").Range("G4")とは書かないよ
だからこそのOffset表記なんであって
仮に書くなら
工事_A = Range("G4")
工事_B = 工事_A.Offset(0,1)
みたいに書けば表の中での位置関係が分りやすい(、と思うってだけなんだけどね)
んでさ、一々相手の人格攻撃するのは止さないか?
反論するのは難しくないけどめんどくさいし
貴方にとっても内容を論理的に言うこと以外に自説の説得力を増す手法なんてないよ
2015/07/07(火) 16:17:25.40ID:yxtOW/kO
>>49
> レイアウト変更ならどっちもどっち、って話だよ。
そんな思い込みを前提にされてもなぁ...
> 重要だと思うんで可読性は相対表記のほうが上だと思う。
> だからこそのOffset表記なんであって
応用力ないの?
> Range("E3").Range("G4")
> ってどこ?
って書いてあるんだから、レスする前に
Range("E3").Offset(3,6)
と
Range("K6")
のどっちが可読性が高いかとか考えないのか?
> めんどくさいし
君にはレスしないと言う自由があるよ
反論するのも苦労してるみたいだしね w
> レイアウト変更ならどっちもどっち、って話だよ。
そんな思い込みを前提にされてもなぁ...
> 重要だと思うんで可読性は相対表記のほうが上だと思う。
> だからこそのOffset表記なんであって
応用力ないの?
> Range("E3").Range("G4")
> ってどこ?
って書いてあるんだから、レスする前に
Range("E3").Offset(3,6)
と
Range("K6")
のどっちが可読性が高いかとか考えないのか?
> めんどくさいし
君にはレスしないと言う自由があるよ
反論するのも苦労してるみたいだしね w
2015/07/07(火) 16:28:56.71ID:PlDHyacp
>>50
>どっちが可読性が高いかとか考えないのか?
うん、だからOffsetのほうが読みやすいよ
>レスしないという自由
は確かにあるし
君にも好き勝手な方言を垂れ流す手段(自由や権利ではない)はあるんだけど、
こうやってきちんと反論しといたほうが良さそうなんで仕方ないからそうしてる
>どっちが可読性が高いかとか考えないのか?
うん、だからOffsetのほうが読みやすいよ
>レスしないという自由
は確かにあるし
君にも好き勝手な方言を垂れ流す手段(自由や権利ではない)はあるんだけど、
こうやってきちんと反論しといたほうが良さそうなんで仕方ないからそうしてる
2015/07/07(火) 16:29:56.64ID:PlDHyacp
変換ミスしちゃった
×方言
○放言
×方言
○放言
2015/07/07(火) 17:37:36.10ID:yxtOW/kO
>>51
> うん、だからOffsetのほうが読みやすいよ
へー、そうなんだー、すごいねー(棒
基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利なのに、読みやすいとか笑えるわ w
あと方言とか意味不明
もう少し自分の書き込み見直した方がいいんじゃね?
> うん、だからOffsetのほうが読みやすいよ
へー、そうなんだー、すごいねー(棒
基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利なのに、読みやすいとか笑えるわ w
あと方言とか意味不明
もう少し自分の書き込み見直した方がいいんじゃね?
2015/07/07(火) 18:35:20.15ID:PlDHyacp
>>53
絶対アドレスが必要ならそうだけど
通常は表内部のレイアウトが問題なんだから
絶対アドレスは気にする必要ないよね?
それともいちいち「何々の項目はF5だ」とか気にして作業してるの?
俺は「表の1列目は@@@の項目で、2列目は***の項目だ」みたいな捉え方はするけど
絶対アドレスが必要になったことなんてないよ
変換ミスについてはまぁ申し訳ない、だけどそれは議論の結果には影響ないと思う。
絶対アドレスが必要ならそうだけど
通常は表内部のレイアウトが問題なんだから
絶対アドレスは気にする必要ないよね?
それともいちいち「何々の項目はF5だ」とか気にして作業してるの?
俺は「表の1列目は@@@の項目で、2列目は***の項目だ」みたいな捉え方はするけど
絶対アドレスが必要になったことなんてないよ
変換ミスについてはまぁ申し訳ない、だけどそれは議論の結果には影響ないと思う。
2015/07/08(水) 10:49:05.20ID:U80w5CD7
>>54
> それともいちいち「何々の項目はF5だ」とか気にして作業してるの?
いちいちそんなことをしたくないから定数で定義してるんだよ
意識するのは定数を定義するコードを書く時だけ
> 絶対アドレスが必要になったことなんてないよ
Offset( ) で書くにしても、基準のセルは絶対アドレスで指定するだろ
> それともいちいち「何々の項目はF5だ」とか気にして作業してるの?
いちいちそんなことをしたくないから定数で定義してるんだよ
意識するのは定数を定義するコードを書く時だけ
> 絶対アドレスが必要になったことなんてないよ
Offset( ) で書くにしても、基準のセルは絶対アドレスで指定するだろ
2015/07/08(水) 11:43:46.03ID:KchLLrX8
>>55
まだやるんかw
いや、基準のセルは俺も絶対アドレスで指定してますよね。
それ以外の部分では表の中での位置関係(表の何行目であるとか何列目であるとか)
についての情報のみが必要であって
それは基準セル(通常は左上端)からの相対位置が分ればそれで事足りると言ってるのです。
むしろ個々の要素についてまで絶対位置指定などしても可読性が下がるだけです。
まぁ、これはあくまでも普段からR1C1形式を好んで使ってる人間(つまり俺)の意見です。
この判断の優劣・良否・正誤等々については個々人の好みも有るでしょうから
どちらの考え方が優れているとかそういう視点での議論には決着がつかないと思いますけどね。
まだやるんかw
いや、基準のセルは俺も絶対アドレスで指定してますよね。
それ以外の部分では表の中での位置関係(表の何行目であるとか何列目であるとか)
についての情報のみが必要であって
それは基準セル(通常は左上端)からの相対位置が分ればそれで事足りると言ってるのです。
むしろ個々の要素についてまで絶対位置指定などしても可読性が下がるだけです。
まぁ、これはあくまでも普段からR1C1形式を好んで使ってる人間(つまり俺)の意見です。
この判断の優劣・良否・正誤等々については個々人の好みも有るでしょうから
どちらの考え方が優れているとかそういう視点での議論には決着がつかないと思いますけどね。
2015/07/08(水) 12:37:46.79ID:U80w5CD7
>>56
> むしろ個々の要素についてまで絶対位置指定などしても可読性が下がるだけです。
根拠もなしに下がるとか言われてもなぁ
とりあえず、
個人の感想です
って書いといた方がいいんじゃないか w
Excel マスターでない一般人は
>> 基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利なのに、読みやすいとか笑えるわ w
だろ
> どちらの考え方が優れているとかそういう視点での議論には決着がつかないと思いますけどね。
はい、ループいただきましたぁ w
>>48
> どう書いてもたいして変わらんから、ごちゃごちゃ言い出した >>29 とか >>31 がバカと言う主張なら納得
> むしろ個々の要素についてまで絶対位置指定などしても可読性が下がるだけです。
根拠もなしに下がるとか言われてもなぁ
とりあえず、
個人の感想です
って書いといた方がいいんじゃないか w
Excel マスターでない一般人は
>> 基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利なのに、読みやすいとか笑えるわ w
だろ
> どちらの考え方が優れているとかそういう視点での議論には決着がつかないと思いますけどね。
はい、ループいただきましたぁ w
>>48
> どう書いてもたいして変わらんから、ごちゃごちゃ言い出した >>29 とか >>31 がバカと言う主張なら納得
2015/07/08(水) 12:51:28.44ID:5jcTfYer
ID導入されて、本当によかった
2015/07/08(水) 13:02:19.06ID:KchLLrX8
>>57
>個人の感想です
>って書いといた方がいいんじゃないか
?
書いてますよね?
R1C1を使い慣れてる人間の意見だって。
一般人の定義がわからないけど
俺は一般人こそ表の体裁(つまり相対位置による個々の要素の関連)には気を使うけれど
その座標なんてものには関心を持たないと思いますよ。
俺自身一般人のつもりですし。
表の修正があったときに「L列から4列ずらす」ってのと
「12列目から4列ずらす」ってののどっちが分かり易いかなんて
俺に言わせりゃ一目瞭然で後者なんですけど、
あなたの言う一般人は前者を選ぶってんでしょ?
それについての価値観云々を論じることに結論が出るのかって話です。
>どう書いても
云々についてはすでに論述済みですが
全体を動かす場合には
基準セル1ヶ所のみを絶対参照で指定するほうが明らかにすぐれていますし、
レイアウトの変更であっても
Range表記で基準位置からの相対指定を用いるというのは
あくまで表の体裁の中だけに問題を帰着できるという意味で
レイアウトを記述するための手法として間違ってないと思います。
ところで、なんだか無理筋で反論続けてるように見えるのですが大丈夫ですか?
一応、われわれの議論を第三者が読んでどう判断するか
冷静に考えたほうが良いと思いますよ。
>個人の感想です
>って書いといた方がいいんじゃないか
?
書いてますよね?
R1C1を使い慣れてる人間の意見だって。
一般人の定義がわからないけど
俺は一般人こそ表の体裁(つまり相対位置による個々の要素の関連)には気を使うけれど
その座標なんてものには関心を持たないと思いますよ。
俺自身一般人のつもりですし。
表の修正があったときに「L列から4列ずらす」ってのと
「12列目から4列ずらす」ってののどっちが分かり易いかなんて
俺に言わせりゃ一目瞭然で後者なんですけど、
あなたの言う一般人は前者を選ぶってんでしょ?
それについての価値観云々を論じることに結論が出るのかって話です。
>どう書いても
云々についてはすでに論述済みですが
全体を動かす場合には
基準セル1ヶ所のみを絶対参照で指定するほうが明らかにすぐれていますし、
レイアウトの変更であっても
Range表記で基準位置からの相対指定を用いるというのは
あくまで表の体裁の中だけに問題を帰着できるという意味で
レイアウトを記述するための手法として間違ってないと思います。
ところで、なんだか無理筋で反論続けてるように見えるのですが大丈夫ですか?
一応、われわれの議論を第三者が読んでどう判断するか
冷静に考えたほうが良いと思いますよ。
2015/07/08(水) 14:00:10.16ID:U80w5CD7
>>59
> 書いてますよね?
> R1C1を使い慣れてる人間の意見だって。
皮肉も理解できないの?
そもそもそれはその上の
>> 根拠もなしに下がるとか言われてもなぁ
にかかってるんだけど、そこはスルーなのな w
> 表の修正があったときに「L列から4列ずらす」ってのと
> 「12列目から4列ずらす」ってののどっちが分かり易いかなんて
あのさあ、反論できずに悔しいのはわかるけど、「ずらす」なんて変更がどれだけあるんだ?
って話に戻すの?
普通は、>>13 の例だと 注文書番号 を少し左に寄せたいから AO1 から AN1 に移動させてくれって言われるんじゃね?
直書きならその部分のみを AO1 から AN1 に書き換えるだけ
で、君の方法だとどうなるわけ?
可読性がすごくいいんでしょ?
示してみてよ。
> ところで、なんだか無理筋で反論続けてるように見えるのですが大丈夫ですか?
> 一応、われわれの議論を第三者が読んでどう判断するか
> 冷静に考えたほうが良いと思いますよ。
鏡見た方がいいと思うよ w
> 書いてますよね?
> R1C1を使い慣れてる人間の意見だって。
皮肉も理解できないの?
そもそもそれはその上の
>> 根拠もなしに下がるとか言われてもなぁ
にかかってるんだけど、そこはスルーなのな w
> 表の修正があったときに「L列から4列ずらす」ってのと
> 「12列目から4列ずらす」ってののどっちが分かり易いかなんて
あのさあ、反論できずに悔しいのはわかるけど、「ずらす」なんて変更がどれだけあるんだ?
って話に戻すの?
普通は、>>13 の例だと 注文書番号 を少し左に寄せたいから AO1 から AN1 に移動させてくれって言われるんじゃね?
直書きならその部分のみを AO1 から AN1 に書き換えるだけ
で、君の方法だとどうなるわけ?
可読性がすごくいいんでしょ?
示してみてよ。
> ところで、なんだか無理筋で反論続けてるように見えるのですが大丈夫ですか?
> 一応、われわれの議論を第三者が読んでどう判断するか
> 冷静に考えたほうが良いと思いますよ。
鏡見た方がいいと思うよ w
2015/07/08(水) 15:15:33.15ID:KchLLrX8
>>
2015/07/08(水) 15:39:00.14ID:KchLLrX8
>>60
>根拠
ですから、>>59とかそれ以前の>>49とか>>54とか>>56とかは
全部根拠について書いてるんですが。
意図的なスルーですか?
>普通は、>>13 の例だと 注文書番号 を少し左に寄せたいから AO1 から AN1 に移動させてくれって言われるんじゃね?
>直書きならその部分のみを AO1 から AN1 に書き換えるだけ
>で、君の方法だとどうなるわけ?
いや、オフセット一個増やすだけでしょ
ところで、注文書番号 のAOは一番右端の列っぽいのであえてそこを選んでるんですか?
たとえばB列の外注業者名がずれたら残り全部ずれると思うんですけど。
んでもってそういった場合(一番右端の要素以外の変更の場合)、
「どこどこに@@って項目を追加するから、表を**の項目から全部右にX個ずらして」
みたいな話になるんじゃないでしょうか。
どうみたってオフセットのほうが簡単じゃないですか。
>鏡見た方がいいと思うよ
もちろん、俺は第三者を意識して書いてるので問題ないです。
貴方もそれで良いならこれ以上とくに言うべき事も有りません。
なお>>61は打ち間違えて送信しちゃいました。
たびたびスマン
>根拠
ですから、>>59とかそれ以前の>>49とか>>54とか>>56とかは
全部根拠について書いてるんですが。
意図的なスルーですか?
>普通は、>>13 の例だと 注文書番号 を少し左に寄せたいから AO1 から AN1 に移動させてくれって言われるんじゃね?
>直書きならその部分のみを AO1 から AN1 に書き換えるだけ
>で、君の方法だとどうなるわけ?
いや、オフセット一個増やすだけでしょ
ところで、注文書番号 のAOは一番右端の列っぽいのであえてそこを選んでるんですか?
たとえばB列の外注業者名がずれたら残り全部ずれると思うんですけど。
んでもってそういった場合(一番右端の要素以外の変更の場合)、
「どこどこに@@って項目を追加するから、表を**の項目から全部右にX個ずらして」
みたいな話になるんじゃないでしょうか。
どうみたってオフセットのほうが簡単じゃないですか。
>鏡見た方がいいと思うよ
もちろん、俺は第三者を意識して書いてるので問題ないです。
貴方もそれで良いならこれ以上とくに言うべき事も有りません。
なお>>61は打ち間違えて送信しちゃいました。
たびたびスマン
2015/07/08(水) 19:21:57.08ID:U80w5CD7
>>62
> ですから、>>59とかそれ以前の>>49とか>>54とか>>56とかは
> 全部根拠について書いてるんですが。
レス番で書かれてもわからないので、該当の箇所を引用してみて
> いや、オフセット一個増やすだけでしょ
で、それが本当に AN1 を指してるのかどうやって確認するの?
可読性がいいんだから一目でわかるんだよね?
早く示してみてよ。
> ところで、注文書番号 のAOは一番右端の列っぽいのであえてそこを選んでるんですか?
一番最初の項目を選んだだけですよ
> みたいな話になるんじゃないでしょうか。
またその話?
>>37
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。
って書かれてますよ。
> 貴方もそれで良いならこれ以上とくに言うべき事も有りません。
人のことをとやかく言う前に...
> なお>>61は打ち間違えて送信しちゃいました。
落・ち・着・け・よ
> ですから、>>59とかそれ以前の>>49とか>>54とか>>56とかは
> 全部根拠について書いてるんですが。
レス番で書かれてもわからないので、該当の箇所を引用してみて
> いや、オフセット一個増やすだけでしょ
で、それが本当に AN1 を指してるのかどうやって確認するの?
可読性がいいんだから一目でわかるんだよね?
早く示してみてよ。
> ところで、注文書番号 のAOは一番右端の列っぽいのであえてそこを選んでるんですか?
一番最初の項目を選んだだけですよ
> みたいな話になるんじゃないでしょうか。
またその話?
>>37
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。
って書かれてますよ。
> 貴方もそれで良いならこれ以上とくに言うべき事も有りません。
人のことをとやかく言う前に...
> なお>>61は打ち間違えて送信しちゃいました。
落・ち・着・け・よ
2015/07/08(水) 21:05:13.66ID:G6HCaUBj
それよりParamArrayが参照渡しできないのはなぜなんだせ?
2015/07/08(水) 21:21:46.83ID:KchLLrX8
>>63
>該当の箇所を引用してみて
>>俺個人としては表の各要素の絶対座標よりも表のレイアウト内での相対位置のほうが重要だと思うんで
可読性は相対表記のほうが上だと思う。
>>絶対アドレスが必要ならそうだけど通常は表内部のレイアウトが問題なんだから絶対アドレスは気にする必要ないよね?
>>表の中での位置関係(表の何行目であるとか何列目であるとか)についての情報のみが必要であって
それは基準セル(通常は左上端)からの相対位置が分ればそれで事足りると言ってるのです。
>>俺は一般人こそ表の体裁(つまり相対位置による個々の要素の関連)には気を使うけれど
その座標なんてものには関心を持たないと思いますよ。
以上、大体全部同じことの繰り返しですが、この辺が俺の主張する可読性に関する意見の根拠です。
本文長すぎるんで続きます。
>該当の箇所を引用してみて
>>俺個人としては表の各要素の絶対座標よりも表のレイアウト内での相対位置のほうが重要だと思うんで
可読性は相対表記のほうが上だと思う。
>>絶対アドレスが必要ならそうだけど通常は表内部のレイアウトが問題なんだから絶対アドレスは気にする必要ないよね?
>>表の中での位置関係(表の何行目であるとか何列目であるとか)についての情報のみが必要であって
それは基準セル(通常は左上端)からの相対位置が分ればそれで事足りると言ってるのです。
>>俺は一般人こそ表の体裁(つまり相対位置による個々の要素の関連)には気を使うけれど
その座標なんてものには関心を持たないと思いますよ。
以上、大体全部同じことの繰り返しですが、この辺が俺の主張する可読性に関する意見の根拠です。
本文長すぎるんで続きます。
2015/07/08(水) 21:22:59.14ID:KchLLrX8
>>65の続きです
ただ、ここに来て根本的な部分の食い違いを実感してるのですが、
>それが本当に AN1 を指してるのかどうやって確認するの?
>可読性がいいんだから一目でわかるんだよね?
というあなたの指摘自体が俺の考えている可読性の概念とは食い違ってます。
あなたは結局シート内でのセルの絶対位置指定やその確認でしか可読性を考えていないようで
俺は逆にそんなものにはこだわらず表のレイアウト中での位置指定という視点で可読性を捉えているわけです。
あなたのやり方は確かにあなたの言うようなシチュエーションでは有効でしょうが、
逆にここまでで俺の主張したようなシチュエーションでは可読性やメンテナンス性が劣るということになります。
たとえばこれですけど
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。
途中に項目追加したらそこから先は全部ずれるでしょ?
(よほどスカスカの表なら別ですが、それなりに埋まってる表の場合にはそうならざるを得ません。)
そうするとセルアドレス全部直さなきゃならなくなります。
その場合には全部同じ変更(当該変更箇所を一律にオフセットずらす処理)
で対処できることってメンテナンスには大きなアドバンテージだと思いますよ。
まさか普通の業務ってのがスカスカの表でセル一個だけ変更する作業ばかりだなんて虫の良い事言わないですよね?
実際俺んとこじゃあこういう多数のセルを移動するような業務ばかりなんで俺にとってはそっちのほうが普通なんですよ。
>落・ち・着・け・よ
まぁ、打ち間違いとか変換ミスは良くやっちまうんでスミマセンとしか良いようないけど
重要なのは主張の論旨であってそれは読み手側にある程度の知識があれば
変換ミス程度は何がいいたいのか読解できるだろうからまぁ別にいいかなと思ってます。
ただ、ここに来て根本的な部分の食い違いを実感してるのですが、
>それが本当に AN1 を指してるのかどうやって確認するの?
>可読性がいいんだから一目でわかるんだよね?
というあなたの指摘自体が俺の考えている可読性の概念とは食い違ってます。
あなたは結局シート内でのセルの絶対位置指定やその確認でしか可読性を考えていないようで
俺は逆にそんなものにはこだわらず表のレイアウト中での位置指定という視点で可読性を捉えているわけです。
あなたのやり方は確かにあなたの言うようなシチュエーションでは有効でしょうが、
逆にここまでで俺の主張したようなシチュエーションでは可読性やメンテナンス性が劣るということになります。
たとえばこれですけど
> 仕様変更で項目順の変更とか途中に項目追加とかのほうが多いだろうけど。
途中に項目追加したらそこから先は全部ずれるでしょ?
(よほどスカスカの表なら別ですが、それなりに埋まってる表の場合にはそうならざるを得ません。)
そうするとセルアドレス全部直さなきゃならなくなります。
その場合には全部同じ変更(当該変更箇所を一律にオフセットずらす処理)
で対処できることってメンテナンスには大きなアドバンテージだと思いますよ。
まさか普通の業務ってのがスカスカの表でセル一個だけ変更する作業ばかりだなんて虫の良い事言わないですよね?
実際俺んとこじゃあこういう多数のセルを移動するような業務ばかりなんで俺にとってはそっちのほうが普通なんですよ。
>落・ち・着・け・よ
まぁ、打ち間違いとか変換ミスは良くやっちまうんでスミマセンとしか良いようないけど
重要なのは主張の論旨であってそれは読み手側にある程度の知識があれば
変換ミス程度は何がいいたいのか読解できるだろうからまぁ別にいいかなと思ってます。
2015/07/08(水) 21:45:49.65ID:t0H2tWbI
>>65
根拠頂戴って言ったら
> >>俺個人としては表の各要素の絶対座標よりも表のレイアウト内での相対位置のほうが重要だと思うんで
> 可読性は相対表記のほうが上だと思う。
〜と思うってどこが根拠なんだよ... w
単なる君の意見でしょ
>>66
帳票って見たことないの?
結構スカスカだよ
例えばこんな奴
https://garage.plus.co.jp/guide/estimate/image/egd_itm_1.gif
表の部分は元々複数出力するので VBA でループ回すから位置を変えるのは問題ない
ありがちなのは会社名とか見積もり番号の位置を変えたいとかで、他に影響することはあまりない
根拠頂戴って言ったら
> >>俺個人としては表の各要素の絶対座標よりも表のレイアウト内での相対位置のほうが重要だと思うんで
> 可読性は相対表記のほうが上だと思う。
〜と思うってどこが根拠なんだよ... w
単なる君の意見でしょ
>>66
帳票って見たことないの?
結構スカスカだよ
例えばこんな奴
https://garage.plus.co.jp/guide/estimate/image/egd_itm_1.gif
表の部分は元々複数出力するので VBA でループ回すから位置を変えるのは問題ない
ありがちなのは会社名とか見積もり番号の位置を変えたいとかで、他に影響することはあまりない
2015/07/08(水) 22:44:42.67ID:KchLLrX8
>>67
いや、それ言い出したらあなたの主張だって単なる個人の意見ですよ
たとえば帳票はスカスカだってのがあなたの意見なわけですが
そういうのじゃない表だってあるんですよ
ウチは科学技術系の職種でして
縦に時系列、横に計測項目(たとえば気温だったり風速だったり)で
複数の計測データをズラズラと並べるんですが
計測するパラメータが増えたり減ったりするんで表のレイアウトが変わるわけです。
そうすると一気に複数個所いじるのが当たり前になるわけです。
これってこっちの業界じゃあ結構当たり前のことで、
そういう時に絶対セル指定なんて使いづらくてやってらんないですよ。
あなたの主張が普遍的意義を持ってるならともかく、
こういう明らかな反例がある以上、
俺の根拠のみを私的意見だと言い切る資格はあなたにはないです。
いや、それ言い出したらあなたの主張だって単なる個人の意見ですよ
たとえば帳票はスカスカだってのがあなたの意見なわけですが
そういうのじゃない表だってあるんですよ
ウチは科学技術系の職種でして
縦に時系列、横に計測項目(たとえば気温だったり風速だったり)で
複数の計測データをズラズラと並べるんですが
計測するパラメータが増えたり減ったりするんで表のレイアウトが変わるわけです。
そうすると一気に複数個所いじるのが当たり前になるわけです。
これってこっちの業界じゃあ結構当たり前のことで、
そういう時に絶対セル指定なんて使いづらくてやってらんないですよ。
あなたの主張が普遍的意義を持ってるならともかく、
こういう明らかな反例がある以上、
俺の根拠のみを私的意見だと言い切る資格はあなたにはないです。
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
アスキーコード一覧だと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
2015/07/08(水) 23:43:30.20ID:t0H2tWbI
>>68
> いや、それ言い出したらあなたの主張だって単なる個人の意見ですよ
残念ながら違う
例えば...
> 基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利
これには事実しか書いてない
俺の意見ではない
また...
> たとえば帳票はスカスカだってのがあなたの意見なわけですが
のようにスカスカに感じるかどうかは個人差があるから、実際の例を出してる
スカスカに思うかどうかは実物を見た人が決めればいい
> そういうのじゃない表だってあるんですよ
それはあると思うが、>>13 の帳票が...
> 計測するパラメータが増えたり減ったりするんで表のレイアウトが変わるわけです。
とは全然違うことぐらいはわかるだろ?
また、どっちの帳票が世の中に多いかもわかるだろ?
あと、時系列で入力するってことは複数の行を扱うんだろ?
>>67 にも書いたけどそう言う奴は普通 VBA のループで処理するから、元々絶対アドレス云々の話じゃないと思うんだが
> いや、それ言い出したらあなたの主張だって単なる個人の意見ですよ
残念ながら違う
例えば...
> 基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利
これには事実しか書いてない
俺の意見ではない
また...
> たとえば帳票はスカスカだってのがあなたの意見なわけですが
のようにスカスカに感じるかどうかは個人差があるから、実際の例を出してる
スカスカに思うかどうかは実物を見た人が決めればいい
> そういうのじゃない表だってあるんですよ
それはあると思うが、>>13 の帳票が...
> 計測するパラメータが増えたり減ったりするんで表のレイアウトが変わるわけです。
とは全然違うことぐらいはわかるだろ?
また、どっちの帳票が世の中に多いかもわかるだろ?
あと、時系列で入力するってことは複数の行を扱うんだろ?
>>67 にも書いたけどそう言う奴は普通 VBA のループで処理するから、元々絶対アドレス云々の話じゃないと思うんだが
2015/07/09(木) 00:51:54.46ID:FZuq59n/
>>70
>これには事実しか書いてない
それ以前の前提条件として絶対アドレスを取得する必要があるかどうか
絶対アドレスでの指定が有効かどうか
といった論点が抜けてますよ。
あとわたしがスカスカに対比して問題にしてるのは
つまり他の箇所を巻き込んで移動させる必要が
生じるかどうかを区別していってるのであって
見た目がどうこうの問題ではありません。
複数個所を同時に変更するかどうかです
さすがにそのぐらいは前後の文脈から汲み取っていただかないと困ります。
どうにもご自分の土俵のみで話を進めようとしてらっしゃるようですが
どちらが多いかはともかくとして
(実際のところ世の中に技術系の業種とそうでない業種がどれぐらいの割合で存在してるかなんて知りません)
それにしたって>>36でいわれるような「滅多にないケース」というほどではないでしょうから
それについての言及はあってしかるべきです。
念のため指摘しておきますが
パラメータの増減は列方向ですしループ云々とは関係ないですよ
>これには事実しか書いてない
それ以前の前提条件として絶対アドレスを取得する必要があるかどうか
絶対アドレスでの指定が有効かどうか
といった論点が抜けてますよ。
あとわたしがスカスカに対比して問題にしてるのは
つまり他の箇所を巻き込んで移動させる必要が
生じるかどうかを区別していってるのであって
見た目がどうこうの問題ではありません。
複数個所を同時に変更するかどうかです
さすがにそのぐらいは前後の文脈から汲み取っていただかないと困ります。
どうにもご自分の土俵のみで話を進めようとしてらっしゃるようですが
どちらが多いかはともかくとして
(実際のところ世の中に技術系の業種とそうでない業種がどれぐらいの割合で存在してるかなんて知りません)
それにしたって>>36でいわれるような「滅多にないケース」というほどではないでしょうから
それについての言及はあってしかるべきです。
念のため指摘しておきますが
パラメータの増減は列方向ですしループ云々とは関係ないですよ
2015/07/09(木) 08:21:56.29ID:n0IdOdTN
>>71
> それ以前の前提条件として絶対アドレスを取得する必要があるかどうか
だから相対の方が可読性が高いと言うなら、実例と根拠を出せばいいだけのこと
> 複数個所を同時に変更するかどうかです
個々の項目の細かい位置調整っ言うのは珍しくないよ
> どうにもご自分の土俵のみで話を進めようとしてらっしゃるようですが
何回も書くけど、見積書等の帳票と君のところの Excel シートみたいなのどっちが多いと思う?
> どちらが多いかはともかくとして
重要だけど不利だからスルーするってこと? w
> (実際のところ世の中に技術系の業種とそうでない業種がどれぐらいの割合で存在してるかなんて知りません)
技術系の業種でも会社なら見積書とか納品書とかの帳票はあるんだよ
> それにしたって>>36でいわれるような「滅多にないケース」というほどではないでしょうから
そこまで言うなら、どれぐらいあるんだ?
根拠とともに示してくれよ
> 念のため指摘しておきますが
> パラメータの増減は列方向ですしループ云々とは関係ないですよ
いや、少なくとも行方向はループで処理するから元々絶対アドレスでは無理だろ
そう言う状況なら列側も相対にするのは珍しくない
ただし、今回の話とは状況が違うからあまり参考にならないって話
> それ以前の前提条件として絶対アドレスを取得する必要があるかどうか
だから相対の方が可読性が高いと言うなら、実例と根拠を出せばいいだけのこと
> 複数個所を同時に変更するかどうかです
個々の項目の細かい位置調整っ言うのは珍しくないよ
> どうにもご自分の土俵のみで話を進めようとしてらっしゃるようですが
何回も書くけど、見積書等の帳票と君のところの Excel シートみたいなのどっちが多いと思う?
> どちらが多いかはともかくとして
重要だけど不利だからスルーするってこと? w
> (実際のところ世の中に技術系の業種とそうでない業種がどれぐらいの割合で存在してるかなんて知りません)
技術系の業種でも会社なら見積書とか納品書とかの帳票はあるんだよ
> それにしたって>>36でいわれるような「滅多にないケース」というほどではないでしょうから
そこまで言うなら、どれぐらいあるんだ?
根拠とともに示してくれよ
> 念のため指摘しておきますが
> パラメータの増減は列方向ですしループ云々とは関係ないですよ
いや、少なくとも行方向はループで処理するから元々絶対アドレスでは無理だろ
そう言う状況なら列側も相対にするのは珍しくない
ただし、今回の話とは状況が違うからあまり参考にならないって話
2015/07/09(木) 08:53:31.52ID:FZuq59n/
>>72
>重要だけど不利だからスルーするってこと? w
>そこまで言うなら、どれぐらいあるんだ?
>根拠とともに示してくれよ
何でこっちにばかり立証責任があるんでしょうか?
あなたが具体的な根拠を示してくださいよ
データ処理系の表なんて日本中の研究機関その他で当たり前に動いてますんで
この辺はどっちが多いとか少ないとか証明するのは無理だと思います
ですので俺は遠慮しときます
>いや、少なくとも行方向はループで処理するから元々絶対アドレスでは無理だろ
データの頭にヘッダってのが付いてるときにループ開始行が変動するってのも割りとよくある話なんで
そこはやはりループ無関係ですよ
てかあなたこっち系の話知らないだけじゃないですか?
>ただし、今回の話とは状況が違うからあまり参考にならないって話
「今回の話」ってのを勝手に局限されても困るんですけど。
表の位置指定について話してたのに
その中で絶対アドレス指定が有利な状況ばかりに
限定して話を進めないでもらえますか?
それが多いとか少ないとかを論拠にするのは
あなたがきちんと証明してからにしてくださいね
>重要だけど不利だからスルーするってこと? w
>そこまで言うなら、どれぐらいあるんだ?
>根拠とともに示してくれよ
何でこっちにばかり立証責任があるんでしょうか?
あなたが具体的な根拠を示してくださいよ
データ処理系の表なんて日本中の研究機関その他で当たり前に動いてますんで
この辺はどっちが多いとか少ないとか証明するのは無理だと思います
ですので俺は遠慮しときます
>いや、少なくとも行方向はループで処理するから元々絶対アドレスでは無理だろ
データの頭にヘッダってのが付いてるときにループ開始行が変動するってのも割りとよくある話なんで
そこはやはりループ無関係ですよ
てかあなたこっち系の話知らないだけじゃないですか?
>ただし、今回の話とは状況が違うからあまり参考にならないって話
「今回の話」ってのを勝手に局限されても困るんですけど。
表の位置指定について話してたのに
その中で絶対アドレス指定が有利な状況ばかりに
限定して話を進めないでもらえますか?
それが多いとか少ないとかを論拠にするのは
あなたがきちんと証明してからにしてくださいね
2015/07/09(木) 10:18:34.30ID:SLWTmnwe
>>69
> Word VBAで [Shift+Enter] を押したとき、「Chr(11)」が入るみたいだけど、これって何なんですか?
どこでShift+Enterを入力して、それがChr(11)だと確認した方法を教えて。
> Word VBAで [Shift+Enter] を押したとき、「Chr(11)」が入るみたいだけど、これって何なんですか?
どこでShift+Enterを入力して、それがChr(11)だと確認した方法を教えて。
2015/07/09(木) 13:00:12.23ID:n0IdOdTN
>>73
> あなたが具体的な根拠を示してくださいよ
書いてあるでしょ?
>> 基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利
> データ処理系の表なんて日本中の研究機関その他で当たり前に動いてますんで
うん、その研究機関とかが日本中の企業より多いといいね w
> この辺はどっちが多いとか少ないとか証明するのは無理だと思います
君には無理だろうから遠慮するのは正解
企業統計とか研究機関の数って公表されてて、ざっくり研究機関が 8,000件、会社は 280万社ぐらいと言うことぐらいは覚えていても損はないよ
> データの頭にヘッダってのが付いてるときにループ開始行が変動するってのも割りとよくある話なんで
で?
普通に組んでいたら開始行を変えるだけでしょ?
> そこはやはりループ無関係ですよ
まさかベタ書きしてるの? w
> 「今回の話」ってのを勝手に局限されても困るんですけど。
元々、>>13 の話
コメント見る限りは注文書の入力用シートの話であることぐらいは理解しようよ
> あなたが具体的な根拠を示してくださいよ
書いてあるでしょ?
>> 基準の位置と Offset の値の二個読まないといけないだけでも直書きより不利
> データ処理系の表なんて日本中の研究機関その他で当たり前に動いてますんで
うん、その研究機関とかが日本中の企業より多いといいね w
> この辺はどっちが多いとか少ないとか証明するのは無理だと思います
君には無理だろうから遠慮するのは正解
企業統計とか研究機関の数って公表されてて、ざっくり研究機関が 8,000件、会社は 280万社ぐらいと言うことぐらいは覚えていても損はないよ
> データの頭にヘッダってのが付いてるときにループ開始行が変動するってのも割りとよくある話なんで
で?
普通に組んでいたら開始行を変えるだけでしょ?
> そこはやはりループ無関係ですよ
まさかベタ書きしてるの? w
> 「今回の話」ってのを勝手に局限されても困るんですけど。
元々、>>13 の話
コメント見る限りは注文書の入力用シートの話であることぐらいは理解しようよ
2015/07/09(木) 22:32:24.92ID:UwaB1poA
>>74
wordで文章の途中でShift+Enterを入力して、
文章を全部選択した状態で、
マクロで↓みたいなのやったら置換されました。
Sub ReplaceSample()
Selection.Text = Replace(Selection.Text, Chr(11), "改行")
End Sub
wordで文章の途中でShift+Enterを入力して、
文章を全部選択した状態で、
マクロで↓みたいなのやったら置換されました。
Sub ReplaceSample()
Selection.Text = Replace(Selection.Text, Chr(11), "改行")
End Sub
2015/07/10(金) 22:10:41.04ID:dJeHHxuR
>>69
分かる人いないですか?
分かる人いないですか?
2015/07/10(金) 22:14:19.91ID:I8IKrBJT
>>77
その文字がいらないんなら除去すれば?
その文字がいらないんなら除去すれば?
2015/07/11(土) 02:27:12.83ID:lfRSVC1W
>>77
>これって何なんですか?
WordでSHIFT+Enterを入力したときに入る文字です
>MSDNだと
そのページはVBAのページではありません
VBScriptで定数vbVerticalTabが使えないと言ってるだけです
>これって何なんですか?
WordでSHIFT+Enterを入力したときに入る文字です
>MSDNだと
そのページはVBAのページではありません
VBScriptで定数vbVerticalTabが使えないと言ってるだけです
2015/07/11(土) 02:48:34.31ID:vE1M/d3c
2015/07/11(土) 03:32:44.18ID:lfRSVC1W
2015/07/11(土) 07:20:42.92ID:SvdcMd32
2015/07/14(火) 15:37:53.39ID:8d4NQeRS
2015/07/14(火) 20:08:07.90ID:lKDNL4b3
2015/07/27(月) 22:27:48.03ID:FZObgN+M
MSOfficeのパワーポイント2013のVBAについて、助言をお願いします。
現在、フォーマット修正用に、色々と文字列置換のVBAを作っています。
しかし、shape単位で置換を行うのですが、shape内のフォーマットが全て最初の文字のものになってしまいます。
ctrl+Hキーでできる置換のように、フォーマットを変えずに文字だけ置換する方法があれば教えて下さい。
よろしくお願いします。
現在、フォーマット修正用に、色々と文字列置換のVBAを作っています。
しかし、shape単位で置換を行うのですが、shape内のフォーマットが全て最初の文字のものになってしまいます。
ctrl+Hキーでできる置換のように、フォーマットを変えずに文字だけ置換する方法があれば教えて下さい。
よろしくお願いします。
8685
2015/07/29(水) 22:12:54.99ID:JQYDYy2G すいません、勘違いがありました。問題なく出来ました。
87デフォルトの名無しさん
2015/08/04(火) 13:20:19.14ID:Xu3GeQZL OWCのグラフで値が空のとこを非表示にするにはどうしたらいいですか?
2015/08/18(火) 10:58:33.73ID:34FW6E1T
>>87
値が空のデータを削除したら?
値が空のデータを削除したら?
2015/08/18(火) 16:30:28.51ID:1oq6H4HA
PowerPointでpptxを開いてPDFで保存するvbscriptを
書いたんですが発行中ダイアログが出てしまいます。
これを出ないようにする方法はないでしょうか?
書いたんですが発行中ダイアログが出てしまいます。
これを出ないようにする方法はないでしょうか?
2015/08/19(水) 17:21:07.83ID:leFwNaH1
>>89
ここVBAのスレ・・・
ここVBAのスレ・・・
2015/08/19(水) 21:37:19.12ID:ojYTqzwH
VBScript≠VBA
2015/08/22(土) 05:31:09.55ID:dBcaDCdy
VBScriptのスレって池沼みたいな変なコテハンがいて関わりたくないのよね
2015/08/30(日) 22:49:46.81ID:PtUjiQ8D
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
このソースだと出てしまいます。何か違いますでしょうか?
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
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
ぜんぜん見当違いだったらごめんなさい
どうもです
こちらへ誘導した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
ぜんぜん見当違いだったらごめんなさい
2015/09/05(土) 19:56:12.09ID:852S1qdl
>>94
93ですけど、そのソースをコピペしてコマンドプロンプトから
実行してみましたが、家の環境(Win10)では普通にPDFできますよ?
ダイアログも出ませんでしたよ。
実行した時はスライド1枚の軽いPPTでやったのですが、
94さんは、もしかしたら結構スライド数多いPPTだから出るんですかね?
93ですけど、そのソースをコピペしてコマンドプロンプトから
実行してみましたが、家の環境(Win10)では普通にPDFできますよ?
ダイアログも出ませんでしたよ。
実行した時はスライド1枚の軽いPPTでやったのですが、
94さんは、もしかしたら結構スライド数多いPPTだから出るんですかね?
2015/09/05(土) 20:01:53.43ID:852S1qdl
出てるダイアログが再現できないので、わからないのだけれども
↓のプロパティでどうにもならないんだとしたら、諦めるしかないのかも。
Application.DisplayAlerts
ttps://msdn.microsoft.com/ja-jp/library/office/ff746503(v=office.15).aspx
↓のプロパティでどうにもならないんだとしたら、諦めるしかないのかも。
Application.DisplayAlerts
ttps://msdn.microsoft.com/ja-jp/library/office/ff746503(v=office.15).aspx
2015/09/07(月) 12:54:20.03ID:NloI4YQK
100デフォルトの名無しさん
2015/09/08(火) 02:01:39.32ID:m7aBfM8f Windows10でie操作のマクロって動くのですか?
edgeは互換性あるわけでは無いですよね。
別にインストールするのですしょうか。
これでクリエイトするオブジェクトです。
CreateObject("InternetExplorer.Application")
edgeは互換性あるわけでは無いですよね。
別にインストールするのですしょうか。
これでクリエイトするオブジェクトです。
CreateObject("InternetExplorer.Application")
101デフォルトの名無しさん
2015/09/08(火) 12:06:16.04ID:9vjtcLlt Windows10でもieは入っているようです
ttp://simply-assi.com/windows10ie/
なら 操作は可能でないかな?
Windows10持ってるなら テストしてみるべし
自分は Win8.1だから無理だけど
ttp://simply-assi.com/windows10ie/
なら 操作は可能でないかな?
Windows10持ってるなら テストしてみるべし
自分は Win8.1だから無理だけど
102デフォルトの名無しさん
2015/09/08(火) 14:37:39.47ID:m7aBfM8f >>101
自分も実機がないのよね。
ieが残ってるいうのは聞いてるんだけど、7や8からのアップデートでも、10のクリーンインストールでも何の設定もしないでも動くのかなと。
テストしてる人とかいないかな?
自分も実機がないのよね。
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点
下記の条件が全て当てはまる会社にご注意下さい。
・IT系 in tokyo
・「社名 労基」でググると過去の2chスレが出てくる
・転職会議で2.5点
105デフォルトの名無しさん
2015/10/12(月) 22:50:34.44ID:Xy8ebFp6 今、こんなグラフがあるんですが、
http://i.imgur.com/BeOZor7.png
これを↓のようにするにはどのようにしたらいいんでしょうか?
http://i.imgur.com/7gXPOFG.png
http://i.imgur.com/BeOZor7.png
これを↓のようにするにはどのようにしたらいいんでしょうか?
http://i.imgur.com/7gXPOFG.png
106デフォルトの名無しさん
2015/10/12(月) 23:30:39.75ID:DYP6asIc107デフォルトの名無しさん
2015/10/12(月) 23:35:13.73ID:oCa7NkmO >>105
もう既に出来ているんじゃないか?
もう既に出来ているんじゃないか?
108デフォルトの名無しさん
2015/10/12(月) 23:36:26.71ID:Xy8ebFp6109デフォルトの名無しさん
2015/10/12(月) 23:40:07.79ID:Xy8ebFp6110デフォルトの名無しさん
2015/10/12(月) 23:41:53.96ID:oCa7NkmO >>108
入れ替えたグラフを既に作っているじゃないですか?それで完成しているのでは?
入れ替えたグラフを既に作っているじゃないですか?それで完成しているのでは?
111デフォルトの名無しさん
2015/10/13(火) 00:02:52.88ID:X9js2iKE112デフォルトの名無しさん
2015/10/13(火) 15:10:52.88ID:v0mnZW8d >>111
私も、できてると思うんですが?
私も、できてると思うんですが?
113105
2015/10/13(火) 18:10:14.52ID:X9js2iKE 改めて質問させてください。
エクセルで↓のようなグラフがあります。
http://i.imgur.com/BeOZor7.png
このグラフの縦軸と横軸を入れ替えたグラフを(エクセルで)作成したいのですがやり方がわかりません。
作成したいグラフのイメージは↓のようなものです(この画像は画像ビューワーで作成したものです)
http://i.imgur.com/7gXPOFG.png
わかりづらくてすみません。
エクセルで↓のようなグラフがあります。
http://i.imgur.com/BeOZor7.png
このグラフの縦軸と横軸を入れ替えたグラフを(エクセルで)作成したいのですがやり方がわかりません。
作成したいグラフのイメージは↓のようなものです(この画像は画像ビューワーで作成したものです)
http://i.imgur.com/7gXPOFG.png
わかりづらくてすみません。
114デフォルトの名無しさん
2015/10/13(火) 18:27:38.73ID:jBFoqp2r115105
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+118デフォルトの名無しさん
2015/10/14(水) 00:34:55.63ID:psNeOyD5119デフォルトの名無しさん
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
必要な情報を取得した最後にそのサイトをログアウトして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/Sw122デフォルトの名無しさん
2015/10/29(木) 21:40:45.69ID:Q2L1bFVS WM_COMMANDの右2つの引数の指定の仕方が間違ってるのと
有効なウィンドウハンドルかどうかはIsWindowで取得できる
有効なウィンドウハンドルかどうかはIsWindowで取得できる
123119
2015/10/30(金) 00:47:33.04ID:ZHFQ9n4z124デフォルトの名無しさん
2015/11/03(火) 17:46:00.00ID:fVYiq8DO 質問が2つあります(長文すみませんm(_ _)m
○1点目:vbaを用いた自動化でdiv要素だけのボタンを押す方法
作業->ウェブのあるサービスにログインし、一定の操作をしてからログアウトする
問題->idとpassの入力はできたが、ボタンが押せない
構造的には下記アドレスのログインフォームと似ていて
ttp://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でも変わらず)
○1点目:vbaを用いた自動化でdiv要素だけのボタンを押す方法
作業->ウェブのあるサービスにログインし、一定の操作をしてからログアウトする
問題->idとpassの入力はできたが、ボタンが押せない
構造的には下記アドレスのログインフォームと似ていて
ttp://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:elW9O1dh127デフォルトの名無しさん
2015/11/03(火) 19:41:17.58ID:fVYiq8DO >>125
Alt + F11
Alt + F11
128デフォルトの名無しさん
2015/11/04(水) 15:38:11.36ID:DjYXAcy0 127
Visual Basicのウィンドウは出てきたしテキストもコピペしたけど
wavが自分のファイルに保存されない。
マクロ実行しても何も起こらずウィンドウが閉じるだけ。パワポのファイルにも音源は見当たらない。
Visual Basicのウィンドウは出てきたしテキストもコピペしたけど
wavが自分のファイルに保存されない。
マクロ実行しても何も起こらずウィンドウが閉じるだけ。パワポのファイルにも音源は見当たらない。
129デフォルトの名無しさん
2015/11/04(水) 15:56:19.21ID:Y61Iie1f >>124
1点目はソースがないとなんとも。
2点目はHTMLDocumentあたりで定義したオブジェクト(変数?)にSetしてやれば参照できるよ。
理由はしらんがie.Documentみたいなままだと参照できない。
1点目はソースがないとなんとも。
2点目はHTMLDocumentあたりで定義したオブジェクト(変数?)にSetしてやれば参照できるよ。
理由はしらんがie.Documentみたいなままだと参照できない。
130デフォルトの名無しさん
2015/11/04(水) 21:25:56.71ID:NpxeN+NQ >>128
何をしてどうなったのか具体的に書いてもらわないとわかりません
パワポにマクロを組み込んで、softTalkのパスを指定して
スライドのノートに文章を書いて、マクロ実行、までは出来たという理解でOK?
何をしてどうなったのか具体的に書いてもらわないとわかりません
パワポにマクロを組み込んで、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タグとどうに関係しているのかわからず詰まっている状態です。
レスありがとうございます
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
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
でクリックできた。
そちらのサイトでも動くんでないか?
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:5frd9spB136デフォルトの名無しさん
2015/11/05(木) 23:51:53.10ID:HwmEl5Ub137124
2015/11/06(金) 07:09:49.59ID:I5IXDGW5 !Σ(・ω・ノ)ノ
お礼伝わり良かったですw
お礼伝わり良かったですw
138デフォルトの名無しさん
2015/11/08(日) 22:46:51.63ID:yp780VFR access2013でフォームからの入力期間の金額を集計してレポート作成をしようとしています。
vbaでレポートボタンを押下した動作と同じコードは存在しますでしょうか。
vbaでレポートボタンを押下した動作と同じコードは存在しますでしょうか。
139デフォルトの名無しさん
2015/11/09(月) 00:38:10.22ID:lpQ26d6h レポートボタンってのが何の事かわからんが DoCmd.OpenReport使えとかそういう事か?
とりあえずACCESS VBAはそれ用のスレがあるからそっちで聞け
とりあえずACCESS VBAはそれ用のスレがあるからそっちで聞け
140デフォルトの名無しさん
2015/11/09(月) 02:05:47.54ID:rGXYqJ1u141デフォルトの名無しさん
2016/02/17(水) 15:13:29.51ID:cyifogYg パワポのVBAでお願いします。
ファイル→情報→メディアの圧縮
わ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
とまとめたいのですが、どのように処理すればよいでしょうか?
いずれは金額も考慮したいと考えていますが、現段階では難易度を下げるために同一金額としてください。
同じ理由でここでは頭を固定で例を作成させていただきました。
よろしくお願いします。
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:7wWguvAi144デフォルトの名無しさん
2016/02/24(水) 22:39:06.06ID:faCUrUaa145デフォルトの名無しさん
2016/02/24(水) 23:05:03.48ID:7wWguvAi146デフォルトの名無しさん
2016/02/24(水) 23:07:19.07ID:gEXn5/E8 でもEXCEL VBAに行ったほういい気がする
どうせEXCELだろ
どうせEXCELだろ
147デフォルトの名無しさん
2016/02/25(木) 00:31:32.38ID:lxjkiQUf >>142
そういうのはアルゴリズム系スレの方が受けがいいかと
あんま言語関係ないし
データ構造,アルゴリズム,デザインパターン総合スレ 2
http://peace.2ch.net/test/read.cgi/tech/1362301811/
そういうのはアルゴリズム系スレの方が受けがいいかと
あんま言語関係ないし
データ構造,アルゴリズム,デザインパターン総合スレ 2
http://peace.2ch.net/test/read.cgi/tech/1362301811/
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>
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:emFx7ejn154デフォルトの名無しさん
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>
コードはこんな感じです。
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 = "パパス"
> 'ノードとして子ども・孫の要素を追加
>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
エラー回避する方法を教えて下さい。
で「指定したディメンションは、このグラフの種類では無効です。」のエラー発生。
エラーが出るときと出ないときがある。
VBAでグラフを操作している部分もあるが、それとは無関係と思われるSaveでこのエラーに戸惑っています。
↓このサイトで、SaveAsで存在しないパスを指定し同様のエラーが出た事例は見つかりましたが私はパス指定していません。
http://yaplog.jp/purplish-blog/archive/1838
エラー回避する方法を教えて下さい。
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
その辺は大丈夫?
そのセルがアクティブシートのセルになってしまってエラーが出ることがあるけど
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:RmxeJW4x162デフォルトの名無しさん
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でチェックかけて異常なしではありました
http://www.dotup.org/uploda/www.dotup.org790841.jpg
ブックは
オートメーションエラーです。
例外が発生しました。
ってエラーですぐ落ちてしまうんだけど、これって何が原因なんですかね。
(OS Win7Home excel2010)
なんせ、
Sub test()
MsgBox "test"
End Sub
ってだけのでも同じエラーで落ちてしまうんで┐(´∀`)┌
ちなみにウィルス対策はAVGでチェックかけて異常なしではありました
http://www.dotup.org/uploda/www.dotup.org790841.jpg
164デフォルトの名無しさん
2016/03/24(木) 12:50:23.33ID:FJvNCHp3165デフォルトの名無しさん
2016/04/09(土) 01:33:44.74ID:8VJ1WNjN Declare 文でDllを指定するとき、絶対パスを指定するのとしないので挙動が変わるなんてことありますかね?
パスの通ったフォルダにDllを置きDeclare文にはパスを書かない、という状態で何度テストしても失敗する(結果がおかしい)ので、
もしやと思って絶対パスを指定してみたら成功しました。何度やっても同じです。
念のため他のフォルダに同名のDllがないか確認しましたが、そんなものはありませんでした。
Window7、Excel2010(64bit)です。
パスの通ったフォルダにDllを置きDeclare文にはパスを書かない、という状態で何度テストしても失敗する(結果がおかしい)ので、
もしやと思って絶対パスを指定してみたら成功しました。何度やっても同じです。
念のため他のフォルダに同名のDllがないか確認しましたが、そんなものはありませんでした。
Window7、Excel2010(64bit)です。
166kio
2016/04/09(土) 09:27:26.96ID:OaMx2gZN 下記プログラムでデータ貼り付け可能ですが、
Range(
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ファイルを
指しいてるのは間違いないと思います。
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
そんなの "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が無いことをどうやって確認した?
同名のdllが無いことをどうやって確認した?
176デフォルトの名無しさん
2016/04/09(土) 18:20:08.40ID:uD9Ltjj7177デフォルトの名無しさん
2016/04/09(土) 18:32:34.00ID:8VJ1WNjN >>175
パスが通っている全フォルダとカレントフォルダからの目視です。
環境変数(PATH)をまず確認して、
kernel32.dllにあるAPI 「GetEnvironmentVariableA」 に引数"PATH"を渡して出てきたフォルダを対象にしました。
問題のfuncABC も GetEnvironmentVariableA も同じVBAから発行しています。
パスが通っている全フォルダとカレントフォルダからの目視です。
環境変数(PATH)をまず確認して、
kernel32.dllにあるAPI 「GetEnvironmentVariableA」 に引数"PATH"を渡して出てきたフォルダを対象にしました。
問題のfuncABC も GetEnvironmentVariableA も同じVBAから発行しています。
178デフォルトの名無しさん
2016/04/09(土) 18:41:03.58ID:DA1syyI4 カレントフォルダをどうやって確認したかとか
システムディレクトリにdllがないかとか
まあ、確認漏れ自体はいっぱいありそうだな
システムディレクトリにdllがないかとか
まあ、確認漏れ自体はいっぱいありそうだな
179デフォルトの名無しさん
2016/04/09(土) 18:46:44.36ID:8VJ1WNjN180デフォルトの名無しさん
2016/04/09(土) 19:45:00.69ID:mXQNErhc181デフォルトの名無しさん
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
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
ってやればいいだけだろ
> 目視も検索フィルタにとりあえず *.dll で全DLLを出してからやっています。
プログラマーに向いてないんじゃね?
コマンドプロンプトで
dir /s /b \ABC.dll
ってやればいいだけだろ
187デフォルトの名無しさん
2016/04/09(土) 23:15:48.61ID:8VJ1WNjN188デフォルトの名無しさん
2016/04/10(日) 00:12:20.49ID:TaPFtU7E 元々の質問は、挙動が変わることがあるか?で、
あるって回答で解決だと思うけど、どうしてもないってことにしたいの?
ゴールが見えないよ
あるって回答で解決だと思うけど、どうしてもないってことにしたいの?
ゴールが見えないよ
190187
2016/04/10(日) 00:47:04.09ID:9vV3r8su191デフォルトの名無しさん
2016/04/10(日) 01:04:43.27ID:9zYVMe1H まさか、パス・ユーザー名など、システムに関係する部分に、
日本語を使ってないだろうな?
それで、バグってるとか?
日本語を使ってないだろうな?
それで、バグってるとか?
193デフォルトの名無しさん
2016/04/10(日) 01:14:27.05ID:9zYVMe1H そのDLLの作者が外人で、DLL内で、パス・ユーザー名を扱っていた場合、
もしその中に日本語が入っていれば、バグるかも
もしその中に日本語が入っていれば、バグるかも
194デフォルトの名無しさん
2016/04/10(日) 01:22:30.64ID:9zYVMe1H >>187
>ODBCのコネクションを張る関数で
それなら、そのDBのメーカーが(ドライバーが)、絶対パスしか許可していないのかも。
相対パスの危険性も考慮して、そういうアクセス許可にしているのかも
絶対パスを使えばいい
>ODBCのコネクションを張る関数で
それなら、そのDBのメーカーが(ドライバーが)、絶対パスしか許可していないのかも。
相対パスの危険性も考慮して、そういうアクセス許可にしているのかも
絶対パスを使えばいい
195デフォルトの名無しさん
2016/04/10(日) 05:47:22.16ID:v52RcnsN196デフォルトの名無しさん
2016/04/10(日) 10:59:47.17ID:KR5BT3Be 全ドライブを検査してひとつしかdllファイルがなかったって言ってるんだろ。
それが本当なら何も対処できないよ。OSレベルの不具合。
それが本当なら何も対処できないよ。OSレベルの不具合。
197デフォルトの名無しさん
2016/04/10(日) 17:49:12.01ID:r0zhudqC VBAをコーディングするのに最適な画面サイズとモニターの台数は何台ですか?
縦と横どっちでつかってすか?
4Kディスプレイはどうですか?
縦と横どっちでつかってすか?
4Kディスプレイはどうですか?
198デフォルトの名無しさん
2016/04/10(日) 18:54:26.34ID:oV0tVvW7 (´・ω・`)
199デフォルトの名無しさん
2016/04/10(日) 19:33:25.31ID:Y5yf6QHK200デフォルトの名無しさん
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
一番前の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で全シートループして、各シート最終行取得して貼り付ければ良いと思いますが、ダメですか?
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的に分散され、特定のサーバーに依存しません
l
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的に分散され、特定のサーバーに依存しません
l
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
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です。
あんまり無いですね。
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
多分こんな感じでできるかと
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 ↓ 【スパイウェア】
この使用許諾契約書には書かれています
”最後にあなたのコンテンツを含む個人データ(例えばあなたの電子メールの内容や―プライベート通信やプライベートフォルダ内のファイル)にアクセスし―開示し保全します”
開示する ここ重要だよ
契約がなければ通常 高度な違法行為になりうることです それはあなたが自分の意思としてこの契約書に同意したのです
https://www.youtube.com/watch?v=ZBwEmgdqB1c
【秘密保護法】 ナチスの手口でサヨクを捕まるんだろ? 早くやってみろよ m9(^Д^) 【緊急事態法】
スノーデン氏→国家秘密法は諜報機関NSAの日本での活動を容易にするために米国が設計して日本政府に導入を要求したもの。
全日本人が調査の対象であり、NSAはあなたの交際関係、信仰等の個人情報を把握している。
https://twitter.com/hopi_domingo/status/740193540529999873
今朝、辺野古で新基地建設に反対するママの会メンバーに対して、機動隊員が「お前たちには汚い血が流れている」などと暴言を吐いたそうです。
自分のやっていることを「だってお金欲しいもん〜」「俺の写真を待ち受けにしろ」とも (顔写真)
https://twitter.com/MothersNoWar/status/690357793702940672
サンマ以降のバラエティ芸人の大半が、暴走族出身で極右思想。原発反対派を「放射脳」と嘲笑する連中。
芸能界極右は石原慎太郎一家を筆頭に、上田晋也 草野仁 津川雅彦 向井理 松本人志 宇多田ヒカル マツコ 春日俊彰 田村淳 北村晴雄
https://twitter.com/tokaia mada/status/630627400552845312
この使用許諾契約書には書かれています
”最後にあなたのコンテンツを含む個人データ(例えばあなたの電子メールの内容や―プライベート通信やプライベートフォルダ内のファイル)にアクセスし―開示し保全します”
開示する ここ重要だよ
契約がなければ通常 高度な違法行為になりうることです それはあなたが自分の意思としてこの契約書に同意したのです
https://www.youtube.com/watch?v=ZBwEmgdqB1c
【秘密保護法】 ナチスの手口でサヨクを捕まるんだろ? 早くやってみろよ 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)です。
家でやると何でもないのですが、会社でやると、その方法で立ち上げたエクスプローラは
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で開いてみるとかは?
試しに自宅の環境で共有フォルダをshell関数でファイル選択状態で開いてみたけど
特に問題なかったよ
原因は共有フォルダであること
ではないのじゃないかな
その共有フォルダへのショートカットを作って
それをshell関数を使ってexplorerで開いてみるとかは?
217デフォルトの名無しさん
2016/06/14(火) 08:10:13.51ID:BcKyLCvc 手動で起動したプロセスは、親プロセスが無く、単独のプロセスだから、ずっと生き残るのかな?
Aプログラム(Aプロセス)から起動したプロセスは、親プロセスがAとなり、
Aを終了すると、その子プロセスもすべて、連鎖して終了するのかな?
プロセスを起動する際、親子関係を切れば?
ただしそうすると、起動されたプロセスは、A終了後も残り続けるから、
誰がそのプロセスを終了するのかが、問題となる
漏れは、Windowsはよく知らない。Linuxから推測して書いた
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メソッドの同期処理に置換えてみました。
それで明日会社でテストしてみます。
ショートカットから開く方法ですか、考えもしなかったです。
確実に再現するバグではない(場合によっては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
とりあえず俺はこの二つで直ったが、エクスプローラ 落ちる とかでググってみ
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でしたね。
しかし、元々この手のトラブル報告がかなり多いことにはびっくりしました。
とりあえずは解決です。皆さんどうも有難うございました。
同期処理に変えたら全く落ちなくなりました。
どうやら推測は当たったみたいです。
手動で立ちあげてる時には同じトラブルは一度も起こったこと無く、誰からも聞いていないので、
VBA処理が原因で間違いないと思います。
ぐぐっては見てたんですけど、VBA関連でのエラー報告は0でしたね。
しかし、元々この手のトラブル報告がかなり多いことにはびっくりしました。
とりあえずは解決です。皆さんどうも有難うございました。
221デフォルトの名無しさん
2016/06/16(木) 14:05:29.72ID:tOwQ8tvq タイミングの問題で、バグが起きるときは、
sleep 3秒などで、時間稼ぎすることが多いな
sleep 3秒などで、時間稼ぎすることが多いな
222デフォルトの名無しさん
2016/06/16(木) 16:27:03.77ID:YtVxucfB223デフォルトの名無しさん
2016/06/16(木) 21:40:45.67ID:JOmdLZoV ' キャッシュ反映を待って5秒待つ
↑これなんとかして
↑これなんとかして
224デフォルトの名無しさん
2016/06/16(木) 21:53:33.23ID:EpEOLr57225デフォルトの名無しさん
2016/06/17(金) 01:16:02.29ID:Sh+IdTol 起動方法と起動のタイミングの問題で
>1分〜数分以内に「エクスプローラは停止しました」
>場合によっては20分くらい経ってからクラッシュ
のような症状が出るとは考えにくいけどな
まあ、直ったって言うならそれでいいけど
>1分〜数分以内に「エクスプローラは停止しました」
>場合によっては20分くらい経ってからクラッシュ
のような症状が出るとは考えにくいけどな
まあ、直ったって言うならそれでいいけど
226樵の結び目。
2016/09/03(土) 18:27:18.44ID:Ms7vNg4j227デフォルトの名無しさん
2016/09/28(水) 19:27:48.59ID:BVBInYIb vbaの And, Or って短絡評価してくれないの???
228デフォルトの名無しさん
2016/09/28(水) 20:30:34.84ID:X231kNmm229デフォルトの名無しさん
2016/09/28(水) 22:20:25.14ID:w7cfX4QA X(n) And Y(m) で X(n) = False だった場合、Y(m) は評価しなくても式が False と確定する
Or でも同様のことが可能
VBAがショートサーキットしているかどうかは、各関数で Debug ログを出力してみればわかる
Or でも同様のことが可能
VBAがショートサーキットしているかどうかは、各関数で Debug ログを出力してみればわかる
230デフォルトの名無しさん
2016/09/29(木) 04:55:17.68ID:IF5lu7hc >>229
いちいち短絡評価の説明なんてしなくていいよ...
いちいち短絡評価の説明なんてしなくていいよ...
231227
2016/09/29(木) 08:22:26.74ID:l2tsRcXf くぅ。
短絡評価してくれるもんだと思って、
True, False, Nullを返す関数の結果で、
NullをFalseに倒したくて、
左辺でNot isNullやってたけど、
右辺もNullで動いてしまってエラーになってはまったわ。
短絡評価してくれるもんだと思って、
True, False, Nullを返す関数の結果で、
NullをFalseに倒したくて、
左辺でNot isNullやってたけど、
右辺もNullで動いてしまってエラーになってはまったわ。
232デフォルトの名無しさん
2016/09/29(木) 12:46:05.66ID:tIM+raH6 VBAあるある
233デフォルトの名無しさん
2016/10/06(木) 19:51:33.65ID:prbbit7d .NetならOrElseやAndAlsoが使えるし
Nullable指定も出来るから便利なんだけどなー
まあ無いものねだりしても始まらないか
Nullable指定も出来るから便利なんだけどなー
まあ無いものねだりしても始まらないか
234デフォルトの名無しさん
2016/10/08(土) 17:43:11.29ID:fiaM9vLl VB(A)はWithとかある割にそういうとこは全然気が利かないよな
C言語すら知らない人が作った言語なんだろう事は判る
C言語すら知らない人が作った言語なんだろう事は判る
235デフォルトの名無しさん
2016/10/08(土) 22:59:38.27ID:315EhZFM VBって元々はMSじゃないんだよね BASIC好きのゲイツが惚れ込んで買収しただけ
236デフォルトの名無しさん
2016/10/27(木) 20:44:38.40ID:LE0ob9Yw vbaの中、上級者向けの書籍を教えてください
237デフォルトの名無しさん
2016/10/27(木) 21:44:23.99ID:BIHhfe0H 漠然と「VBAの初心者向けの本を教えてください」ってのはよくあるが、上級者向けは珍しいね
ある程度基礎が身に付き、やりたいことが分かってきていれば
○○に関する本、ってなるように思うんだが・・・
田中亨氏の「Excel VBA 逆引き辞典パーフェクト 」は名著だよ
ある程度基礎が身に付き、やりたいことが分かってきていれば
○○に関する本、ってなるように思うんだが・・・
田中亨氏の「Excel VBA 逆引き辞典パーフェクト 」は名著だよ
238デフォルトの名無しさん
2016/10/28(金) 04:23:54.86ID:s9odN72t239デフォルトの名無しさん
2016/10/28(金) 15:06:05.95ID:Sg+Wt/Uz アプリ作成で学ぶExcel VBAプログラミングユーザーフォーム&コントロール(横山達大著)
かんたんプログラミング 応用編(大村あつし著)
同じく、かんたんプログラミング コントロール関数編
デバッグ関連だと
立山秀利著の本
かんたんプログラミング 応用編(大村あつし著)
同じく、かんたんプログラミング コントロール関数編
デバッグ関連だと
立山秀利著の本
240デフォルトの名無しさん
2016/10/29(土) 23:22:10.90ID:b3lytwnZ VBAでコードを抜き出してSVNやgitで管理したりするとそれだけで上級者っぽくなる
241デフォルトの名無しさん
2016/10/30(日) 08:10:21.54ID:R4QvvoTp それ以上にバカっぽいけどなw
242デフォルトの名無しさん
2016/10/30(日) 09:23:46.57ID:2kQlDpFE 今時差分管理もしてないのかよ
243デフォルトの名無しさん
2016/10/31(月) 23:59:17.10ID:9abcSnRr VBACとか使ってんの?
244デフォルトの名無しさん
2017/02/06(月) 12:06:59.89ID:1XFRepCN PowerPointのVBAでファイルを閉じた後も変数の値が保存されるようにしたいんですが外部のテキストに書き出す以外にファイル本体にどうにかして埋め込む方法はありますか?
245デフォルトの名無しさん
2017/02/06(月) 14:57:53.43ID:atuXlQHb 透明のシェイプとかに書くとか色々あるけど
実際本体ファイルを更新されるとバージョン管理とか使う側が気持ち悪がるとか運用面で問題が出そう
実際本体ファイルを更新されるとバージョン管理とか使う側が気持ち悪がるとか運用面で問題が出そう
246デフォルトの名無しさん
2017/02/06(月) 19:29:23.46ID:4FxLnD3n Excel脳っすなぁ
標準的なユーザーデータ保存場所がちゃんとあるんだからそれ使えばいいじゃん
標準的なユーザーデータ保存場所がちゃんとあるんだからそれ使えばいいじゃん
247デフォルトの名無しさん
2017/02/06(月) 19:58:54.20ID:KOZLaxG/ >>246
どうすればいいでしょうか
どうすればいいでしょうか
248デフォルトの名無しさん
2017/02/06(月) 21:21:37.88ID:VJg+IRhi >>244
Presentation.CustomDocumentProperties
https://msdn.microsoft.com/ja-jp/library/office/ff744661.aspx
Presentation.CustomDocumentProperties
https://msdn.microsoft.com/ja-jp/library/office/ff744661.aspx
249デフォルトの名無しさん
2017/02/07(火) 07:09:26.95ID:HIDKMkau250デフォルトの名無しさん
2017/02/07(火) 07:27:10.54ID:ff698yUf251デフォルトの名無しさん
2017/02/07(火) 07:40:32.09ID:xddq+MTq ファイル本体に埋め込みすんのがアホなんだよわかれよ素人
ゴミを量産して人に迷惑かけないでくれ
独りよがりの仕事してんじゃねえよ
ゴミを量産して人に迷惑かけないでくれ
独りよがりの仕事してんじゃねえよ
252デフォルトの名無しさん
2017/02/07(火) 08:07:27.12ID:ff698yUf 単なる基地害だったのか
253デフォルトの名無しさん
2017/02/07(火) 20:25:02.30ID:1dqSFjs6 実際に仕事してるとそれこそ基地外避けを作る必要が出てきたりするんだよな
254デフォルトの名無しさん
2017/02/07(火) 21:24:47.40ID:lpX4EXgF ユーザーデータを変な場所に保存したりするやつとか避けないとな
255デフォルトの名無しさん
2017/02/07(火) 22:43:16.46ID:diTiDCUQ256デフォルトの名無しさん
2017/02/13(月) 17:14:33.92ID:QPcPOced 50枚のスライドが入ったパワポが5個あります。
これを統合したいのですが
ファイル1の1枚目
ファイル2の1枚目
ファイル3の1枚目
ファイル4の1枚目
ファイル5の1枚目
ファイル1の2枚目。。。
という順番にしたいのです。
どういうマクロを書けばいいでしょうか?
これを統合したいのですが
ファイル1の1枚目
ファイル2の1枚目
ファイル3の1枚目
ファイル4の1枚目
ファイル5の1枚目
ファイル1の2枚目。。。
という順番にしたいのです。
どういうマクロを書けばいいでしょうか?
257デフォルトの名無しさん
2017/02/13(月) 21:36:30.61ID:MAF656mM >>256
その通りのマクロを書けばいいのでは?
その通りのマクロを書けばいいのでは?
258デフォルトの名無しさん
2017/02/13(月) 21:54:55.31ID:1gaAmlEB 新規で作ったらコピペを繰り返すだけ
259デフォルトの名無しさん
2017/02/14(火) 00:38:49.96ID:hvVJhpIb パワポってマクロ使えるんだ
そらそうだわな
そらそうだわな
260デフォルトの名無しさん
2017/02/14(火) 01:58:27.90ID:ahDpDw9M ExcelVBAをつかいこなしていても
パワポはマクロの記録がないと腰が重いな
パワポはマクロの記録がないと腰が重いな
261デフォルトの名無しさん
2017/02/15(水) 08:18:34.60ID:uIQboeV9262デフォルトの名無しさん
2017/02/15(水) 13:14:12.73ID:zgJtAmDR >>256
スマホからだから試してないけどこんな感じかな
Application.Presentations.Open(ひとつ目のファイル)
Application.Presentations.Open(ふたつ目のファイル)
...
Application.Presentations.Open(いつつ目のファイル)
Set P = Application.Presentations.Add
For I = 1 To 50
For J = 1 To 5
Application.Presentations.Item(J).Slides(I).Copy
P.Slides.Paste
Next
Next
P.SaveAs(新規のファイル)
スマホからだから試してないけどこんな感じかな
Application.Presentations.Open(ひとつ目のファイル)
Application.Presentations.Open(ふたつ目のファイル)
...
Application.Presentations.Open(いつつ目のファイル)
Set P = Application.Presentations.Add
For I = 1 To 50
For J = 1 To 5
Application.Presentations.Item(J).Slides(I).Copy
P.Slides.Paste
Next
Next
P.SaveAs(新規のファイル)
263デフォルトの名無しさん
2017/02/23(木) 13:32:21.69ID:xPy6pfR0 選択されているセル範囲内の文字、図形を削除する手順を作ってみましたが、処理がえらく重いです。
もっと処理を早くする方法はないでしょうか?
Sub sakujo()
Application.ScreenUpdating = False '画面更新を停止
Dim shp As Shape
Dim rng As Range
If TypeName(Selection) <> "Range" Then Exit Sub
For Each shp In ActiveSheet.Shapes
Selection.ClearContents
Set rng = Range(shp.TopLeftCell, shp.BottomRightCell) '図形の配置されているセル範囲をオブジェクト変数にセット
If Not (Intersect(rng, Selection) Is Nothing) Then '図形の配置されている範囲と選択されているセル範囲が重なっているときに図形を削除
shp.Delete
End If
Next
Application.ScreenUpdating = True '画面更新を再開
End Sub
もっと処理を早くする方法はないでしょうか?
Sub sakujo()
Application.ScreenUpdating = False '画面更新を停止
Dim shp As Shape
Dim rng As Range
If TypeName(Selection) <> "Range" Then Exit Sub
For Each shp In ActiveSheet.Shapes
Selection.ClearContents
Set rng = Range(shp.TopLeftCell, shp.BottomRightCell) '図形の配置されているセル範囲をオブジェクト変数にセット
If Not (Intersect(rng, Selection) Is Nothing) Then '図形の配置されている範囲と選択されているセル範囲が重なっているときに図形を削除
shp.Delete
End If
Next
Application.ScreenUpdating = True '画面更新を再開
End Sub
264デフォルトの名無しさん
2017/02/23(木) 14:40:32.47ID:bekNjoMq265デフォルトの名無しさん
2017/02/23(木) 15:02:34.32ID:Q2T7iSLN 処理の基本をよく考えるべき。
1.Shape毎にSelection.ClearContentsする意味は?
2.shp.Delete後もループする意味は?
3.そもそもSelectionって何?つまり何が選択されている時に削除したいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
shp.Delete
Exit For
End If
Next
じゃ駄目?
1.Shape毎にSelection.ClearContentsする意味は?
2.shp.Delete後もループする意味は?
3.そもそもSelectionって何?つまり何が選択されている時に削除したいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
shp.Delete
Exit For
End If
Next
じゃ駄目?
266デフォルトの名無しさん
2017/02/23(木) 15:08:21.72ID:Q2T7iSLN 選択されているセル範囲については最初のIf文でExit Subしてるから削除されないんじゃ?
処理がよく分からん。
選択されているShapeの下のRangeの内容を削除したいならshp=Selectionの場合に
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
で良いんじゃ?
処理がよく分からん。
選択されているShapeの下のRangeの内容を削除したいならshp=Selectionの場合に
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
で良いんじゃ?
267デフォルトの名無しさん
2017/02/23(木) 15:10:34.31ID:Q2T7iSLN shp=Selectionの場合じゃなくてshp Is Selectionの場合だな。
shp.Deleteの前ね。
shp.Deleteの前ね。
268デフォルトの名無しさん
2017/02/23(木) 15:24:01.29ID:5OVH7aZj >>265
質問者じゃないけど変わって説明するよ
・シート上に文字と図形が複数箇所に設定されている
・消す範囲を選択して、その範囲内の文字と図形を消すコードを書いた
・でもなぜか遅い
質問者に言えるのは、
・Selection.ClearContentsはfor eachの外でいい
・試しに100個のshapeを貼り付けて50個くらいが入る範囲を選択して消してみたら一瞬で終了(もちろんコードでだよ)
・遅いって具体的にどれくらいなの?
質問者じゃないけど変わって説明するよ
・シート上に文字と図形が複数箇所に設定されている
・消す範囲を選択して、その範囲内の文字と図形を消すコードを書いた
・でもなぜか遅い
質問者に言えるのは、
・Selection.ClearContentsはfor eachの外でいい
・試しに100個のshapeを貼り付けて50個くらいが入る範囲を選択して消してみたら一瞬で終了(もちろんコードでだよ)
・遅いって具体的にどれくらいなの?
269デフォルトの名無しさん
2017/02/23(木) 16:00:14.32ID:Q2T7iSLN >>268
コード見りゃわかる。
でもコードがやってることは無駄な部分が多いから聞いてる。
最初のIf文を見ればRangeを選択した場合はExit Subしたいみたいだがら範囲選択した場合は処理して欲しく無いんだよな。
→じゃ、どんな時に処理して欲しいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
shp.Delete
Exit For
End If
Next
じゃ駄目なの?
コード見りゃわかる。
でもコードがやってることは無駄な部分が多いから聞いてる。
最初のIf文を見ればRangeを選択した場合はExit Subしたいみたいだがら範囲選択した場合は処理して欲しく無いんだよな。
→じゃ、どんな時に処理して欲しいの?
For Each shp In ActiveSheet.Shapes
If shp Is Selection Then
Range(shp.TopLeftCell,shp.BottomRightCell).ClearContents
shp.Delete
Exit For
End If
Next
じゃ駄目なの?
270デフォルトの名無しさん
2017/02/23(木) 16:07:14.86ID:xPy6pfR0 今までは長い時で1〜1.5秒程止まっていました
>>268さんの言われた通り、Selection.ClearContentsの位置を変えたらスムーズになりましたのでこれで行こうと思います
たくさんご意見頂きありがとうございました
>>268さんの言われた通り、Selection.ClearContentsの位置を変えたらスムーズになりましたのでこれで行こうと思います
たくさんご意見頂きありがとうございました
271デフォルトの名無しさん
2017/02/23(木) 16:14:41.52ID:5OVH7aZj272デフォルトの名無しさん
2017/02/26(日) 14:44:16.79ID:nMuhJunv エクセルのマクロでも質問大丈夫でしょうか?
名前と同じファイル名の画像を名前セルの隣に貼り付けるプログラムなんですが
Sub ボタン1_Click()
Const n As Long = 2
Dim i As Long
Dim x As Double
Dim s As String
Dim t As FileDialog
Dim m As VbMsgBoxResult
With ActiveSheet
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row Step 6
Set r = .Cells(i, 3).MergeArea
s = "D:\画像\1\" & .Cells(i, 2).Value & ".jpg"
Dir Application.Path
With .Pictures.Insert(s).ShapeRange
.LockAspectRatio = msoTrue
x = Application.Min(r.Width / .Width, (r.Height - n) / .Height)
.Width = .Width * x
.Left = r.Left + (r.Width - .Width) / 2
.Top = r.Top + (r.Height - .Height) / 2
End With
Next
End With
End Sub
この"D:\画像\1\"の部分をフォルダ選択できるようにしたいので
Dim s As String
Dim t As FileDialog
Set t = Application.FileDialog(msoFileDialogFolderPicker)
s = "t" & .Cells(i, 2).Value & ".jpg"
としたら「1004 PicturesクラスのInsertプロパティを取得できません。」と実行できません
どうしたら"D:\画像\1\"の部分をフォルダ選択できるようにできるのでしょうか?ご教示お願い致します。
名前と同じファイル名の画像を名前セルの隣に貼り付けるプログラムなんですが
Sub ボタン1_Click()
Const n As Long = 2
Dim i As Long
Dim x As Double
Dim s As String
Dim t As FileDialog
Dim m As VbMsgBoxResult
With ActiveSheet
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row Step 6
Set r = .Cells(i, 3).MergeArea
s = "D:\画像\1\" & .Cells(i, 2).Value & ".jpg"
Dir Application.Path
With .Pictures.Insert(s).ShapeRange
.LockAspectRatio = msoTrue
x = Application.Min(r.Width / .Width, (r.Height - n) / .Height)
.Width = .Width * x
.Left = r.Left + (r.Width - .Width) / 2
.Top = r.Top + (r.Height - .Height) / 2
End With
Next
End With
End Sub
この"D:\画像\1\"の部分をフォルダ選択できるようにしたいので
Dim s As String
Dim t As FileDialog
Set t = Application.FileDialog(msoFileDialogFolderPicker)
s = "t" & .Cells(i, 2).Value & ".jpg"
としたら「1004 PicturesクラスのInsertプロパティを取得できません。」と実行できません
どうしたら"D:\画像\1\"の部分をフォルダ選択できるようにできるのでしょうか?ご教示お願い致します。
273デフォルトの名無しさん
2017/02/26(日) 16:00:22.84ID:nt1S72uw >>272
Dim s As String
Dim t As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
'途中省略
s = t & .Cells(i, 2).Value & ".jpg"
じゃないかな?
あと
元コードもそうだけど
フォルダ内に その画像ファイルが存在してなかった時の対策も必要だと思うよ
同じエラーになるぞ それとも絶対 あるのが 確定してる?
Dim s As String
Dim t As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
'途中省略
s = t & .Cells(i, 2).Value & ".jpg"
じゃないかな?
あと
元コードもそうだけど
フォルダ内に その画像ファイルが存在してなかった時の対策も必要だと思うよ
同じエラーになるぞ それとも絶対 あるのが 確定してる?
274デフォルトの名無しさん
2017/02/26(日) 16:45:49.33ID:nMuhJunv >>273
大変ありがとうございます!
ただ、貼り付ける画像は複数あり、貼り付けるたびにフォルダ選択画面が出てしまいますので、一気に貼り付けられないものでしょうか?
ファイルが存在してない時の対策は、セルの状態を色変えて罫線で斜線を挿入したいと考えてますが、まだそこまで進む前段階がクリアできないので困ってます
よろしくお願いします
大変ありがとうございます!
ただ、貼り付ける画像は複数あり、貼り付けるたびにフォルダ選択画面が出てしまいますので、一気に貼り付けられないものでしょうか?
ファイルが存在してない時の対策は、セルの状態を色変えて罫線で斜線を挿入したいと考えてますが、まだそこまで進む前段階がクリアできないので困ってます
よろしくお願いします
275デフォルトの名無しさん
2017/02/26(日) 16:51:45.39ID:nt1S72uw >>274
ん? そこは分ってるとおもたよ
フォルダ選択部分は Forループの外だよ
↓ここねw
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
ん? そこは分ってるとおもたよ
フォルダ選択部分は Forループの外だよ
↓ここねw
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
t = .SelectedItems(1) & "\"
End With
276デフォルトの名無しさん
2017/02/26(日) 16:57:59.74ID:nMuhJunv >>275
あっ!できました!ありがとうございます!助かりました!
あっ!できました!ありがとうございます!助かりました!
277デフォルトの名無しさん
2017/03/06(月) 23:29:36.96ID:QCgyLcj6 こんにちは。
パワーポイント2013のVBAについて分かる方教えて下さい。
やりたいことは、グラデーションの塗りつぶしがあるシェイプのGradientStopsのそれぞれの色を変化させるアニメーションの方法です。
2013ではできないけど2016ではできる等の情報もあればお願い致します。
パワーポイント2013のVBAについて分かる方教えて下さい。
やりたいことは、グラデーションの塗りつぶしがあるシェイプのGradientStopsのそれぞれの色を変化させるアニメーションの方法です。
2013ではできないけど2016ではできる等の情報もあればお願い致します。
278デフォルトの名無しさん
2017/03/08(水) 21:50:45.20ID:DO0ivfK5 vbaだけでhttpサーバーって出来る?
279デフォルトの名無しさん
2017/03/08(水) 23:04:04.36ID:Tpob7EG8280デフォルトの名無しさん
2017/03/09(木) 01:39:01.40ID:UFk6xx1O VBAだけってのが
外部コントロール使用禁止
API呼び出し禁止
なら不可能です
外部コントロール使用禁止
API呼び出し禁止
なら不可能です
281デフォルトの名無しさん
2017/04/09(日) 15:56:17.26ID:9WwYB+FH VBAの変数の値を次回の処理を行う時まで記録しておくのにセルに書き込みをしたりしていますが、
セルにアクセスするのを減らすためにセルに記録しなくて処理終了時に変数値をVBA内で保存しておいてくれる一次記憶領域みたいな物はないのでしょうか?
セルにアクセスするのを減らすためにセルに記録しなくて処理終了時に変数値をVBA内で保存しておいてくれる一次記憶領域みたいな物はないのでしょうか?
282デフォルトの名無しさん
2017/04/09(日) 16:02:56.39ID:9WwYB+FH ちりも積もればの話ですが
足し算引き算割り算レベルの計算をセルに関数を割り当てて行うのと
同じ計算式を変数を用いてVBAで書いて実行するのとで、より処理速度が速いのはどちらでしょうか?
足し算引き算割り算レベルの計算をセルに関数を割り当てて行うのと
同じ計算式を変数を用いてVBAで書いて実行するのとで、より処理速度が速いのはどちらでしょうか?
283デフォルトの名無しさん
2017/04/09(日) 16:09:57.30ID:Lq/WJuQk284デフォルトの名無しさん
2017/04/09(日) 16:14:42.36ID:K8MFArI9 >>281
説明がいまいち分かりにくい。
次回ってのは何時のことを言ってる?
グローバルな変数じゃダメなの?
次にそのブックを開くまで保持したいならセルってのも分かるんだが。
で、その場合にセルの代わりに保持したいならCustomDocumetProperties使ったりするかな。
説明がいまいち分かりにくい。
次回ってのは何時のことを言ってる?
グローバルな変数じゃダメなの?
次にそのブックを開くまで保持したいならセルってのも分かるんだが。
で、その場合にセルの代わりに保持したいならCustomDocumetProperties使ったりするかな。
285デフォルトの名無しさん
2017/04/09(日) 16:27:32.06ID:9WwYB+FH286デフォルトの名無しさん
2017/04/09(日) 16:44:07.10ID:9WwYB+FH >>284
プロシージャの上に定義すると処理が終了しても最終定義された内容は残ったままなんですね!
今まで処理を中断する必要がある場合は変数をすべてセルに書き出していましたが大発見です。ありがとうございました。
プロシージャの上に定義すると処理が終了しても最終定義された内容は残ったままなんですね!
今まで処理を中断する必要がある場合は変数をすべてセルに書き出していましたが大発見です。ありがとうございました。
287デフォルトの名無しさん
2017/04/09(日) 19:39:59.08ID:9WwYB+FH Public変数もしくは通常の変数の指定数の限界はあるのでしょうか?
問題なく動くレベルは何個ぐらいでしょうか?
50個
100個
1000個
10000個でも平気だっり?
実は
100000個以上でも問題ないとか?
問題なく動くレベルは何個ぐらいでしょうか?
50個
100個
1000個
10000個でも平気だっり?
実は
100000個以上でも問題ないとか?
288デフォルトの名無しさん
2017/04/09(日) 19:51:50.86ID:0T9WQSVM289デフォルトの名無しさん
2017/04/09(日) 23:55:43.90ID:K8MFArI9290デフォルトの名無しさん
2017/04/10(月) 02:47:06.39ID:AhmZ51rM 日曜の午後からずっとVBAを書いてるけどまだおわらね〜
てかやればやるほど選択肢が爆発的に増えてきて一生かかってもおわりそうにね〜!w
てかやればやるほど選択肢が爆発的に増えてきて一生かかってもおわりそうにね〜!w
291デフォルトの名無しさん
2017/04/10(月) 04:05:13.85ID:sRLMXvmn >>287
しかもEndやErrorで抜けたら破棄されるという罠
しかもEndやErrorで抜けたら破棄されるという罠
292デフォルトの名無しさん
2017/04/11(火) 00:40:18.97ID:egN7ZnVO 素数や組み合わせ爆発のような数学の迷宮的な問題に陥って
一生かかってもコードを完成させるのは無理ですよみたいな場合もあるのでしょうか?
一生かかってもコードを完成させるのは無理ですよみたいな場合もあるのでしょうか?
293デフォルトの名無しさん
2017/04/11(火) 10:41:22.79ID:Ei1BFwyD >>292
数学的バックグラウンドがなければコードが書けないという類いの問題はあるね。
たとえばNP困難なやつ。
巡回セールスマンとかナップサック問題とか、ナーススケジューリング問題とか。
自力でなければ、それなりの回答が得られる解法(コード)が既に存在してるものもある。
数学的バックグラウンドがなければコードが書けないという類いの問題はあるね。
たとえばNP困難なやつ。
巡回セールスマンとかナップサック問題とか、ナーススケジューリング問題とか。
自力でなければ、それなりの回答が得られる解法(コード)が既に存在してるものもある。
294デフォルトの名無しさん
2017/04/11(火) 11:01:45.96ID:o/k96Ri6 問題を解く方法を考案するのと、その方法をコンピューター言語に翻訳する作業は別ですわ
それぞれに異なった知識と才能が必要となりますので
それぞれに異なった知識と才能が必要となりますので
295デフォルトの名無しさん
2017/04/11(火) 11:03:15.94ID:6dnWkPrh >>291
End Subの行にブレークポイント、これ
End Subの行にブレークポイント、これ
296デフォルトの名無しさん
2017/04/12(水) 22:41:46.94ID:iuenojzm パブリック変数で
1000個
10000個でも平気だっり?
とかどんな拷問なんだよw
1000個
10000個でも平気だっり?
とかどんな拷問なんだよw
297デフォルトの名無しさん
2017/04/20(木) 23:26:11.80ID:92wBssf5 テストしてみたがパブリック変数500個は問題なく動いた。
もっと使ってる人いる?
もっと使ってる人いる?
298デフォルトの名無しさん
2017/04/21(金) 19:40:41.67ID:TpPjDerb いらない
299デフォルトの名無しさん
2017/04/21(金) 21:22:06.10ID:BWuBR5xw 変数の一部を変数にする事は出来ないのでしょうか?(代入
とかではなく)
たとえば↓はイメージですが変数名の箇所を文字列をつなぎ合わせる時と
同じように変数をわりあてられないのでしょうか?(以下は動きませんがphpではこれができます。)
dim aaa1
dim aaa
dim no
dim bbb
aaa1=例文1
aaa=aaa
no=1
aaa & no = bbb
msgbox bbb
↓
結果は「例文1」 と表示されますみたな、、
とかではなく)
たとえば↓はイメージですが変数名の箇所を文字列をつなぎ合わせる時と
同じように変数をわりあてられないのでしょうか?(以下は動きませんがphpではこれができます。)
dim aaa1
dim aaa
dim no
dim bbb
aaa1=例文1
aaa=aaa
no=1
aaa & no = bbb
msgbox bbb
↓
結果は「例文1」 と表示されますみたな、、
300デフォルトの名無しさん
2017/04/21(金) 21:28:31.62ID:BWuBR5xw >>299
最終的には
aaa1=「例文1」
aaa2=「例文2」
aaa3=「例文3」
・
・
とし
aaa & no のno番号だけ差し替えて制御するみないな感じで使います。
ただしnoの番号は連続した数字ではなく他の集計結果からランダムに発生するため
ループ処理等では成り立たず変数のように扱う必要があります。
最終的には
aaa1=「例文1」
aaa2=「例文2」
aaa3=「例文3」
・
・
とし
aaa & no のno番号だけ差し替えて制御するみないな感じで使います。
ただしnoの番号は連続した数字ではなく他の集計結果からランダムに発生するため
ループ処理等では成り立たず変数のように扱う必要があります。
301デフォルトの名無しさん
2017/04/21(金) 22:10:11.53ID:9tskJEPF >>300
aaa1とかaaa2を変数として捉えず、文字列と数値を要素に持つ2次元配列と見れば良い
で、データ全体を制御するときは、aaa1,aaa2...の2次元配列全てを要素として持つコレクションオブジェクトを生成して操作する
aaa1とかaaa2を変数として捉えず、文字列と数値を要素に持つ2次元配列と見れば良い
で、データ全体を制御するときは、aaa1,aaa2...の2次元配列全てを要素として持つコレクションオブジェクトを生成して操作する
302デフォルトの名無しさん
2017/04/21(金) 22:18:30.36ID:TpPjDerb >>300
Dictionaryのkeyにすれば良いんじゃね
Dictionaryのkeyにすれば良いんじゃね
303デフォルトの名無しさん
2017/04/21(金) 22:25:23.50ID:9tskJEPF CollectionよりDictionaryだな、確かに
304デフォルトの名無しさん
2017/04/21(金) 23:24:44.93ID:3F+Ljh12 そういう質問、初心者によく聞かれるわ
普通は配列を使えと教えるもんだが
普通は配列を使えと教えるもんだが
305デフォルトの名無しさん
2017/04/22(土) 06:16:50.97ID:zUhE/Mll306299
2017/04/22(土) 08:27:20.54ID:zUhE/Mll307デフォルトの名無しさん
2017/04/22(土) 08:53:12.92ID:MM2jcjjz >>306
変数名を数字だけで管理する方法はない。
VBAの仕様上、できない。
というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。
やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。
変数名を数字だけで管理する方法はない。
VBAの仕様上、できない。
というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。
やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。
308デフォルトの名無しさん
2017/04/22(土) 11:27:30.44ID:6RXuRSFv >>306
Dictionaryのvalueは変更可能
Dictionaryのvalueは変更可能
309299
2017/04/22(土) 15:29:06.19ID:zUhE/Mll310デフォルトの名無しさん
2017/04/22(土) 20:43:48.30ID:zUhE/Mll Dim dic As New Dictionary
Dim i As Integer
dic.Add "キー1", "アイテム1"
dic.Add "キー2", "アイテム2"
dic.Add "キー3", "アイテム3"
Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、
グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
Dim i As Integer
dic.Add "キー1", "アイテム1"
dic.Add "キー2", "アイテム2"
dic.Add "キー3", "アイテム3"
Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、
グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
311デフォルトの名無しさん
2017/04/22(土) 22:48:51.75ID:AOzJBbd9 >>310
プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない
でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない
でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
312デフォルトの名無しさん
2017/04/22(土) 23:30:15.48ID:zUhE/Mll >>311
ありがとうございます。
今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして
全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
ありがとうございます。
今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして
全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
313デフォルトの名無しさん
2017/04/23(日) 05:30:19.61ID:t5ve42Di314デフォルトの名無しさん
2017/04/23(日) 10:16:09.39ID:wfwXXeKO >>312
標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな
ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな
ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
315デフォルトの名無しさん
2017/04/23(日) 16:51:51.75ID:fs201BJ1316デフォルトの名無しさん
2017/04/23(日) 17:11:32.92ID:yvJyPXpi >>315
何の引数に渡すことを指してるのかな?
何の引数に渡すことを指してるのかな?
317デフォルトの名無しさん
2017/04/23(日) 18:02:04.26ID:fs201BJ1318デフォルトの名無しさん
2017/04/23(日) 18:27:09.16ID:yvJyPXpi319デフォルトの名無しさん
2017/04/28(金) 17:33:41.10ID:krqKI6DB 超既出FAQですな。
『Public 宣言された変数の有効期間』
https://support.microsoft.com/ja-jp/help/408871
簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。
『Public 宣言された変数の有効期間』
https://support.microsoft.com/ja-jp/help/408871
簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。
320デフォルトの名無しさん
2017/04/28(金) 19:14:11.69ID:AZuqyiJa321デフォルトの名無しさん
2017/04/28(金) 22:13:43.74ID:A3VkBONm Publicな静的変数は使わない。
エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
322デフォルトの名無しさん
2017/04/29(土) 02:16:02.91ID:2iGvQ1xG >>321
いや、それは格好悪いんじゃね?
セルを使ったりCustomDocumentPropertiesも使うけど、それに合ったものだから使うわけでPublic変数に合ったものもある。
適材適所だろ。
いや、それは格好悪いんじゃね?
セルを使ったりCustomDocumentPropertiesも使うけど、それに合ったものだから使うわけでPublic変数に合ったものもある。
適材適所だろ。
323デフォルトの名無しさん
2017/05/25(木) 20:51:55.45ID:yS9f0RVc ontime で実行するプロシージャって標準モジュールに書かないとあかんのか。
このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。って出た。
このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。って出た。
324デフォルトの名無しさん
2017/05/25(木) 21:07:30.77ID:JTnnq+Q0325デフォルトの名無しさん
2017/05/26(金) 00:03:34.69ID:Fw61rXsb >>324
ThisWorkBookのモジュールからOnTimeでThisWorkBookのモジュール内のPrivate Sub を予約したんですが・・・これじゃ駄目なんですかね?
ThisWorkBookのモジュールからOnTimeでThisWorkBookのモジュール内のPrivate Sub を予約したんですが・・・これじゃ駄目なんですかね?
326デフォルトの名無しさん
2017/05/26(金) 23:19:52.51ID:Fw61rXsb >>325です
OnTimeで実行予約するプロシージャを標準モジュールに移動したら動くようになりました〜
OnTimeで実行予約するプロシージャを標準モジュールに移動したら動くようになりました〜
327デフォルトの名無しさん
2017/06/05(月) 21:02:56.92ID:bd1ggU41 特定の文字が含まれているセル(複数ある)を検索し、
検索されたセルを含む行全体(Entirerow)を同時選択する方法
以上お願いします。
検索されたセルを含む行全体(Entirerow)を同時選択する方法
以上お願いします。
328デフォルトの名無しさん
2017/06/05(月) 21:06:49.56ID:bd1ggU41 その文字を含むセルを、行ごと削除したり、行ごとコピーしたりと、いろいろしたいので質問致しました。
329デフォルトの名無しさん
2017/06/05(月) 21:25:48.60ID:nSGQpg3a 鮮やかな丸投げっぷりにワラタ
作成依頼OKな Excel VBAスレと間違えてない?
作成依頼OKな Excel VBAスレと間違えてない?
330デフォルトの名無しさん
2017/06/05(月) 21:31:47.51ID:tRFV5HQ5331デフォルトの名無しさん
2017/06/05(月) 21:41:12.12ID:jKyX/qwq 検索対象のセル範囲でForループを回す
セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく
ループ終了後にSelectする
以上
セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく
ループ終了後にSelectする
以上
332デフォルトの名無しさん
2017/06/05(月) 21:45:35.27ID:epzJZZwH333デフォルトの名無しさん
2017/06/05(月) 22:37:03.17ID:bd1ggU41 ごめんなさい、質問者です。
ここじゃなかったのですね。上に上がったやり方でできそうなのでやってみます。ありがとうございます
ここじゃなかったのですね。上に上がったやり方でできそうなのでやってみます。ありがとうございます
334デフォルトの名無しさん
2017/06/06(火) 05:49:03.11ID:tznXutzN 色々細かい条件でどんなコードが効率いいか、変わってくるでしょ。
例えばそのセルがあるのは、特定の行だけとか、検索文字列はセルに完全一致なのか含まれるのか、など。
例えばそのセルがあるのは、特定の行だけとか、検索文字列はセルに完全一致なのか含まれるのか、など。
335デフォルトの名無しさん
2017/06/06(火) 09:11:47.41ID:YhE+Nuz8 331だが、同じ行に該当セルが複数ある場合は無駄が生じるな
実現したい機能次第だが、工夫が必要かもな
実現したい機能次第だが、工夫が必要かもな
336デフォルトの名無しさん
2017/06/07(水) 19:31:10.77ID:e13xfCG0 はじめまして。以下2点、教えていただけると幸いです。
環境は、OS:Windows7, Excel2010です。よろしくお願いします。
1.プルダウンの初期値設定
セルA1にりんご、A2にバナナ、・・・のようにA列にある項目をプルダウンで選択したいです。
このとき、「A列のj行目(パラメータ選択可能)を初期値にしたプルダウンをB1に設置する」VBAのコマンドを教えていただきたいです。
2.ファイル名の変更
aaa.txtというファイルをデスクトップに出力するマクロを作れました。
このマクロ実行後、再度実行するとaaa(2).txtのファイルを、再度実行するとaaa(3).txtのファイルを出力・・・
このようなVBAのコマンドを教えていただきたいです。
環境は、OS:Windows7, Excel2010です。よろしくお願いします。
1.プルダウンの初期値設定
セルA1にりんご、A2にバナナ、・・・のようにA列にある項目をプルダウンで選択したいです。
このとき、「A列のj行目(パラメータ選択可能)を初期値にしたプルダウンをB1に設置する」VBAのコマンドを教えていただきたいです。
2.ファイル名の変更
aaa.txtというファイルをデスクトップに出力するマクロを作れました。
このマクロ実行後、再度実行するとaaa(2).txtのファイルを、再度実行するとaaa(3).txtのファイルを出力・・・
このようなVBAのコマンドを教えていただきたいです。
337デフォルトの名無しさん
2017/06/07(水) 21:49:32.12ID:nqbSOdK9 >>336
コマンドはありません
コマンドはありません
338デフォルトの名無しさん
2017/06/07(水) 22:23:27.64ID:L3ua+fDn >>336
txtファイルをデスクトップに出力っていう日本語の破壊力がやべぇ
txtファイルをデスクトップに出力っていう日本語の破壊力がやべぇ
339デフォルトの名無しさん
2017/06/08(木) 05:33:24.44ID:1DKX/Vru >>336
1
・B1セルを選択してからマクロの記録を実行
・入力規則でリストを選択にリストの内容でA列を選択する
・マクロ記録の終了をする
・できたコードを修正してA列の任意のセルをデフォルトにするように変更する
2
・デスクトップにaaa.txtが存在するかチェックする。
・存在しない場合はaaa.txtを作成して終了。
・存在する場合はDo~Loop中にデスクトップにaaa(i).txtが存在するかチェックする
・存在する場合はiをカウントアップして次のループ
・存在しない場合はそのiを使用してaaa(i).txtを作成して終了。
1
・B1セルを選択してからマクロの記録を実行
・入力規則でリストを選択にリストの内容でA列を選択する
・マクロ記録の終了をする
・できたコードを修正してA列の任意のセルをデフォルトにするように変更する
2
・デスクトップにaaa.txtが存在するかチェックする。
・存在しない場合はaaa.txtを作成して終了。
・存在する場合はDo~Loop中にデスクトップにaaa(i).txtが存在するかチェックする
・存在する場合はiをカウントアップして次のループ
・存在しない場合はそのiを使用してaaa(i).txtを作成して終了。
340デフォルトの名無しさん
2017/06/25(日) 17:10:56.20ID:/fEFwdln A1セルに =NOW()-TODAY() と入力すると
現在時刻が表示されますが。
MsgBox Range("a1")
とすると 0.0110212・・・と言ったような数値が出ます。
Dim now As Date
now=Range("a1")
と型を指定した変数に格納してやると
MsgBox now で 21:49:32 といった一般的な時間表記を示せますが、
変数化を省略して
MsgBox Range("a1")〜に補足コードを書くなどで同じ処理を実現する方法は無いのでしょうか?
現在時刻が表示されますが。
MsgBox Range("a1")
とすると 0.0110212・・・と言ったような数値が出ます。
Dim now As Date
now=Range("a1")
と型を指定した変数に格納してやると
MsgBox now で 21:49:32 といった一般的な時間表記を示せますが、
変数化を省略して
MsgBox Range("a1")〜に補足コードを書くなどで同じ処理を実現する方法は無いのでしょうか?
341デフォルトの名無しさん
2017/06/25(日) 17:20:36.10ID:A4A49pvi MsgBox Range("A1").Text
とか
MsgBox Format(Range("A1"), "hh:mm:ss")
とか
とか
MsgBox Format(Range("A1"), "hh:mm:ss")
とか
342デフォルトの名無しさん
2017/06/25(日) 17:26:03.97ID:/fEFwdln343デフォルトの名無しさん
2017/07/17(月) 17:20:20.62ID:7pjXcMGR プロシージャの中で1回しか使わないのに、わざわざ変数にするやつとかいるよね。(しかもハンガリアン記法で)
100行に満たない程度のコードなら、Withステートメント使ったほうがむしろ可読性は上がる。
100行に満たない程度のコードなら、Withステートメント使ったほうがむしろ可読性は上がる。
344デフォルトの名無しさん
2017/07/17(月) 17:25:26.05ID:l3sSLpQS マシンパワーが貧弱だった大昔ならともかく、今時はリソースを気にする必要なんてないんだから、可読性を最優先で記述するべきだよ。
345デフォルトの名無しさん
2017/07/23(日) 22:54:52.46ID:EbUz/UVB346デフォルトの名無しさん
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の配列とかメモリーならばほとんど気にしなくていいです。
ですから、メモリー内で処理して最後の最後にシートに書くようにしてます。
(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/3wkP349デフォルトの名無しさん
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を用いて(検索するイメージ)抽出し、別のシートへ出力するコードを書きたいのですがいまいちわかりません。
大変困っているのでヒントをくださればありがたいです。
同じブック内の複数のシートにある顧客データをUserFormを用いて(検索するイメージ)抽出し、別のシートへ出力するコードを書きたいのですがいまいちわかりません。
大変困っているのでヒントをくださればありがたいです。
352デフォルトの名無しさん
2017/09/12(火) 02:30:21.88ID:U3/YorLf353デフォルトの名無しさん
2017/09/12(火) 04:10:40.96ID:2wFcaigK354デフォルトの名無しさん
2017/09/12(火) 08:28:28.15ID:GFFccSR9355デフォルトの名無しさん
2017/09/12(火) 12:27:40.35ID:7XJfZGpJ どこで覚えようとお前の知った事じゃねえだろw
なんだこのバカはwww
なんだこのバカはwww
356デフォルトの名無しさん
2017/09/12(火) 13:06:30.39ID:N1ygkJfx >Excel自体触ったことない超初心者
ユーザーフォームを作ったことはあるのか?
無けりゃ、この時点でやろうとしていることはもう無理
VBAはほんの少しでも書いたことはあるのか?
まぁ最初は>>354の言うようにシート上で実現して、それをユーザーフォームにもっていくのが順当
というか触ったこと無いって時点で釣り確定
ユーザーフォームを作ったことはあるのか?
無けりゃ、この時点でやろうとしていることはもう無理
VBAはほんの少しでも書いたことはあるのか?
まぁ最初は>>354の言うようにシート上で実現して、それをユーザーフォームにもっていくのが順当
というか触ったこと無いって時点で釣り確定
357デフォルトの名無しさん
2017/09/12(火) 16:38:53.70ID:2wFcaigK VBA参入門書とネットの知識を詰め込みました。
Excel初心者は本当です。友達に教えてもらいつつやっています。気分を害された方、すみません。
>>356さん非常に分かりやすいです。
二日間くらい最初からコードを書こうとしてもがいていましたが、マクロの記録が使えそうな気がします。
そのコードをいじってボタンで起動するユーザーフォームとくっつけるイメージで挑戦してみます。
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:DHqL5rdG362デフォルトの名無しさん
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の違いって何?
変数を定義する時に
Dim wkR as New ADODB.Recordset
ってするんだけど、RecordsetとRecordの違いって何?
364あ
2017/09/15(金) 10:57:55.87ID:oEkV+GvG365デフォルトの名無しさん
2017/09/18(月) 06:42:59.71ID:xbe9SlrW >>361-362 ありがとうございます、簡単なプログラムですが完成して感動しました。
Ifとマクロの記録が万能すぎることを肝に銘じてこれからもがんばります( ??? )
Ifとマクロの記録が万能すぎることを肝に銘じてこれからもがんばります( ??? )
366デフォルトの名無しさん
2017/09/18(月) 15:10:56.93ID:7Xxpypu9 >>365
万能過ぎないけどね。
そればっかり使ってる人は永遠に初心者なままだし、色々な面で出来の悪いプログラムになる。
自動生成されたコードのそれぞれの意味を理解して自分なりに書けるようになると上達する。
例えば
Range("B4").Select
Selection.Value=10
のようなコードが生成されると思うけど意味を考えたら
Range("B4").Value=10
で良いとわかるよね。
万能過ぎないけどね。
そればっかり使ってる人は永遠に初心者なままだし、色々な面で出来の悪いプログラムになる。
自動生成されたコードのそれぞれの意味を理解して自分なりに書けるようになると上達する。
例えば
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
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
エクセルマクロ(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:2SFxAhMD370デフォルトの名無しさん
2017/09/20(水) 01:17:31.22ID:2dxgF4qE IF文初心者ですが
3つ数字の中から一番小さい数を判定したいのですが、
elseや入れ子で複数書けば判定できるというのは推測がつきますが
最も簡潔に記述するとしたらどんな記述方法がありますでしょうか?
例)
33 12 3
↓
3を抽出
3つ数字の中から一番小さい数を判定したいのですが、
elseや入れ子で複数書けば判定できるというのは推測がつきますが
最も簡潔に記述するとしたらどんな記述方法がありますでしょうか?
例)
33 12 3
↓
3を抽出
371デフォルトの名無しさん
2017/09/20(水) 05:19:03.75ID:mkPuPLWs >>370
最小値 = WorksheetFunction.Min(Array(33, 12, 3))
最小値 = 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
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:j1SDXypf374デフォルトの名無しさん
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つという前提を勝手に変えるこういう馬鹿はなんだろう
数字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限定になったんだ
あといつからこのスレはEXCEL VBA限定になったんだ
385デフォルトの名無しさん
2017/09/22(金) 20:39:03.91ID:zUC9dslV >elseや入れ子で複数書けば判定できる
>最も簡潔に記述するとしたらどんな
という問いに、elseや入れ子の回答するのは無能以前に答えになってないのとちがう?
>最も簡潔に記述するとしたらどんな
という問いに、elseや入れ子の回答するのは無能以前に答えになってないのとちがう?
386デフォルトの名無しさん
2017/09/22(金) 22:15:07.62ID:250/7oh7 え?え?日本語理解できてる?
質問には「Elseを使わずに」なんてどこにも書いてないぞ
ざっくり意訳すれば「IfとElseの数を最小に」する方法を聞いてるんだろ
質問には「Elseを使わずに」なんてどこにも書いてないぞ
ざっくり意訳すれば「IfとElseの数を最小に」する方法を聞いてるんだろ
387デフォルトの名無しさん
2017/09/23(土) 06:12:18.34ID:6cN/4Ux4 372のは374が書いてるように、例えば
x=1
y=1
z=3
と入れただけで誤判定する。アルゴリズムの最低限を割ってるぞ。
372がベストアンサー(笑)だと質問者が思ったなら気の毒なので念のため。
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
ってやる方がわかりやすい
普通に
最小値 = x
If y < 最小値 Then 最小値 = y
If z < 最小値 Then 最小値 = z
ってやる方がわかりやすい
389デフォルトの名無しさん
2017/09/23(土) 10:07:44.78ID:hX9NlXap うん、ベストアンサーはMin使った方だね。
俺だったら迷わずMin使用する。
同時にMin使わない方法も考える。
配列ループも考えた。
でも、別にIf文使っても良いんじゃない?
そんな目くじらを立てるようなことじゃない。
俺だったら迷わず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を使わなきゃならないなんてことに遭遇しないから、はなっから抜けてる。
仕事にしてる奴はIfを使わなきゃならないなんてことに遭遇しないから、はなっから抜けてる。
393デフォルトの名無しさん
2017/09/23(土) 23:00:39.63ID:9AVefP05 必ずIfを使う縛りなら>>388がベストアンサー
ソートアルゴリズムの最初の1回目のループを展開してるだけなんだけど、基本中の基本のやり方
ソートアルゴリズムの最初の1回目のループを展開してるだけなんだけど、基本中の基本のやり方
394デフォルトの名無しさん
2017/09/23(土) 23:28:57.04ID:UvR7p8sn395デフォルトの名無しさん
2017/09/23(土) 23:49:29.12ID:9AVefP05 仕様書はちゃんと読んで、条件は無視しちゃいけないよね
396デフォルトの名無しさん
2017/09/24(日) 02:12:05.73ID:3B64fACL 勉強のため何が何でもIfだけで解決しなきゃいけなかったのか、
まだ初心者だからMinという便利な物があることを知らなかったのか
それによって変わってきちゃうからー
まだ初心者だからMinという便利な物があることを知らなかったのか
それによって変わってきちゃうからー
397デフォルトの名無しさん
2017/09/24(日) 08:43:50.06ID:LX+6AD0q398デフォルトの名無しさん
2017/09/24(日) 09:20:40.69ID:SDtHFGLj >>394
分かってねえなあ。
勉強を教える仕事じゃないならユーザーにとって一番使いやすいとか、速度が速いとか、ユーザーが満足するようなものかどうかが大事なのであって、どんなコードじゃなければならないとかの要望は普通無い。
そして、メンテナンス性とかコードの書き方に関してもMinの方が良いとなればそもそもの問い掛け自体仕事で発生することは無い。
そして実際には、何でMinじゃ駄目なのと問い掛けられない奴は仕事の出来ない奴ということになる。
(もちろん明確に理由が有るならIfで書く。)
指示通りにしか作れない奴じゃ単なるコーダって奴になるしかない。
仕事ではMinを使わないなら明確な理由が存在するし、打ち合わせなんかのやり取りで既に意思統一されてる筈だ。
つまり今回の問い掛けのような事態は存在しない。
分かってねえなあ。
勉強を教える仕事じゃないならユーザーにとって一番使いやすいとか、速度が速いとか、ユーザーが満足するようなものかどうかが大事なのであって、どんなコードじゃなければならないとかの要望は普通無い。
そして、メンテナンス性とかコードの書き方に関してもMinの方が良いとなればそもそもの問い掛け自体仕事で発生することは無い。
そして実際には、何でMinじゃ駄目なのと問い掛けられない奴は仕事の出来ない奴ということになる。
(もちろん明確に理由が有るならIfで書く。)
指示通りにしか作れない奴じゃ単なるコーダって奴になるしかない。
仕事ではMinを使わないなら明確な理由が存在するし、打ち合わせなんかのやり取りで既に意思統一されてる筈だ。
つまり今回の問い掛けのような事態は存在しない。
399デフォルトの名無しさん
2017/09/24(日) 10:07:44.74ID:lViLIhLn >>393
だな、簡素で分かりやすく奇麗なコードだ
だな、簡素で分かりやすく奇麗なコードだ
400デフォルトの名無しさん
2017/09/24(日) 15:00:43.73ID:3BjqQEbI401デフォルトの名無しさん
2017/09/24(日) 16:46:42.97ID:jWeMnfEt >>400
仕事をしたことの無い奴には分かるまいw
仕事をしたことの無い奴には分かるまい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に対しアイテムが複数あるので
配列で入れようと思ったのですがうまくいきません
何か良い方法はありませんか?
今vbaでマップ使って
とある表の集計を行なっております
一つのkeyに対しアイテムが複数あるので
配列で入れようと思ったのですがうまくいきません
何か良い方法はありませんか?
408デフォルトの名無しさん
2017/11/08(水) 16:45:58.99ID:pE/cp7rq もう少し具体的にどうぞ
409デフォルトの名無しさん
2017/11/08(水) 21:23:36.05ID:+KUB1/9h410デフォルトの名無しさん
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で作ればいい
ピボットテーブルをvbaで作ればいい
413デフォルトの名無しさん
2017/11/08(水) 21:38:43.05ID:vt31E4Mm エスパーじゃないんだから、もっと具体的に説明しないと、何がしたくて何ができないのか判んないよ。
そして多分だけど普通にifで分岐するプログラムを書くだけだと思う。
そして多分だけど普通に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
上のような感じのシートがあって
集計かけたり
平均とったり
最大値だったりしたい
キー 金額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:aQlO1Uq5417デフォルトの名無しさん
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 https://i.imgur.com/wtkTdlA.png
上のように各列の情報に応じて、一定の条件にヒットしたら評価欄に追記、ということをしているのですが、
上手い書き方が思いつかず、冗長で読みにくいコードになってしまいます
https://i.imgur.com/cE0kOho.png
どうすれば綺麗で読みやすいコードになるでしょうか?
特に、変数(ここでは「評価」)の参照先のセルに書き込みつつ、変数の値自体も更新するスマートな方法と
If文で2つの条件が当てはまった場合に両方の処理を実行させる(ここでは40点以下と60点未満のIf文を一つで済ませるとか)方法があれば知りたいです
上のように各列の情報に応じて、一定の条件にヒットしたら評価欄に追記、ということをしているのですが、
上手い書き方が思いつかず、冗長で読みにくいコードになってしまいます
https://i.imgur.com/cE0kOho.png
どうすれば綺麗で読みやすいコードになるでしょうか?
特に、変数(ここでは「評価」)の参照先のセルに書き込みつつ、変数の値自体も更新するスマートな方法と
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を並べる今の書き方で別に悪くない
配列を使え
あとソースを読んだり修正したりやりにくいから画像にせずそのままテキストとして貼ってくれ
科目 = 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:MIqJX5DT426デフォルトの名無しさん
2017/11/10(金) 22:07:12.41ID:KbRkXeO5 何をどーしたいのかよーわからんが、
オートフィルの連続データが完成したならDo While Loopでも使えばいいんじゃね
オートフィルの連続データが完成したなら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だとキーが重複してたらエラーになるから
重複させたくない場合は便利だと思う
あと既にそのキーが登録してあるか調べるメソッドがあるから便利
配列でも実現出来るけど生産性の問題だと思う
Dictinonaryだとキーが重複してたらエラーになるから
重複させたくない場合は便利だと思う
あと既にそのキーが登録してあるか調べるメソッドがあるから便利
配列でも実現出来るけど生産性の問題だと思う
430デフォルトの名無しさん
2017/11/16(木) 12:40:16.53ID:+IKZz2Nz >>428
Excelならコレクションは知らないうちに必ず使ってるから心配しなくてもいい
オブジェクトを複数まとめた物がコレクションで、例えばワークシートオブジェクトをまとめた物もコレクションの一種
新規ブックを作るとワークシートが3枚あるじゃろ?それがもう既にコレクションなんだわ
名前をよく見ると「Worksheets」って複数形になっとるじゃろ?これが「複数まとめた」コレクションを示しておるのじゃ
Excelならコレクションは知らないうちに必ず使ってるから心配しなくてもいい
オブジェクトを複数まとめた物がコレクションで、例えばワークシートオブジェクトをまとめた物もコレクションの一種
新規ブックを作るとワークシートが3枚あるじゃろ?それがもう既にコレクションなんだわ
名前をよく見ると「Worksheets」って複数形になっとるじゃろ?これが「複数まとめた」コレクションを示しておるのじゃ
431デフォルトの名無しさん
2017/11/16(木) 16:08:34.06ID:mcjOn36E >>428
コレクションの便利さを実感できるのは、For Each 〜 Nextとか
コレクションの便利さを実感できるのは、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:CQAbf3aD435428
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使うわな。
つまり連想配列が感覚に合う。
こういう場合は一行ずつ見て行って×、○、○の組を探すわな。
こういう場合はFor Next使うわな。
つまり普通の配列が感覚に合う。
一方、A1:F100の範囲の各セルで1つだけ○、他は全て×の時に○のアドレスを知りたいなんて時には見つかるまで全てチェックすれば良いわけで、どう見ていくかなんて関係無いわな。
こういう場合はFor Each Next使うわな。
つまり連想配列が感覚に合う。
439デフォルトの名無しさん
2017/11/19(日) 22:00:10.14ID:jY4FOG+m >>438
そんなもん普通はvlookup使うわな。
そんなもん普通はvlookup使うわな。
440デフォルトの名無しさん
2017/11/20(月) 09:52:50.14ID:6BLE5ZLY >>439
ばーか。
感覚を例として挙げてることが分からないバカは黙ってろ。
もっと上手い方法があるだろうことは最初から分かってる。
順番を意識しないIteratorの感覚を説明してる。
コレクションにだって順番は実際はある。
しかしそれを意識しないような場合にぴったりということだ。
ばーか。
感覚を例として挙げてることが分からないバカは黙ってろ。
もっと上手い方法があるだろうことは最初から分かってる。
順番を意識しない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
批判してくれる奴に感謝しろよw
444デフォルトの名無しさん
2017/11/20(月) 22:04:34.15ID:9xFKx2hL 質問と関係ないこと言ってもいいと思うけどなんでそれが駄目なのかな?
445デフォルトの名無しさん
2017/11/20(月) 22:24:58.18ID:Pkea+7u9446デフォルトの名無しさん
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関数は呼び出して戻り値が得られるのですが、自作関数だと呼び出せなくて困っています。
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つのファイルを作り、
それを参照すればすべて使える、というようにしたいのです。
こういうことはできるでしょうか。
参照設定ではありません。
現在、ユーティリティ関数を集めた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:xB5YUWoV454デフォルトの名無しさん
2017/12/01(金) 19:54:29.89ID:WVxyYcg9 なんでも詰めこめばいくらでも大きくなるだろw
どんだけ貧困なイメージ力だよ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つに纏めるべきかいくつも参照すべきのどちらかじゃね?
そういう運用は良いのかという問題がある。
それぞれのアドインがバッティングしないのなら、そもそもアドイン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一つにまとめて行ったら大きくなってしまいました。
この辺を別ファイルにしようと思っています。
・プロジェクトエクスプローラが縦に長くなりすぎて使いづらい。
・巨大なクラスになると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
無駄なことすんなw
460デフォルトの名無しさん
2017/12/02(土) 13:17:30.17ID:7He58R5A 使うときは割と全部必要ですが、細かく分かれていないと
機能追加やリファクタリングが面倒なんですよ。
モジュールをディレクトリ分けしてツリー構造にするような
ことができれば一番いいんですが。
機能追加やリファクタリングが面倒なんですよ。
モジュールをディレクトリ分けしてツリー構造にするような
ことができれば一番いいんですが。
461デフォルトの名無しさん
2017/12/03(日) 00:26:04.64ID:R5bnWQiD 出来るかどうか知らんが
親のユーティリティで子を自動的に参照設定すればいいんじゃね
たしか参照設定もVBAからいじれたはず
親のユーティリティで子を自動的に参照設定すればいいんじゃね
たしか参照設定も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("domon@sapporotakusho.co.jp")
objMe.Type = olBCC
objMe.Resolve
Set objMe = Nothing
End Sub
検索すると出てくるこのプログラムだと、
再送しようとした場合、BCCが複数追加されてしまいます
Outlookで自動的にBCCを設置するプログラムは調べたら乗っているのですが
BCCに既に設定したいアドレスがあった場合は追加処理をしないというプログラムを追加したいです
Dim objMe As Recipient
Set objMe = Item.Recipients.Add("domon@sapporotakusho.co.jp")
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
変数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知らんけど余計なことすんなボケ
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セルを選択したいとか。
飛ばすといっても、そのタイミングが変更した時なのか、選択したときなのか、特定の数値が入ったときなのか。
もっと具体的にどんなのが作りたいか書いてもらわないと難しいです。
5列目を変更した時に同じシートの1列目を選択するようにしたい、とか。
あるいは、別のシートのA1セルを選択したいとか。
飛ばすといっても、そのタイミングが変更した時なのか、選択したときなのか、特定の数値が入ったときなのか。
477デフォルトの名無しさん
2018/01/25(木) 14:35:16.74ID:HAPJI9RJ こんな感じの表Aがあって、似たような表Bが別シートにあるんですけど、
表Aのセルの色を付けると同時にB表のセルのイロを変える
または、セルの文字も一緒に持ってくる
できますか?
https://i.imgur.com/u3mc1ot.jpg
表Aのセルの色を付けると同時にB表のセルのイロを変える
または、セルの文字も一緒に持ってくる
できますか?
https://i.imgur.com/u3mc1ot.jpg
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を使う
RaiseEventを使う
483デフォルトの名無しさん
2018/01/25(木) 19:01:57.40ID:KaDWqQ6/ >>482
お忙しいのにみなさんありがとうございます
ちょっと詳しく説明すると、こんな感じです
左のsheetの表は一項目につき3段、その3段目の情報で仮にA,Bが記載されてある色つきのセルの情報のみを抜き出し、右にある別sheetの表に反映させたいのです
分かりづらかったらすいません
どのように組めば行けるのか、詳しく教えて頂くとありがたいです
https://i.imgur.com/M5bti06.jpg
お忙しいのにみなさんありがとうございます
ちょっと詳しく説明すると、こんな感じです
左のsheetの表は一項目につき3段、その3段目の情報で仮にA,Bが記載されてある色つきのセルの情報のみを抜き出し、右にある別sheetの表に反映させたいのです
分かりづらかったらすいません
どのように組めば行けるのか、詳しく教えて頂くとありがたいです
https://i.imgur.com/M5bti06.jpg
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
御貴兄たち、何卒添削お願いします。変数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表のセルのイロを変える
この仕様を見逃してたわ
見なかったことにしてくれ
>表Aのセルの色を付けると同時にB表のセルのイロを変える
この仕様を見逃してたわ
見なかったことにしてくれ
489デフォルトの名無しさん
2018/01/26(金) 19:09:34.97ID:o3fzSqcU490デフォルトの名無しさん
2018/01/26(金) 19:28:54.13ID:s5W3X/Fy できると思うけど、見本の写真がよく見えない。
491490
2018/01/26(金) 21:06:22.97ID:K81AssZX パソコンで見たら見えた。
これ、変更したところだけ反映したいの?
それとも、元表の3行目全てを反映したいの?
というか、データだけなら=で結べばいいのでは?
これ、変更したところだけ反映したいの?
それとも、元表の3行目全てを反映したいの?
というか、データだけなら=で結べばいいのでは?
492デフォルトの名無しさん
2018/01/26(金) 21:17:19.09ID:o3fzSqcU493デフォルトの名無しさん
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か、直接指定するか。(元の表に罫線が引いてあるか、空欄があるかで変わってくる)
結構長いというけど、どれくらい?
数十列数十行くらいで、1回だけなら右にオートフィルして、行ごとコピペするのが早いと思う。
=で繋ぐだけなら1回やっておけば、あとは自動でかわる。
マクロでやるとしても、数式で=を入れればいいのか、値を持ってくるようにした方がいいのか。
表の範囲指定はどうするか?
current.regionか、usedrangeか、直接指定するか。(元の表に罫線が引いてあるか、空欄があるかで変わってくる)
496デフォルトの名無しさん
2018/01/28(日) 14:19:41.49ID:Erw8GBm0 数式だって絶対参照、相対参照をきちんと意識して書けばRange=数式でアドレスに併せて変えてくれるから1回の代入で終わる。
以外と知らずに1セルずつ代入する人もいるけど。
以外と知らずに1セルずつ代入する人もいるけど。
497デフォルトの名無しさん
2018/01/28(日) 14:51:25.14ID:fbEFMaxh >>495
3段目に毎回同じ文字がくるとは限らず、最低3種類の文字がくるので、とりあえずif分使って作成しました
横に日数1年分、縦に各項目50程です
絵にある通り、全く同じ表をコピペして使いますが(線あり)、ほんとは転記先の表は1段で済ませたい所でした
日替わりで最低3種類のうちのひとつが返ってきたらいいので
わかりづらくてすいません
3段目に毎回同じ文字がくるとは限らず、最低3種類の文字がくるので、とりあえずif分使って作成しました
横に日数1年分、縦に各項目50程です
絵にある通り、全く同じ表をコピペして使いますが(線あり)、ほんとは転記先の表は1段で済ませたい所でした
日替わりで最低3種類のうちのひとつが返ってきたらいいので
わかりづらくてすいません
498デフォルトの名無しさん
2018/01/28(日) 14:52:48.13ID:fbEFMaxh499490
2018/01/28(日) 17:27:50.85ID:z3VzjyNA500490
2018/01/28(日) 17:29:06.20ID:z3VzjyNA パス 0128
501デフォルトの名無しさん
2018/01/28(日) 18:08:34.70ID:745uG8BQ502499
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でもちゃんと相対参照してくれる。
やり方も何も、例えば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
パス 0128
506デフォルトの名無しさん
2018/01/29(月) 00:30:08.47ID:flk0qVid507デフォルトの名無しさん
2018/01/29(月) 00:48:46.52ID:rWIIKeXW 下から5行くらいにtext ってあるの、valueに直した方がいいかも。
textでも問題ないかもしれないけど。
textでも問題ないかもしれないけど。
508デフォルトの名無しさん
2018/01/29(月) 08:59:53.06ID:flk0qVid おはようございます
昨日ダウンロードさせてもらったファイル開かないのですが、どうやったら開きますか?
昨日ダウンロードさせてもらったファイル開かないのですが、どうやったら開きますか?
509デフォルトの名無しさん
2018/01/29(月) 18:12:06.82ID:acQcDZwj エクセルのバージョンは?
当方2013で開けましたよ。
当方2013で開けましたよ。
510デフォルトの名無しさん
2018/01/29(月) 21:31:37.99ID:flk0qVid511デフォルトの名無しさん
2018/02/03(土) 14:43:09.33ID:xQQ90zOV プログラマですがvbaの初心者です。
C,java,lisp,python 基本的な言語とその意味論はだいたい知ってます。
vbaで書籍を探すと、大抵業務問題の解決という文脈で本が書かれているようですが
純粋に言語的な機能を抽出した言語仕様、あるいはリファレンスに相当するものを求めています。
そのような書籍のうちもっとも簡潔に記述されているような本はないでしょうか?
C,java,lisp,python 基本的な言語とその意味論はだいたい知ってます。
vbaで書籍を探すと、大抵業務問題の解決という文脈で本が書かれているようですが
純粋に言語的な機能を抽出した言語仕様、あるいはリファレンスに相当するものを求めています。
そのような書籍のうちもっとも簡潔に記述されているような本はないでしょうか?
512デフォルトの名無しさん
2018/02/04(日) 02:06:08.04ID:Nq0C9+DR >>511
本職のPGならマイクロソフトのディベロッパーセンターの英語版リファレンスを直に読んだ方が良い
あと、場合によってはVBAとほぼ同じシンタックスになってるVB.NET用のMicrosoft.Office.Interopクラス以下の各アプリケーションのオブジェクトのリファレンスの方が役に立つこともある
本職の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:VbMnR6W2516デフォルトの名無しさん
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)みたいに扱いたいのですがどうしたらいいでしょうか
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を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
両院で、改憲議員が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
基礎的な質問で恐縮ですが、ご解説いただければ幸いです。
よろしくお願いします。
省略可能なキーワード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:1c1zt9Ui524デフォルトの名無しさん
2018/03/08(木) 09:50:20.87ID:kgkGNmtQ525デフォルトの名無しさん
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になる。
理屈で覚えればややこしくはないぞ。
配列の添字は距離のようなもので、「当該配列の1個目の要素のポインタを起点としたときに、そのポインタにどれだけ(何回)加算した場所に、その要素の格納されているメモリが存在するか」を示す数字。
1個目の要素から1個目の要素に移動するための加算回数=距離は0だから、1個目の要素にアクセスするときの添字は0になる。
527デフォルトの名無しさん
2018/03/08(木) 20:23:06.52ID:wcvra3LB >>514
if文でセルの指定範囲の時実行で1列目の時と2列目の時で分けたらどうですか?
if文でセルの指定範囲の時実行で1列目の時と2列目の時で分けたらどうですか?
528デフォルトの名無しさん
2018/03/08(木) 21:31:26.55ID:Tr04o/zO >>525
0スタートどころか-100スタートとかも可能
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
配列添字の範囲指定なんて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からというのもたまに嵌る。
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+B2oLbA536デフォルトの名無しさん
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じゃなきゃ書けないバカはレス禁止
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:z1FVyjSJ543デフォルトの名無しさん
2018/03/11(日) 17:04:17.63ID:sEfAJdP7 Excelが開発された当初はまだ0の発見前だったからだろ。
今作るなら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点あります。ベジェ曲線で描かれた頂点の座標はもう残っていないのでしょうか??
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
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を保持させる
質問ごとに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
<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を使う際に何か必要なことがあるのでしょうか?
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
下記のマクロだと、シート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+/wpzED558デフォルトの名無しさん
2018/05/11(金) 15:54:14.26ID:Pz/tQeeR >>557
できました!ありがとうございました!
できました!ありがとうございました!
559デフォルトの名無しさん
2018/05/23(水) 19:25:31.94ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
HCSP8
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
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をシートモジュールに書いて、そこから呼び出される関数も全部シートモジュールに書いたら分量がすごいことになりました
やっぱりクリック検出だけにしぼって残りは全部標準モジュールにすべきなんですかね。そのシートでしか呼び出されないわけで分けるのも分かりにくいような気もして
とりあえずclickedをシートモジュールに書いて、そこから呼び出される関数も全部シートモジュールに書いたら分量がすごいことになりました
やっぱりクリック検出だけにしぼって残りは全部標準モジュールにすべきなんですかね。そのシートでしか呼び出されないわけで分けるのも分かりにくいような気もして
565デフォルトの名無しさん
2018/05/31(木) 23:13:50.53ID:eZ3BghFT >>563
Excel2003までのツールバーにメニュー追加するコードを書くと2007以降ではリボンにメニューが追加されるけど違う話かな?
Excel2003までのツールバーにメニュー追加するコードを書くと2007以降ではリボンにメニューが追加されるけど違う話かな?
566デフォルトの名無しさん
2018/07/02(月) 19:23:11.48ID:kZ0RH16R Access2016でコンボボックスの規定値をnullから1へ変更したくて
フォーム!コンボボックス.DefaultValue = """1"""とするフォーム上は1と表示されるんだが、プロパティーシート上は全く変化なくて、フォームをとじてから開くと規定値が変わっていなくてNullのまま。
VBAからは既定値の変更が出来ないのかな?
フォーム!コンボボックス.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側でなくワード側で制御してそうだから、回避は厳しそうな気がする
開くと読み取り専用か聞いてくるのか
まあ、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というのを指定すれば良さそうなんですが
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を渡しても読みとり専用で開かれるのは確認済みです
ReadOnlyにFalseを渡しても読みとり専用で開かれるのは確認済みです
583デフォルトの名無しさん
2018/08/02(木) 12:49:47.07ID:rM6odxjs584デフォルトの名無しさん
2018/08/02(木) 18:55:35.87ID:kRv3+o5C585デフォルトの名無しさん
2018/08/02(木) 19:38:51.82ID:CFW8XzdE >>582
すくなくともうちの環境では、ReadOnly:=Falseで書き込み可能で開いてるけど?
その状態からReadOnlyRecommended = Falseにして保存したら、読み取り専用推奨は外れてるが
まあうちの環境がかなり古いから最近では出来ない可能性もあるが
それホントに推奨なだけなのか?
すくなくともうちの環境では、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
試した環境は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
らしいけど、適用対象バージョンがよくわからんな
じゃあ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 ))
のようにして ワークシートごとの数値群をスパークラインにしていきたいのですが、、、
何か良い方法を教えてください。
よろしくお願いします。
わかる方いたら教えてください。よろしくお願いします。
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を使うのは初めてでしてお手引きをお願いいたします
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"にして保存
日毎のレポートのひな形を作ろうとしています
あまり知らないながら書いてるのですがエラー出まくりで泣きそうです
【前提】
・デスクトップにフォルダ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クエリの引数) を使えば良いのでは
Application.Searchメソッド、もしくは
Application.Session.GetDefaultFolder(olFolderInbox).GetTable(DASLクエリの引数) を使えば良いのでは
593デフォルトの名無しさん
2018/09/02(日) 16:51:32.22ID:Q0JGCJ3q >>591
悪いこと言わないから、手でやるか詳しい人に頼みなさい
複数のブックが同時に開かれている状態でのVBA処理には
いろいろ面倒なところがあり、経験が必要
5ちゃんでサクっと説明できるものではない
しかもフォルダ処理も伴っているので、エラー処理を含め
きっちり作ろうとするとけっこうな規模のアプリになってしまうと思う
悪いこと言わないから、手でやるか詳しい人に頼みなさい
複数のブックが同時に開かれている状態でのVBA処理には
いろいろ面倒なところがあり、経験が必要
5ちゃんでサクっと説明できるものではない
しかもフォルダ処理も伴っているので、エラー処理を含め
きっちり作ろうとするとけっこうな規模のアプリになってしまうと思う
594デフォルトの名無しさん
2018/09/02(日) 17:27:55.14ID:1l6OdzeH >>591
thisworkbook.path\フォルダA\0901を開いてあとはブック名から指定して必要事項を書き換え。
ブック名を指定してsaveAsで
thisworkbook.path\フォルダA\0902で保存。
蛇足だが、必要無くともブックもシートも常に指定した方が良い。
thisworkbook.path\フォルダA\0901を開いてあとはブック名から指定して必要事項を書き換え。
ブック名を指定してsaveAsで
thisworkbook.path\フォルダA\0902で保存。
蛇足だが、必要無くともブックもシートも常に指定した方が良い。
595デフォルトの名無しさん
2018/09/02(日) 17:44:00.59ID:GR8jnF/5596デフォルトの名無しさん
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
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のクイックサーチ(?)する方法があればと思ったのですが
無理っぽいですね
ありがとうございました
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っていう風に数字が並んでいってしまいます
どうしたらいいでしょうか
うまくできません
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)
でいいんじゃないかな
もしmyNがString型、あるいはObject型に文字列データが入っている場合は数値型に変換する必要がある
Range("A1").Value = Val(Range("A1").Value) + Val(myN)
でいいんじゃないかな
601デフォルトの名無しさん
2018/09/06(木) 19:23:08.77ID:KlP6yXrE602デフォルトの名無しさん
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 オブジェクトが必要です。」となって動きません。
「標準モジュールに以下のコードを追加して」の意味が分からないので、
標準モジュールをどう書いたらよいのか、どこに追加したらよいのかわからず
サンプルコードのみを実行しました。
どなたか親切な方、対応方法を教えてください。
難しいことはわからないので具体的にコードを書いてもらえると嬉しいです。
よろしくお願いいたします。
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"
>>objIE.document.getElementById("gbqfq").Value = "VBA"
objIE.Document.getElementById("lst-ib").Value = "VBA"
604デフォルトの名無しさん
2018/09/21(金) 22:40:18.36ID:Fm9zyYJ3605デフォルトの名無しさん
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 = "マイレージ"としてみました。
お時間あるときでよいので出来たらお願いします。
仕事で毎日同じような入力ばかりしていて自動化できるところをできたらいいなと思っているのですが、超初心者にはハードルが高くて難しいです 涙
'
ありがとうございます!
同じことを別のホームページでしたくて、
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 には関係ないのだけど。
全言語・プログラミングに共通の話題なんだが
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 とは、全く関係ない
ウェブページは、HTML(DOM), CSS, JavaScript で出来ている。
ブラウザでF12 を押すと、開発者ツールが起動するだろ
これらを知らないと、ウェブ開発はできない!
VBA とは、全く関係ない
610デフォルトの名無しさん
2018/09/22(土) 03:52:07.76ID:AiTHsE5Z611デフォルトの名無しさん
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を作ったりしないといけないのは間抜けな仕様だと思うがどうだろうか?
無駄にFunctionを作らないようにと英語の本には書いてある。Subで済むもをFunctionにするなと書いてある。
なのに、マクロの仕様のために、無駄にFunctionをつくったり、SubをcallするだけのFunctionを作ったりしないといけないのは間抜けな仕様だと思うがどうだろうか?
616デフォルトの名無しさん
2018/10/12(金) 10:38:39.78ID:/wsNoZ03617デフォルトの名無しさん
2018/10/12(金) 10:53:20.05ID:TjU2aakC >>616
マクロからSubをCallできないのは知ってますか?
マクロからSubをCallできないのは知ってますか?
618デフォルトの名無しさん
2018/10/12(金) 12:09:03.01ID:bZOmvKy4619デフォルトの名無しさん
2018/10/12(金) 12:28:42.41ID:YStpcFYj620デフォルトの名無しさん
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に書き換えた記憶があるけどなあ
仕事で使ってた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"
とする。
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だと実行されるという謎仕様のことです。
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/
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を呼べないわけがない
全然話してる内容が違う
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 プロシージャを実行します。
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にしている人がいるのはこのあたりにも原因があるのでしょうかね。。。
そうなんですか?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する」は意味が(あるいは受け取り方が)違うので下手に知ったかぶりしないこと。
・「呼び出す」と「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する」と表現する例は比較的稀だと思うぞ
関数という言葉の定義次第では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が果たして関数と言えるのかどうかということの方が怪しくなる
その理屈だと、Function Procedureが戻り値なしの記述を許容していること、戻り値と全く論理的な二項関係がない処理をFunction Procedureの中に書けてしまうことを考えた場合、Function Procedureが果たして関数と言えるのかどうかということの方が怪しくなる
643デフォルトの名無しさん
2018/10/14(日) 18:45:30.05ID:+nd0Ta/b それはプロパティとメソッドについても言えるわけで。
意味合いから使い分ければ良い。
Accessの仕事してるけどいわゆるAccessのマクロ機能は嫌いなので殆ど触ったことないな。
意味合いから使い分ければ良い。
Accessの仕事してるけどいわゆるAccessのマクロ機能は嫌いなので殆ど触ったことないな。
644デフォルトの名無しさん
2018/10/15(月) 00:09:25.20ID:bvVmxQGC645デフォルトの名無しさん
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 学校の課題なんですがさっぱり分かりません
コードの入力?を教えてほしいです
https://i.imgur.com/F4T8tlt.jpg
https://i.imgur.com/3L2Gjq0.jpg
コードの入力?を教えてほしいです
https://i.imgur.com/F4T8tlt.jpg
https://i.imgur.com/3L2Gjq0.jpg
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:yWBiOXbZ651デフォルトの名無しさん
2018/11/14(水) 20:37:40.54ID:yWBiOXbZ652デフォルトの名無しさん
2018/11/14(水) 22:42:46.78ID:iSnTRpeY 学校でExcelの課題出るのか
全員Excel入りのWindows機もってる前提なのか
全員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だけで表示しようとすると、
どのようになるのでしょうか?
宜しくお願いします
ttps://oshiete.goo.ne.jp/qa/5352661.html
下記URLのNo.4の回答のelseifを使ったものがありますが、
elseifを使わずにelseだけで表示しようとすると、
どのようになるのでしょうか?
宜しくお願いします
ttps://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
宜しくお願いします
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
If b > Max Then
Max = b
Else
If c > Max Then Max = c
End If
659デフォルトの名無しさん
2018/11/16(金) 06:18:18.01ID:biDBAQdb660デフォルトの名無しさん
2018/11/16(金) 06:57:12.53ID:fQoG7lNZ そもそも657では最大値求められないだろ。
なぜ他の2つと比較してから決めないのか
なぜ他の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
試しに
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のまま終わってしまう
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+v0zL667デフォルトの名無しさん
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
上手く情報を取得できないのでアドバイスお願いします。
・やりたいこと
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:coxr7jtk677デフォルトの名無しさん
2018/12/27(木) 00:55:19.50ID:coxr7jtk >>675
fullpass じゃなくて、fullpath ね。
fullpass じゃなくて、fullpath ね。
678デフォルトの名無しさん
2018/12/27(木) 01:02:39.75ID:coxr7jtk679デフォルトの名無しさん
2018/12/27(木) 01:09:08.59ID:coxr7jtk >>675
Cell値を取るときは、デフォルトにまかせずちゃんとプロパティ指定しよう。
Cell値を取るときは、デフォルトにまかせずちゃんとプロパティ指定しよう。
680デフォルトの名無しさん
2018/12/27(木) 01:16:51.54ID:coxr7jtk681デフォルトの名無しさん
2018/12/27(木) 09:18:35.23ID:psUgzr4+682デフォルトの名無しさん
2018/12/27(木) 09:19:34.30ID:lhYnw8ev >>675
最初に注意すべきなのは、いきなりRangeやCellsは絶対に使うべきじゃないってこと。
ちゃんと省略せずにWorkbookやWorksheetから書くようにする。
しかしそれだとコ―ドが長くなるのでそのために今回のコードのように変数で受けるかWith文を使う。
以下はスマホ上で書いてるんで動くかは不明です。
最初に注意すべきなのは、いきなり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
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:lhYnw8ev685デフォルトの名無しさん
2018/12/27(木) 09:26:03.58ID:lhYnw8ev 早速間違いだ。
fullPassと書いてる所が一ヶ所ある。
fullPathに直しておいてね。
fullPassと書いてる所が一ヶ所ある。
fullPathに直しておいてね。
686デフォルトの名無しさん
2018/12/27(木) 11:21:46.87ID:coxr7jtk687デフォルトの名無しさん
2018/12/27(木) 11:57:21.88ID:psUgzr4+688デフォルトの名無しさん
2018/12/27(木) 12:23:02.37ID:psUgzr4+ 少し言葉足らずでした。
iのカウント(空白行までループ)は上手く出来ているので、現マクロ有効ブックの新シートに取得情報を
書き込めていないようです。
iのカウント(空白行までループ)は上手く出来ているので、現マクロ有効ブックの新シートに取得情報を
書き込めていないようです。
689デフォルトの名無しさん
2018/12/27(木) 12:57:12.54ID:lhYnw8ev >>688
うん?
Do〜Loopの中はiのカウントアップしてるだけなので、あなたが省略した(と勝手に思ってるんだけど)コードが動いていないということ?
念のためにいうと、元々のコードには情報を取得するコードが全く無いからこのコードだけじゃ取り込めないのは当たり前だよね。
うん?
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
にして上手くいきました、ありがとうございます。
不覚に気づき、
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 - ○
のようにして、
無駄にできてしまう空白もなくしました。
お付き合いしてくださった方、
ありがとうございました。
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:aAVkqECP695デフォルトの名無しさん
2019/01/03(木) 14:57:12.35ID:9QrYctZ6 何をしたいのか書いてよ
罫線の設定状況を知りたいだけならRange.Borders見なよとしか言えないし
https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.borders
罫線の設定状況を知りたいだけなら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?
罫線を描く動作は理解できてる?
マクロ記録で簡単に調べられますよ。
例えば、2行2列選んで、縦横斜め全てに実線入れて
記録されたものを見ればどのような構造で描かれているのか
分かります。
記録の際は、xl〜の定数でよいですが、取得の際は数値で
返ってくるので注意。
調べたければオブジェクトブラウザで調べてもよいですが、
イミディエイトで、?xlThin みたいに簡単に確認する方法も
あります。
でも、取得して使うなら数値のままでもOKです。
ここまではOK?
697デフォルトの名無しさん
2019/01/03(木) 16:26:50.99ID:+aY40et6698デフォルトの名無しさん
2019/01/03(木) 16:38:04.35ID:CdG5H8Qg699デフォルトの名無しさん
2019/01/03(木) 17:30:36.94ID:Em9anKIf >>697
シート保護で十分みたいですね。
もし何らかの理由で保護できないのであれば、
同フォーマットの隠しシートから書式貼り付けした方が早そう。
セル結合もあるし、1セルずつ罫線情報取得とか効率悪すぎ。
シート保護で十分みたいですね。
もし何らかの理由で保護できないのであれば、
同フォーマットの隠しシートから書式貼り付けした方が早そう。
セル結合もあるし、1セルずつ罫線情報取得とか効率悪すぎ。
700デフォルトの名無しさん
2019/01/03(木) 22:01:21.27ID:aAVkqECP >>698
>>699
それがわかりながらあらゆる所(不規則)を動かさないといけない時があったりで、保護だと都合が悪かったんです
フォーマット自体を大幅に変更できればもっと色々と簡単にできるのですが、それも他のおばあちゃんたちが前の方が良かった〜なんて必ず言うので見た目を崩すことはできません
担当のおばあちゃんorおばさんが変われば書式貼り付けのための範囲選択も上手くできないだろうから(全選択など知りません)また誰かが黙って長時間四苦八苦する事になってしまいます
無駄にすべて最初からやろうとしたりも平気であります
平均年齢49才の職場なので仕方ないんです
誰にも聞かずに戻したい部分を戻せるような、とーーってもわかりやすい説明付きのボタンをユーザーフォーム上にでもいくつか作ってあげたいと思っています
崩してしまうパターンはだいたい把握できているので、それが最善かなと…
>>699
それがわかりながらあらゆる所(不規則)を動かさないといけない時があったりで、保護だと都合が悪かったんです
フォーマット自体を大幅に変更できればもっと色々と簡単にできるのですが、それも他のおばあちゃんたちが前の方が良かった〜なんて必ず言うので見た目を崩すことはできません
担当のおばあちゃんorおばさんが変われば書式貼り付けのための範囲選択も上手くできないだろうから(全選択など知りません)また誰かが黙って長時間四苦八苦する事になってしまいます
無駄にすべて最初からやろうとしたりも平気であります
平均年齢49才の職場なので仕方ないんです
誰にも聞かずに戻したい部分を戻せるような、とーーってもわかりやすい説明付きのボタンをユーザーフォーム上にでもいくつか作ってあげたいと思っています
崩してしまうパターンはだいたい把握できているので、それが最善かなと…
701デフォルトの名無しさん
2019/01/04(金) 02:06:01.37ID:+nkelZ7z >>700
いや、だから隠しシートから自動的に書式修復をかければという意味で言うたのですが、、
トリガーはファイルオープンでも、ボタンでも。
試しにやってみたけど、罫線やセル結合は問題なく修復できるみたい。
入力規則とかは引き継げないみたいなので別にケアする必要があるかも。
行挿入、列挿入とかされて座標がかわるようなことされないならこれで十分では?
自分がよくやるのは、表のエリア毎に範囲名をつけて、そのエリア単位で最初に表組みした
ときと同じ要領で表作成を記録していき、コードを整理して修復マクロにします。
これなら起点となるセルが壊されなければ行挿入、列挿入にもある程度柔軟に対応
できるし、式や入力規則の修復も追加できる。
まぁ、利用者は作成者の想定を軽く超えてきますけどね。
いや、だから隠しシートから自動的に書式修復をかければという意味で言うたのですが、、
トリガーはファイルオープンでも、ボタンでも。
試しにやってみたけど、罫線やセル結合は問題なく修復できるみたい。
入力規則とかは引き継げないみたいなので別にケアする必要があるかも。
行挿入、列挿入とかされて座標がかわるようなことされないならこれで十分では?
自分がよくやるのは、表のエリア毎に範囲名をつけて、そのエリア単位で最初に表組みした
ときと同じ要領で表作成を記録していき、コードを整理して修復マクロにします。
これなら起点となるセルが壊されなければ行挿入、列挿入にもある程度柔軟に対応
できるし、式や入力規則の修復も追加できる。
まぁ、利用者は作成者の想定を軽く超えてきますけどね。
702デフォルトの名無しさん
2019/01/04(金) 08:59:12.57ID:jYRqvj54703デフォルトの名無しさん
2019/01/19(土) 20:28:43.04ID:gUifgf+0 ディム a アズ インテジャー
コンスト b アズ バリアント = ファルス
この読み方はあってますか?
コンスト b アズ バリアント = ファルス
この読み方はあってますか?
704デフォルトの名無しさん
2019/01/19(土) 20:32:43.51ID:b1memYXI さいごフォルス
705デフォルトの名無しさん
2019/01/20(日) 08:43:51.62ID:KJwN8fo6 マジか!
自信なくなってきたわ。
フォー イーチ 〇 イン、スターコンブ、ブイビーナロウ、コンカット、
ナンバーフォーマットローカル、ドゥ ホワイル、イズナメリック、
デカー ファンクション セットウインドウロング リブ "ユーザー32" エリアス、
バイバル 〇 アズ ブーラン、アプリケーション.ハウンド、オプション エクスプリシト。
自信なくなってきたわ。
フォー イーチ 〇 イン、スターコンブ、ブイビーナロウ、コンカット、
ナンバーフォーマットローカル、ドゥ ホワイル、イズナメリック、
デカー ファンクション セットウインドウロング リブ "ユーザー32" エリアス、
バイバル 〇 アズ ブーラン、アプリケーション.ハウンド、オプション エクスプリシト。
706デフォルトの名無しさん
2019/01/20(日) 09:19:09.77ID:1t0h4eLG numeric ニューメリック
alias エイリアス
boolean ブーリアン
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:NbFzEAOW712デフォルトの名無しさん
2019/01/21(月) 08:09:02.73ID:jhC9vbHJ713デフォルトの名無しさん
2019/01/21(月) 14:53:02.35ID:SqTYfLos バイバリュー
714デフォルトの名無しさん
2019/01/31(木) 16:04:06.71ID:f4/Ws+Wz パワポでExcelのVBAにある
Application.OnUndo
みたいなことって出来ない?
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:lbEDOgk3718デフォルトの名無しさん
2019/02/01(金) 19:24:08.72ID:69So7CMb 質問スレでいつも思うんだけど、どんな状況でそれが必要なの?
Excelで出来るんなら、逆にExcelをパワポっぽく見せるという手もあるんじゃないの?
Excelで出来るんなら、逆にExcelをパワポっぽく見せるという手もあるんじゃないの?
719デフォルトの名無しさん
2019/02/02(土) 00:14:40.30ID:hkITps2T 勉強もかねてパワポのアドイン作ってるのよ
だからExcelじゃなくてパワポで出来なきゃ意味がない
その機能自体が必須で欲しい訳ではないから出来ないなら出来ないで諦める
だから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は古い書き方で互換性のために残してる
これから作るプログラムには使うべきじゃない
ByRefは古い書き方で互換性のために残してる
これから作るプログラムには使うべきじゃない
725デフォルトの名無しさん
2019/02/09(土) 09:13:25.95ID:NnmcfWng726デフォルトの名無しさん
2019/02/09(土) 09:25:22.06ID:ThSbhyi3 ByRefが互換性維持のために存在するという話は聞いたことがないぞ
727デフォルトの名無しさん
2019/02/27(水) 18:52:45.21ID:0gstYK5t sortのcustomorderって、セル値を入れられたりはするのでしょうか?
複数のセル値を優先順位としてデータを並び替えるマクロを作成したのですが動作が遅いので改善出来ればと考えています。(forとifで判定する手法をとっています)
よろしくお願いします
複数のセル値を優先順位としてデータを並び替えるマクロを作成したのですが動作が遅いので改善出来ればと考えています。(forとifで判定する手法をとっています)
よろしくお願いします
728デフォルトの名無しさん
2019/03/02(土) 08:39:42.60ID:PK2Geudt 標準のソート機能で出来ないことでもやるの?
駄目ならSQL使うとか。
駄目なら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:vmDq6MjZ735デフォルトの名無しさん
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なら量に正比例して増えることはない
完全一致でいいじゃろ?
SortedListなら量に正比例して増えることはない
739デフォルトの名無しさん
2019/03/21(木) 07:27:32.08ID:u3u8nbsq >>736
それおま環だろ
それおま環だろ
740デフォルトの名無しさん
2019/03/21(木) 07:34:08.81ID:u3u8nbsq >>737
> 正規表現か何かで逐次マッチ検索してるはずだから
なんだその意味不明な思い込みはw
普通に考えてハッシュなりB-Treeなり使ってるだろ
そもそも逐次検索だとしても遅さが気になるほど大量の名前付き範囲使う時点でなにか間違ってると思う
> 正規表現か何かで逐次マッチ検索してるはずだから
なんだその意味不明な思い込みはw
普通に考えてハッシュなりB-Treeなり使ってるだろ
そもそも逐次検索だとしても遅さが気になるほど大量の名前付き範囲使う時点でなにか間違ってると思う
741デフォルトの名無しさん
2019/03/22(金) 17:57:33.45ID:DJ7JSKt5 会社でブラウザの検索結果のページで
いっぱいURLのリンク先が表示されるのですが
そのたくさんのURLのそれぞれを開いたページ(毎回違うけど50ページくらいある)のデータを取得するVBAのコードを考えています。
IEの定番のCreateObject("InternetExplorer.Application")とDOMツリーの方法で実現できてはいるのですが
1つ1つページを開いて取得して閉じる、という作業がネットワークの遅さで異常に時間がかかります。
この複数のページを同時で取得する方法ってないでしょうか?よく知らないけどJavaでいうスレッドみたいな?
いっぱいURLのリンク先が表示されるのですが
そのたくさんのURLのそれぞれを開いたページ(毎回違うけど50ページくらいある)のデータを取得するVBAのコードを考えています。
IEの定番のCreateObject("InternetExplorer.Application")とDOMツリーの方法で実現できてはいるのですが
1つ1つページを開いて取得して閉じる、という作業がネットワークの遅さで異常に時間がかかります。
この複数のページを同時で取得する方法ってないでしょうか?よく知らないけどJavaでいうスレッドみたいな?
742デフォルトの名無しさん
2019/03/22(金) 18:35:53.24ID:HaipTOms >>741
VBAはマルチスレッド非対応だから無理
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.メインプロシージャを動かす
たぶん、こんな感じでできたはず。
VBAでマルチスレッドは基本的に出来ないと考えるべき。
物凄く不安定だし、Excelのオブジェクト(Rangeとか)を触った途端にExcelが消える。
で、マルチスレッドは出来ないけどマルチプロセスは出来る。
1.プログラムのブックに指定のURLのページの情報を取ってくるプロシージャを作る
2.複数のExcel.Applicationを使って、自分自身のブックを別のExcelから開くメインプロシージャを作り、その中でobjExcel.Runを使って情報を取ってくるプロシージャを動かすようにコードを書く。
3.ブックを保存する。
4.メインプロシージャを動かす
たぶん、こんな感じでできたはず。
745デフォルトの名無しさん
2019/03/22(金) 19:35:54.55ID:DJ7JSKt5746デフォルトの名無しさん
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:HaipTOms750デフォルトの名無しさん
2019/03/22(金) 20:49:35.12ID:n3e2TSgf >>741
フレームを50個並べたページのHTMLをローカルで作って開けば一気に読み込んでくれる
フレームを50個並べたページのHTMLをローカルで作って開けば一気に読み込んでくれる
751デフォルトの名無しさん
2019/03/22(金) 21:25:13.65ID:uvzdlIQp なんか勘違いしてるやつがいるけど、VBAがマルチスレッドじゃないことと、IEを複数開くのはまったく別のことだからな
IEはOfficeとはまったく無関係の独立したプロセスだから、いくつでもインスタンス化できるし同時にネットアクセスできる
IEオブジェクトを配列で作っといて、ページの読み込み完了を待たずにどんどん開いてけばいいんだよ
IEはOfficeとはまったく無関係の独立したプロセスだから、いくつでもインスタンス化できるし同時にネットアクセスできる
IEオブジェクトを配列で作っといて、ページの読み込み完了を待たずにどんどん開いてけばいいんだよ
752デフォルトの名無しさん
2019/03/22(金) 22:10:54.82ID:HaipTOms >>751
そのプロセスを制御するVBAがシングルスレッドだろ
そのプロセスを制御する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での読み込みは同時並行的にやってくれるんじゃねえの?
VBAはシングルスレッドだが、IEでの読み込みは同時並行的にやってくれるんじゃねえの?
756デフォルトの名無しさん
2019/03/22(金) 22:38:21.07ID:DJ7JSKt5757デフォルトの名無しさん
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
もう少し効率を上げるなら、読み込めたページからさっさと処理してもいいし
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も開かないといけない複雑な事情があるのです。
ありがとうございます。
試してみます。
最初の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を使うのも手かもしれません。
Exit For抜けてますよ
フラグも i = pg-1まで行けたときに立たせるだけで十分だと思います
あと、非表示でIEを50立ち上げると中断した時のプロセスの掃除が大変なので、Ajaxで無ければXMLHTTP60を使うのも手かもしれません。
764デフォルトの名無しさん
2019/03/24(日) 00:51:51.95ID:gZMjxNOF765デフォルトの名無しさん
2019/03/24(日) 01:34:57.18ID:Y3S3b5Ai この場合Do Loopを抜ける条件が全ページの完了だから、Exit Forはあってもなくても結果というかスピードは変わらないね
さっさと抜けたところで、またForループに戻るだけだし
個人的には「pg - 1」が何回も出てくるのが美しくないなあとか、ForとDoの順番を逆にした方がコンパクトになりそうだなあとか
さっさと抜けたところで、また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
まあ、ホストの応答速度や、次の処理の内容次第では終わったページからどんどん片付けた方がいいだろうけど
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で纏めてそれを配列にした方が見易い
> 個人的には「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
ははは、これは笑った。確かにこれが単純明快でコンパクト 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
それだとサイズのでかいページで待ちが発生する
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が取って来てるんじゃねえの
だからでかいページで待っていてもそれが終わったら他の軽いページも取り終っていてあとは
ばたばたと進んで終了、と理解している
投げてからの待ちだからいいんじゃねえの?
俺はやったことないから知らんが、投げたらあとはIEが並行処理で取ってくるんだろ
で全部取ってから次の処理なら問題ない
でかいページでVBAが待っていても同時に他のページもIEが取って来てるんじゃねえの
だからでかいページで待っていてもそれが終わったら他の軽いページも取り終っていてあとは
ばたばたと進んで終了、と理解している
771デフォルトの名無しさん
2019/03/24(日) 10:52:55.88ID:Mw3X0nZC772デフォルトの名無しさん
2019/03/24(日) 10:56:37.24ID:OZ1kvGmt IEはマイクロソフトも使うなって言ってるのに
VBAって不便だよね
VBAって不便だよね
773デフォルトの名無しさん
2019/03/24(日) 11:58:25.29ID:yYEn14s6 IE使えなくなったら、どうやってブラウザ制御するの?
UIAutomation面倒くさいかから、
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のシングルスレッドとか完全に無関係やん
たしかにIEが複数開いて、平行処理でページを取ってくるね
VBAのシングルスレッドとか完全に無関係やん
777デフォルトの名無しさん
2019/03/24(日) 13:33:22.28ID:gDjNFFGJ >>776
まだそこ?
まだそこ?
778デフォルトの名無しさん
2019/03/24(日) 13:36:50.26ID:PYh3zpOu 大昔からあるファイルシステムだって非同期読み書きできる
1000倍遅いネットワークで出来ないはずがないだろうが
1000倍遅いネットワークで出来ないはずがないだろうが
779デフォルトの名無しさん
2019/03/24(日) 13:55:48.62ID:gDjNFFGJ >>778
無能管理職かよ
無能管理職かよ
780デフォルトの名無しさん
2019/03/24(日) 14:55:03.02ID:gZMjxNOF781デフォルトの名無しさん
2019/03/24(日) 17:00:18.75ID:cASdygc2 >>776
これ、1つずつ待つ部分がVBAでマルチにしたいって話だったけどCreateObjectで既に別プロセスだから全部投げてから全部の完了を待つので正解なんだよな。
勘違いしてマルチプロセスでやろうとしちゃったよ。
ついでにApplication.Runで出来なくて、迷ってたんだけど、またまた勘違いでApplication.OnTimeが正解だった。
でもOnTimeって戻り値が取れないんだよな。
これ、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秒くらい掛かった。
テスト用に繋げた所があんまり時間が掛からん所でReadyStateのループに入らんのよ。
取りあえずInternetExplorer.Applicationはやっぱり遅かった。
59個のURLから同じ場所にある特定のデータを取ってくる処理でMSXML2.XMLHttpなら5秒のところIEだと60秒くらい掛かった。
786デフォルトの名無しさん
2019/03/24(日) 23:42:52.24ID:Y3S3b5Ai IEを普通にUIを持ったアプリケーションとして開けば、クッキーや画面のレンダリングからアクセス履歴の更新やキャッシュの整理までいろんな処理が走るから、そりゃ実質GETだけのXMLHTTPと比べたら遅くなるのは当たり前と言うか
>>785
画像検索にそれぞれ違うキーワードを設定すれば、それなりに時間がかかるようになるから負荷のテストにはおすすめ
>>785
画像検索にそれぞれ違うキーワードを設定すれば、それなりに時間がかかるようになるから負荷のテストにはおすすめ
787デフォルトの名無しさん
2019/03/25(月) 08:15:58.30ID:O3TyiYmg788デフォルトの名無しさん
2019/03/25(月) 21:50:57.49ID:D+uIa6Au 真のエクセラーならieなんか使わずにwebクエリーとか使って何とかするべきだろうが
789デフォルトの名無しさん
2019/03/25(月) 23:08:06.35ID:DuFQaNpH getElementByもWebクエリも使ったことあるけど、
Webクエリはどうやって取ってきてるのか謎。
Webクエリはどうやって取ってきてるのか謎。
790デフォルトの名無しさん
2019/03/25(月) 23:19:23.02ID:XpTM98r8 レンダリングしないでペイロードのパースだけやってるんでしょ
791デフォルトの名無しさん
2019/03/26(火) 00:39:52.05ID:ke9zWH00 誰もSelenium basic使わんの?
IE使わなくていいしセッション維持とかも楽だぉ?
IE使わなくていいしセッション維持とかも楽だぉ?
792デフォルトの名無しさん
2019/03/26(火) 18:58:02.34ID:ADoE3fhW readystateが信用ならんのがな
completeになっても完全に読み込めてなくてその後の要素取得処理に失敗とか高確率で起こるし
WinHTTP使うのが確実だと思う
completeになっても完全に読み込めてなくてその後の要素取得処理に失敗とか高確率で起こるし
WinHTTP使うのが確実だと思う
793デフォルトの名無しさん
2019/03/26(火) 22:23:16.17ID:0P7j5sat794デフォルトの名無しさん
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で逃げるしかないっていうことですね。
正しい日本語を使いたまえ
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:cIkPDI6N804デフォルトの名無しさん
2019/03/28(木) 23:24:25.12ID:Q+Q3MpKo 長いのでWithするかSetしましょう。
With 口語体が理解できないやつが正しい日本語
とか = ×
とかどういうこと? = 〇
End With
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
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変換してもうまくフィルターがかからなくて危うくハマりかけたんだが、後学のために識者がいたら教えてほしい
Date関数の戻り値をそのままFormat変換してもうまくフィルターがかからなくて危うくハマりかけたんだが、後学のために識者がいたら教えてほしい
807デフォルトの名無しさん
2019/03/29(金) 00:17:35.48ID:PdUuDb+g まともなレスには異論返せないのな
808デフォルトの名無しさん
2019/03/29(金) 00:47:46.11ID:MmeaYZo8809デフォルトの名無しさん
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+1F812デフォルトの名無しさん
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行入力ごとに構文解析するし
デフォルト設定だと1行入力ごとに構文解析するし
815デフォルトの名無しさん
2019/03/30(土) 09:27:30.74ID:uS2atdcl816デフォルトの名無しさん
2019/03/30(土) 09:28:29.64ID:uS2atdcl ああすまん。これってシンタックスエラーではないんだっけ
でもエラーになるよね
でもエラーになるよね
817デフォルトの名無しさん
2019/03/30(土) 09:41:55.36ID:Fw0ogXHz Nextを書かなかった場合は
「コンパイル エラー:For に対応する Next がありません。」
だった
もしシンタックスエラーのエラーコード(変数Errの値)が存在すれば出る可能性があるってことだと思うけど、コードの一覧てどこにあるんだ?
検索してVBのは出るけどVBAのが見つからん
「コンパイル エラー: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全体にフォーカスはあるが
肝心の中身の項目にはフォーカスがない状態ということなのでしょうか?
なにかよい方法はありますでしょうか?
フォームに配置して使っているんですが、
別フォームから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オブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。
どんなときに使うのか、教えてもらえるとありがたいです。
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式がエラーになる
参照先が存在しない場合も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:BLcva127831デフォルトの名無しさん
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かどうかでしか判断できないのなら、そうするしかない。
他人が作ったものを使うしかなく、オブジェクトがNothingかどうかでしか判断できないのなら、そうするしかない。
834デフォルトの名無しさん
2019/05/14(火) 13:35:55.15ID:UTGAJPws >>833
ライブラリ関数が引数として受け取ったオブジェクトをどうNullチェックするかの話だぞ?
ライブラリ関数が引数として受け取ったオブジェクトをどうNullチェックするかの話だぞ?
835デフォルトの名無しさん
2019/05/14(火) 16:16:33.74ID:E8REZJpG いきなりライブラリと言われても何のことやらわからない。
836デフォルトの名無しさん
2019/05/14(火) 17:30:53.68ID:UTGAJPws837デフォルトの名無しさん
2019/05/14(火) 21:45:48.80ID:s0Vi/y5R 普通にエラーでブレイクすればいいじゃん
838デフォルトの名無しさん
2019/05/14(火) 22:22:18.25ID:jcYCvcdA839デフォルトの名無しさん
2019/05/14(火) 23:23:54.78ID:+OBjJPst >>836
世の中、変なやつがいて、オブジェクト変数に値をセットして、何も変わるはずがないのに、直後にオブジェクト変数の値がNothingかどうか判定するコードを書くやつがいる。
世の中、変なやつがいて、オブジェクト変数に値をセットして、何も変わるはずがないのに、直後にオブジェクト変数の値が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のスレッドだから、見ているひとにはあなたの言うことは難しくて理解できないと思うよ。
スルー力がないのか、寂しくてかまってほしいのか知らないけど、要はクソコードを書くなと言ってるだけだ。
ここは漠然としたVBAのスレッドだから、見ているひとにはあなたの言うことは難しくて理解できないと思うよ。
スルー力がないのか、寂しくてかまってほしいのか知らないけど、要はクソコードを書くなと言ってるだけだ。
843デフォルトの名無しさん
2019/05/15(水) 02:28:07.88ID:MwugOkQt なんでVBAスレで組み込み系のショボいハードウェアでのプログラミングを語っているのか?
ハードウェア、OS、ミドルウェア、プログラミング言語によって考え方やどこまで想定するのかは全然、違うからいっしょくたにしないでもらいたい。
ハードウェア、OS、ミドルウェア、プログラミング言語によって考え方やどこまで想定するのかは全然、違うからいっしょくたにしないでもらいたい。
844デフォルトの名無しさん
2019/05/15(水) 02:29:01.28ID:O3OiMSIx 一般ユーザー権限のアプリで別プロセスのメモリにアクセスできたのは、平成どころか昭和時代の話ですよ、おじいちゃん
希にOSやCPUのバグ騒ぎが起きますが、そんなのは例外中の例外なんで普通は気にしなくていいことです
希に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枚あげる
座蒲団3枚あげる
850デフォルトの名無しさん
2019/05/15(水) 20:49:39.00ID:WHH9UP0v 何か面白いこと言った?
全然わからない。
興味あるからなぜ面白いか教えて?
全然わからない。
興味あるからなぜ面白いか教えて?
851デフォルトの名無しさん
2019/05/16(木) 02:08:04.88ID:Ab5DOH6n852デフォルトの名無しさん
2019/05/16(木) 14:30:12.55ID:wWtnEH3A コード書く画面を
背景は黒に、文字は白に、する方法を教えれ
背景は黒に、文字は白に、する方法を教えれ
853デフォルトの名無しさん
2019/05/16(木) 17:24:09.37ID:EX4VaMcQ >>852
ダークテーマと天に向かって3回唱える
ダークテーマと天に向かって3回唱える
854デフォルトの名無しさん
2019/05/16(木) 17:37:55.97ID:wWtnEH3A855デフォルトの名無しさん
2019/05/23(木) 22:41:23.89ID:ufKYoT27 Wordで文字置換をしたいのですが、特定のフォントの文字列を検索して、文字列は変えずにフォントだけ変えたいです。半角を全角にしたいのですが可能でしょうか。ヒントだけでも教えていただけると有り難いです。
856デフォルトの名無しさん
2019/05/23(木) 23:01:54.16ID:ubNtK04k >>855
できる
任意のRangeのCharactersのフォントを一字ずつ調べて、探しているフォントが適用されている文字が見つかったらその文字のフォントを修正すればいい
半角から全角に変換するにはStrConv関数を使用し、第2引数conversionには列挙定数のvbWideを指定する
できる
任意のRangeのCharactersのフォントを一字ずつ調べて、探しているフォントが適用されている文字が見つかったらその文字のフォントを修正すればいい
半角から全角に変換するにはStrConv関数を使用し、第2引数conversionには列挙定数のvbWideを指定する
857デフォルトの名無しさん
2019/05/23(木) 23:16:33.41ID:fmz+6NIG wordの標準機能で半角全角変換あったような
858デフォルトの名無しさん
2019/05/23(木) 23:29:43.67ID:ufKYoT27859859
2019/05/28(火) 16:00:47.95ID:JWvhlEsx Findを利用したコードについて教えて下さい。
書籍、サイトで掲載されていたコードを利用し、少し変えたものです。
Findメソッドを使ってC列の”たろう”を検索します。
探し出したら、A〜C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1〜G1に上書きされてしまいます。
Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。
どのように違うのか、ご指導お願いします。
ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです
A B C D E F G
1 日付 売上 担当者 000 AAA たろう
2 000 AAA たろう 333 DDD たろう
3 111 BBB はなこ
4 222 CCC たかし
5 333 DDD たろう
6 444 EEE はなこ
7 555 FFF くみこ
書籍、サイトで掲載されていたコードを利用し、少し変えたものです。
Findメソッドを使ってC列の”たろう”を検索します。
探し出したら、A〜C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1〜G1に上書きされてしまいます。
Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。
どのように違うのか、ご指導お願いします。
ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです
A B C D E F G
1 日付 売上 担当者 000 AAA たろう
2 000 AAA たろう 333 DDD たろう
3 111 BBB はなこ
4 222 CCC たかし
5 333 DDD たろう
6 444 EEE はなこ
7 555 FFF くみこ
860859
2019/05/28(火) 16:01:28.69ID:JWvhlEsx 859の続き
Sub Find()
Dim temp As Range, tempAddress As String, i As Long
With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2)
Set temp = .Find(what:=“たろう”)
If Not temp Is Nothing Then
tempAddress = temp.Address
i = Cells(Rows.Count, "E").End(xlUp).Row
Do
temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E")
Set temp = .FindNext(temp)
Loop While temp.Address <> tempAddress
End If
End With
End Sub
Sub copy()
Range("A:G").Clear
Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1")
End Sub
Sub Find()
Dim temp As Range, tempAddress As String, i As Long
With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2)
Set temp = .Find(what:=“たろう”)
If Not temp Is Nothing Then
tempAddress = temp.Address
i = Cells(Rows.Count, "E").End(xlUp).Row
Do
temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E")
Set temp = .FindNext(temp)
Loop While temp.Address <> tempAddress
End If
End With
End Sub
Sub copy()
Range("A:G").Clear
Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1")
End Sub
861デフォルトの名無しさん
2019/05/28(火) 16:38:34.40ID:Z4r31Ymp >>860
i=i+1 が抜けてるだけじゃね?
i=i+1 が抜けてるだけじゃね?
862デフォルトの名無しさん
2019/05/28(火) 16:40:41.12ID:Z4r31Ymp >>861
それと、行や列用の変数として r c 使ってもええんやで
それと、行や列用の変数として r c 使ってもええんやで
864デフォルトの名無しさん
2019/05/28(火) 18:33:24.92ID:1J9FOJWe 初心者です。
Wordのユーザーフォームを作りたいのですがExcelの書籍しかなくて詰みました。
Excelのセル番地『A1』に相当するのが『ActiveDocument .tables (1) .cell (1.1)』というところまで突き止めて、
とりあえずテキストボックスに打ち込んだ文字列をセルに転記するところまではできたのですが、それ以上のことができません。
例えば繰り返し同じフォームを使う前提で、古いデータを削除したい時、Excelならば
『Range("A1") .CleanContents』で済むっぽい(うろ覚え)ですが
これをActiveDocumentで再現するにはどうすればよいでしょうか。
まだ文法など全く理解できていませんが、素人目に『Range(”ActiveDocument .tables (1) .cell (1.1)”).Select .CleanContents』
などと書いてしまいたい訳です(当然、動きませんでした)
加えて、WordVBAを中心にお勧めの書籍などありましたら教えていただきたいです。
今の書籍は痒いところに手が届かず…
Wordのユーザーフォームを作りたいのですがExcelの書籍しかなくて詰みました。
Excelのセル番地『A1』に相当するのが『ActiveDocument .tables (1) .cell (1.1)』というところまで突き止めて、
とりあえずテキストボックスに打ち込んだ文字列をセルに転記するところまではできたのですが、それ以上のことができません。
例えば繰り返し同じフォームを使う前提で、古いデータを削除したい時、Excelならば
『Range("A1") .CleanContents』で済むっぽい(うろ覚え)ですが
これをActiveDocumentで再現するにはどうすればよいでしょうか。
まだ文法など全く理解できていませんが、素人目に『Range(”ActiveDocument .tables (1) .cell (1.1)”).Select .CleanContents』
などと書いてしまいたい訳です(当然、動きませんでした)
加えて、WordVBAを中心にお勧めの書籍などありましたら教えていただきたいです。
今の書籍は痒いところに手が届かず…
865859
2019/05/28(火) 19:44:38.82ID:xKlK3b52866デフォルトの名無しさん
2019/05/29(水) 00:12:19.46ID:S0wmSPvZ >>864
定番は「最速攻略 Word マクロ / VBA徹底入門」
Word VBAの書籍やWEBサイトは選択肢が圧倒的に少ないから、基本がわかったらVBEのオブジェクトブラウザやネットでMSDNを見た方が確実
定番は「最速攻略 Word マクロ / VBA徹底入門」
Word VBAの書籍やWEBサイトは選択肢が圧倒的に少ないから、基本がわかったらVBEのオブジェクトブラウザやネットでMSDNを見た方が確実
867デフォルトの名無しさん
2019/05/29(水) 09:29:45.93ID:YAhbpcsl 学校でVBAを勉強した方はどんな参考で勉強したんでしょうか?
868デフォルトの名無しさん
2019/05/29(水) 09:30:35.46ID:YAhbpcsl ×参考
◯参考書
◯参考書
869デフォルトの名無しさん
2019/05/29(水) 09:32:43.10ID:YAhbpcsl 書籍の名前聞いてみたい
870デフォルトの名無しさん
2019/05/30(木) 15:12:11.08ID:V/L1IaNJ >>Wordのユーザーフォーム
必要性が今一分からん
必要性が今一分からん
871デフォルトの名無しさん
2019/05/30(木) 18:04:51.34ID:2aR1E9YD Wordは機能拡張に凝り出すと面白いよ
872デフォルトの名無しさん
2019/05/30(木) 18:38:59.73ID:3bWSKYGB873デフォルトの名無しさん
2019/05/30(木) 18:47:13.10ID:2aR1E9YD >>864
'選択範囲内にあるテーブルの一行目以外をクリアします。
Sub clearSelectedTableData()
If Word.Application.Selection.Tables.Count = 0 Then
'MsgBox "Select Any Table!"
Exit Sub
End If
Dim t As Word.Table
For Each t In Word.Application.Selection.Tables
Dim r As Long, c As Long
For r = 2 To t.Rows.Count
For c = 1 To t.Columns.Count
t.Cell(r, c).Range.Text = ""
Next c
Next r
Next t
End Sub
'選択範囲内にあるテーブルの一行目以外をクリアします。
Sub clearSelectedTableData()
If Word.Application.Selection.Tables.Count = 0 Then
'MsgBox "Select Any Table!"
Exit Sub
End If
Dim t As Word.Table
For Each t In Word.Application.Selection.Tables
Dim r As Long, c As Long
For r = 2 To t.Rows.Count
For c = 1 To t.Columns.Count
t.Cell(r, c).Range.Text = ""
Next c
Next r
Next t
End Sub
874デフォルトの名無しさん
2019/05/30(木) 19:32:14.84ID:2aR1E9YD こっちのがスマートだった
'選択範囲内にあるテーブルの一行目以外をクリアします。
Sub clearSelectedTableData()
If Word.Application.Selection.Tables.Count = 0 Then
'MsgBox "Select Any Table!"
Exit Sub
End If
Dim t As Word.Table
For Each t In Word.Application.Selection.Tables
If t.Rows.Count > 2 Then
Dim r As Long
For r = 2 To t.Rows.Count
t.Rows(r).Range.Delete
Next r
End If
Next t
End Sub
'選択範囲内にあるテーブルの一行目以外をクリアします。
Sub clearSelectedTableData()
If Word.Application.Selection.Tables.Count = 0 Then
'MsgBox "Select Any Table!"
Exit Sub
End If
Dim t As Word.Table
For Each t In Word.Application.Selection.Tables
If t.Rows.Count > 2 Then
Dim r As Long
For r = 2 To t.Rows.Count
t.Rows(r).Range.Delete
Next r
End If
Next t
End Sub
875デフォルトの名無しさん
2019/05/30(木) 19:50:35.91ID:2aR1E9YD もし文字編集でcell()下位の.Rangeが省略されてるのを知らないと
cell.Range.Deleteの文字削除とcell.Deleteのセル削除が
使い分けができないので注意
cell.Range.Deleteの文字削除とcell.Deleteのセル削除が
使い分けができないので注意
876デフォルトの名無しさん
2019/05/30(木) 22:47:58.04ID:JR52NV0g877デフォルトの名無しさん
2019/05/30(木) 23:32:10.68ID:2aR1E9YD >>876
リボンやクイックアクセスツールバーとかで増やすほうね>機能拡張
リボンやクイックアクセスツールバーとかで増やすほうね>機能拡張
878デフォルトの名無しさん
2019/05/31(金) 00:15:43.14ID:P50R/Vqw NothingとNullとEmptyの違いがわからない
MSはナンセンス、はっきりわかんだね
MSはナンセンス、はっきりわかんだね
879デフォルトの名無しさん
2019/05/31(金) 00:35:41.84ID:/aDGaFpI EmptyはVariant型の初期状態(何も入ってない)
セルの初期状態でもある
確認方法
新規ワークシートに対して、イミディエイトウィンドウで
Print TypeName(Cells(1,1).Value)
とすると
Empty
と表示される
Nothingはオブジェクト型変数にオブジェクトが代入されていない(結びつけられていない)状態
NullはExcelだと出番がないと思っていい
主にAccessでデータを扱う時にNullが必要な場面が出てくる
セルの初期状態でもある
確認方法
新規ワークシートに対して、イミディエイトウィンドウで
Print TypeName(Cells(1,1).Value)
とすると
Empty
と表示される
Nothingはオブジェクト型変数にオブジェクトが代入されていない(結びつけられていない)状態
NullはExcelだと出番がないと思っていい
主にAccessでデータを扱う時にNullが必要な場面が出てくる
880デフォルトの名無しさん
2019/05/31(金) 01:16:13.09ID:gZfVve3x 複数セルのRangeからプロパティとってくるとき不一致だとNullになるくらいやな
881デフォルトの名無しさん
2019/06/02(日) 23:52:18.62ID:I/vPFDmN ユーザーフォームの、複数のテキストボックス、
例えばオブジェクト名をtb1、tb2とかにしてループ文に組み込むということはできますか?
オブジェクト変数というのが関係しそうな気がするんですが、
テキストを読んでも理解できない…
例えばオブジェクト名をtb1、tb2とかにしてループ文に組み込むということはできますか?
オブジェクト変数というのが関係しそうな気がするんですが、
テキストを読んでも理解できない…
882デフォルトの名無しさん
2019/06/02(日) 23:56:26.76ID:56udfPFB883デフォルトの名無しさん
2019/06/03(月) 02:05:13.53ID:OjX7Po3D 普通はテキストボックスのTagプロバティに区別できるキーワード入れといて
For eachでUserform.controlsやると思う
For eachでUserform.controlsやると思う
884デフォルトの名無しさん
2019/06/03(月) 08:31:11.52ID:mpVNxBbp >>881
controls(”tb” & i)
controls(”tb” & i)
885デフォルトの名無しさん
2019/06/03(月) 13:44:44.83ID:DCISZKmM886デフォルトの名無しさん
2019/06/08(土) 00:31:30.90ID:ycKO1KOa vba スタンダード 、accessのおすすめの問題集ってやっぱり公式テキストでしょうか。
887デフォルトの名無しさん
2019/06/08(土) 11:47:13.10ID:pWKWNjKi エクセル Cells(1,1)
ワード Cell(1,1)
↑
は? 何でワードにはsが無い?
ワード Cell(1,1)
↑
は? 何でワードにはsが無い?
888デフォルトの名無しさん
2019/06/08(土) 16:19:13.22ID:pA8BerVC >>886
先月に出題範囲かわったし公式でしょ
先月に出題範囲かわったし公式でしょ
889デフォルトの名無しさん
2019/06/08(土) 16:27:53.67ID:pA8BerVC >>887
Word.Selection.CellsとかRow.Cellsとかあるで
Tableには.Cell(1,1)しかないがな
ちなCellsはxy指定できんがCellはxy指定必須や
エクセルのプロパティのほうが異常なんやで
Word.Selection.CellsとかRow.Cellsとかあるで
Tableには.Cell(1,1)しかないがな
ちなCellsはxy指定できんがCellはxy指定必須や
エクセルのプロパティのほうが異常なんやで
890デフォルトの名無しさん
2019/06/12(水) 20:44:31.77ID:WUwNpP1f 新垣結衣 AVデビュー
https://www.xvideos.com/video48369883/_ai_
https://www.xvideos.com/video48369883/_ai_
891デフォルトの名無しさん
2019/06/12(水) 21:19:56.07ID:Hop9ON+a vba エキスパート は、excel ベーシック以外は公式テキストまだだから受験は待ったほうがいいですよね。
892デフォルトの名無しさん
2019/06/19(水) 04:56:48.65ID:tVNS+22r 【出資】松本卓朗 人工知能詐欺【注意】
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
893デフォルトの名無しさん
2019/06/24(月) 19:31:10.71ID:XS1zoxjN 以前word VBAの質問をした者ですが、その節はありがとうございました。
お陰様で処女作のユーザーフォームが完成しかかっているのですが、最終問題に難儀しています。
やりたい事:「保存」ボタンを押す→ActiveDocumentと同じ場所に「記録表」というフォルダを作成し、
その中に「"氏名”」というファイルを生成する。既に「記録表」のフォルダがあればフォルダは作成せず、
そちらにファイルを生成する。
なお、不特定多数のユーザーが使う前提です(保存場所を手打ちしたらユーザー名で詰む)
四苦八苦しましたが、ひとまず確認用にdesktopに生成しようとしてなんかユーザーフォルダの滅っ茶根深い場所に生成されたり、
推測で打ってみたメソッドが全く機能しなかったり(フォルダの有無を確認するようなのって何だろう)
なんというか、Excelのfxボタンみたいにメソッドの内容を教えてくれるやつ、ないんですかね…
ちなみに職場のPCはスタンドアロンでヘルプに繋がらず、自宅PCにはOfficeが入ってないです。
お陰様で処女作のユーザーフォームが完成しかかっているのですが、最終問題に難儀しています。
やりたい事:「保存」ボタンを押す→ActiveDocumentと同じ場所に「記録表」というフォルダを作成し、
その中に「"氏名”」というファイルを生成する。既に「記録表」のフォルダがあればフォルダは作成せず、
そちらにファイルを生成する。
なお、不特定多数のユーザーが使う前提です(保存場所を手打ちしたらユーザー名で詰む)
四苦八苦しましたが、ひとまず確認用にdesktopに生成しようとしてなんかユーザーフォルダの滅っ茶根深い場所に生成されたり、
推測で打ってみたメソッドが全く機能しなかったり(フォルダの有無を確認するようなのって何だろう)
なんというか、Excelのfxボタンみたいにメソッドの内容を教えてくれるやつ、ないんですかね…
ちなみに職場のPCはスタンドアロンでヘルプに繋がらず、自宅PCにはOfficeが入ってないです。
894デフォルトの名無しさん
2019/06/24(月) 22:54:40.46ID:klKakRL3895デフォルトの名無しさん
2019/06/25(火) 05:52:40.82ID:A+zOKxp7 今オフラインのヘルプって提供されてないんじゃないのか?
896デフォルトの名無しさん
2019/06/25(火) 08:17:29.97ID:uunD1dKc897デフォルトの名無しさん
2019/06/25(火) 08:27:47.11ID:uunD1dKc898デフォルトの名無しさん
2019/06/25(火) 10:33:29.10ID:aRzPCUod 公式オフラインヘルプがあったのは2013だな
2016もオフライン版があるけど英語
https://github.com/OfficeDev/VBA-content/
基本的な機能は2013からあんまり変わってないから、2013用のヘルプを入れてしまうという手もある
使い勝手は悪いけど、いつでも参照できるという利点はあるから
2016もオフライン版があるけど英語
https://github.com/OfficeDev/VBA-content/
基本的な機能は2013からあんまり変わってないから、2013用のヘルプを入れてしまうという手もある
使い勝手は悪いけど、いつでも参照できるという利点はあるから
899デフォルトの名無しさん
2019/06/26(水) 09:21:12.11ID:IYAeNPRu Activedocument.Pathで所在フォルダのパスが出せる
これとフォルダ名とファイル名繋げた文字列つくればSaveAs2の引数にできる
これとフォルダ名とファイル名繋げた文字列つくればSaveAs2の引数にできる
900デフォルトの名無しさん
2019/06/26(水) 18:32:58.67ID:pdVAutd4 質問です。excel2016の並び替え機能で
漢字、かな(あ〜ん)、アルファベット(a〜z)で並べ替えて漢字の中でも「本店」を最上位とできませんかね?
降順だと上記並びなのですが、かな(ん→あ)、アルファベット(z→a)になります。
Custumorder に「本店」を入力すると漢字中で1番下になります。
よろしくお願いします
漢字、かな(あ〜ん)、アルファベット(a〜z)で並べ替えて漢字の中でも「本店」を最上位とできませんかね?
降順だと上記並びなのですが、かな(ん→あ)、アルファベット(z→a)になります。
Custumorder に「本店」を入力すると漢字中で1番下になります。
よろしくお願いします
901デフォルトの名無しさん
2019/06/26(水) 20:26:59.08ID:JKpFRzRw >>900
本店の前にスペース入れる
本店の前にスペース入れる
902デフォルトの名無しさん
2019/06/26(水) 21:08:13.27ID:pdVAutd4903デフォルトの名無しさん
2019/07/04(木) 12:19:45.93ID:Siuy47lc Wordの表で、
ActiveDocument.Tables(2).Select
みたいに選択したいのですが、どれだけ表を分割しても、
全ての表が Tables(1) という扱いなようでエラーになります。
ひとつ前に似たようなものを組んだ時には問題なくTables(2)になりましたが、
それと構文上は全く違いはありません。
どうしたら Tables(2)という扱いになるのでしょうか。
ActiveDocument.Tables(2).Select
みたいに選択したいのですが、どれだけ表を分割しても、
全ての表が Tables(1) という扱いなようでエラーになります。
ひとつ前に似たようなものを組んだ時には問題なくTables(2)になりましたが、
それと構文上は全く違いはありません。
どうしたら Tables(2)という扱いになるのでしょうか。
904デフォルトの名無しさん
2019/07/04(木) 22:43:55.95ID:lDcVSkIh ユーザーフォーム内のコンボボックスにUSBの中にある画像一覧というフォルダ内の全ての画像名を表示したいのですがうまくいきません。
どのように変更すればよいか教えていただけませんか?
Private Sub UserForm1_load()
Dim myList As String
Dim myPath As String
Dim iName As String
myPath = "D:/画像一覧/*jpeg"
fName = Dir(myPath & "*.jpeg")
Do While iName <> ""
If myList <> "" Then
myList = myList & " " & iName
Else
myList = iName
End If
iName = Dir
Loop
If myList = "" Then Exit Sub
myList = Split(myList)
ComboBox1.List = myList
End Sub
どのように変更すればよいか教えていただけませんか?
Private Sub UserForm1_load()
Dim myList As String
Dim myPath As String
Dim iName As String
myPath = "D:/画像一覧/*jpeg"
fName = Dir(myPath & "*.jpeg")
Do While iName <> ""
If myList <> "" Then
myList = myList & " " & iName
Else
myList = iName
End If
iName = Dir
Loop
If myList = "" Then Exit Sub
myList = Split(myList)
ComboBox1.List = myList
End Sub
905デフォルトの名無しさん
2019/07/05(金) 02:42:43.50ID:grV1bh4s 取得するのが D:/画像一覧/*jpeg*.jpeg になってるとか
fName は iName の間違いじゃないのかとか
myList は String なのにSplitした後のものを代入してるとか
fName は iName の間違いじゃないのかとか
myList は String なのにSplitした後のものを代入してるとか
906デフォルトの名無しさん
2019/07/06(土) 12:30:25.64ID:z73aGQye907デフォルトの名無しさん
2019/07/25(木) 16:22:05.73ID:eKMV/4VB ExcelVBAのユーザーフォーム上で、PDFを表示、操作をしたいです。
ですが、ユーザーフォームにコントロールを追加しようとすると、
「要素が見つかりません」とダイアログが表示され出来ません。
どなたか解決策をご存じの方がいましたら、教えていただけますでしょうか。。
Acrobat pro DCはインストールしてあり、ExcelはOffice365を最新の状態で使用してます。
ですが、ユーザーフォームにコントロールを追加しようとすると、
「要素が見つかりません」とダイアログが表示され出来ません。
どなたか解決策をご存じの方がいましたら、教えていただけますでしょうか。。
Acrobat pro DCはインストールしてあり、ExcelはOffice365を最新の状態で使用してます。
908デフォルトの名無しさん
2019/07/25(木) 18:51:11.10ID:HFVXfXT2 >>907
EXCELは専用スレがあるので、そちらへどうぞ
EXCELは専用スレがあるので、そちらへどうぞ
909デフォルトの名無しさん
2019/07/26(金) 10:59:16.22ID:nW8IFIW6910デフォルトの名無しさん
2019/08/14(水) 15:00:22.98ID:Jc+eFMLQ ここで質問していいかわからないんですが、違ったら誘導していただけると助かります。
メッセージボックスを最前面にするために以下のコードを利用したいのですが、呼び出し元の下から3行目のvbOKOnly を vbYesNo に替えた後、選択ボタンを取得する方法がわかりません。
どのようなコードを足したらいいかご教示いただけないでしょうか。
【呼び出し元】
Option Explicit
Dim WSHObj
Dim Args
Set WSHobj = WScript.CreateObject("WScript.Shell")
Args = "cscript ""C:\Program Files\PPX\script\WSHPopUP.vbs""" _
& " ""出力メッセージ""" _
& " 0" _
& " ""VBS名称""" _
& " " & vbOKOnly ←vbYesNoに替える
WSHObj.Run Args,0,true
Set WSHobj = Nothing
【WSHPopUP.vbs】
Option Explicit
Dim Arg
Dim WSHObj
Set WSHobj = WScript.CreateObject("WScript.Shell")
Set Arg = WScript.Arguments
WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3)
Set WSHobj = Nothing
よろしくお願いします。
メッセージボックスを最前面にするために以下のコードを利用したいのですが、呼び出し元の下から3行目のvbOKOnly を vbYesNo に替えた後、選択ボタンを取得する方法がわかりません。
どのようなコードを足したらいいかご教示いただけないでしょうか。
【呼び出し元】
Option Explicit
Dim WSHObj
Dim Args
Set WSHobj = WScript.CreateObject("WScript.Shell")
Args = "cscript ""C:\Program Files\PPX\script\WSHPopUP.vbs""" _
& " ""出力メッセージ""" _
& " 0" _
& " ""VBS名称""" _
& " " & vbOKOnly ←vbYesNoに替える
WSHObj.Run Args,0,true
Set WSHobj = Nothing
【WSHPopUP.vbs】
Option Explicit
Dim Arg
Dim WSHObj
Set WSHobj = WScript.CreateObject("WScript.Shell")
Set Arg = WScript.Arguments
WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3)
Set WSHobj = Nothing
よろしくお願いします。
911デフォルトの名無しさん
2019/08/14(水) 19:26:49.04ID:uFuQVnLY 【呼び出し元】
Option Explicit
Dim WSHObj
Dim Args
Set WSHobj = WScript.CreateObject("WScript.Shell")
Args = "cscript ""C:\Program Files\PPX\script\WSHPopUP.vbs""" _
& " ""出力メッセージ""" _
& " 0" _
& " ""VBS名称""" _
& " " & vbYesNo
Dim hoge '受け取り用に追加
hoge = WSHObj.Run(Args,0,true) 'この変数hogeにvbYes=6かvbNo=7が入る。
'何か処理を書く
Set WSHobj = Nothing
【WSHPopUP.vbs】
Option Explicit
Dim Arg
Dim WSHObj
Set WSHobj = WScript.CreateObject("WScript.Shell")
Set Arg = WScript.Arguments
Dim fuga '戻り値用に追加
fuga = WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3) 'popupの戻り値を取得
WSHObj.Quit fuga '呼び出し元に終了コードとして返す
Set WSHobj = Nothing
Option Explicit
Dim WSHObj
Dim Args
Set WSHobj = WScript.CreateObject("WScript.Shell")
Args = "cscript ""C:\Program Files\PPX\script\WSHPopUP.vbs""" _
& " ""出力メッセージ""" _
& " 0" _
& " ""VBS名称""" _
& " " & vbYesNo
Dim hoge '受け取り用に追加
hoge = WSHObj.Run(Args,0,true) 'この変数hogeにvbYes=6かvbNo=7が入る。
'何か処理を書く
Set WSHobj = Nothing
【WSHPopUP.vbs】
Option Explicit
Dim Arg
Dim WSHObj
Set WSHobj = WScript.CreateObject("WScript.Shell")
Set Arg = WScript.Arguments
Dim fuga '戻り値用に追加
fuga = WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3) 'popupの戻り値を取得
WSHObj.Quit fuga '呼び出し元に終了コードとして返す
Set WSHobj = Nothing
912デフォルトの名無しさん
2019/08/14(水) 19:27:35.96ID:uFuQVnLY 他にExecを使う方法もある
913デフォルトの名無しさん
2019/08/14(水) 20:05:03.77ID:6C5bzX4k vbDefaultButton1 とか、そういうのじゃなくて?
914デフォルトの名無しさん
2019/08/15(木) 00:01:28.86ID:GUoAoBO9915デフォルトの名無しさん
2019/08/16(金) 11:35:25.09ID:vco+QnrA >>911
>910,>914です。
教えていただいたコードを試してみたのですが、
‘何か処理を書く
のところに
MsgBox hoge
と入れたのですが、「はい」「いいえ」どちらの場合も 0 が返されます。
どうしたらいいでしょうか
>910,>914です。
教えていただいたコードを試してみたのですが、
‘何か処理を書く
のところに
MsgBox hoge
と入れたのですが、「はい」「いいえ」どちらの場合も 0 が返されます。
どうしたらいいでしょうか
916デフォルトの名無しさん
2019/08/16(金) 13:41:00.72ID:2LlAcZB1 ???
VBAなの?
VBSなの?
MsgBox使えるのに、何でWscript使ってんの?
VBAなの?
VBSなの?
MsgBox使えるのに、何でWscript使ってんの?
917デフォルトの名無しさん
2019/08/16(金) 13:48:44.09ID:mZqFzvyq 朗報
【アプデ/10】 2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
https://asahi.5ch.net/test/read.cgi/newsplus/1565930238/
【アプデ/10】 2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
https://asahi.5ch.net/test/read.cgi/newsplus/1565930238/
918デフォルトの名無しさん
2019/08/16(金) 14:13:30.60ID:WTD6eyC3919デフォルトの名無しさん
2019/08/19(月) 10:24:33.34ID:ELmh1Bgt >>918
返信遅くなってすみません。
レスの通りに修正し、
さらに
fuga = WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3) 'popupの戻り値を取得
↓
fuga = WSHObj.Popup(Arg(0),Arg(1),Arg(2),Arg(3)) 'popupの戻り値を取得
に変更し、成功しました。
たいへん助かりました。
ありがとうございました。
返信遅くなってすみません。
レスの通りに修正し、
さらに
fuga = WSHObj.Popup Arg(0),Arg(1),Arg(2),Arg(3) 'popupの戻り値を取得
↓
fuga = WSHObj.Popup(Arg(0),Arg(1),Arg(2),Arg(3)) 'popupの戻り値を取得
に変更し、成功しました。
たいへん助かりました。
ありがとうございました。
920デフォルトの名無しさん
2019/09/25(水) 10:50:56.65ID:L8CrQHgr WordのアクティブXコントロールのテキストボックスなのですが
BackStyleを0設定すると背景色は消えるのですが
デザインモードを解除すると背景色が出てしまいます
これはバグでしょうか
BackStyleを0設定すると背景色は消えるのですが
デザインモードを解除すると背景色が出てしまいます
これはバグでしょうか
921デフォルトの名無しさん
2019/11/05(火) 18:33:26.09ID:CrKvYzfV922デフォルトの名無しさん
2019/11/05(火) 18:35:53.47ID:CrKvYzfV923デフォルトの名無しさん
2019/11/06(水) 06:26:58.33ID:jiZZUv+M924デフォルトの名無しさん
2019/11/06(水) 06:26:59.50ID:jiZZUv+M925デフォルトの名無しさん
2019/11/21(木) 09:09:00.43ID:IRESAa/B Exchange / Outtlook VBAの質問です
初歩的な質問で申し訳ありませんが、お知恵を拝借できないでしょうか
任意の名前を持つ配布リストや連絡先グループに属するExchangeユーザーのSMTPアドレスの一覧を取得するにはどうしたら良いのでしょうか
配布リストや連絡先グループをExchange ユーザーとして取得するところまでは出来ているのですが、そこから先がうまくいきません
なお配布リスト、連絡先グループいずれも個人ユーザーのみが登録されている前提なので、再帰によるメンバー取得は不要な状況です
初歩的な質問で申し訳ありませんが、お知恵を拝借できないでしょうか
任意の名前を持つ配布リストや連絡先グループに属するExchangeユーザーのSMTPアドレスの一覧を取得するにはどうしたら良いのでしょうか
配布リストや連絡先グループをExchange ユーザーとして取得するところまでは出来ているのですが、そこから先がうまくいきません
なお配布リスト、連絡先グループいずれも個人ユーザーのみが登録されている前提なので、再帰によるメンバー取得は不要な状況です
926デフォルトの名無しさん
2019/12/31(火) 13:22:12.18ID:CEriAQ2K エスパー的にはexchangeユーザーのユーザー一覧と配布リストのユーザーの
名前を比較すればいいんじゃね
名前を比較すればいいんじゃね
927デフォルトの名無しさん
2020/04/20(月) 00:19:17.36ID:DXvjb/RZ 3日がかりの捜索ww あきらめないのな
928デフォルトの名無しさん
2020/05/10(日) 01:11:39.52ID:DSeO3ORc 3日どころじゃないぞ
929デフォルトの名無しさん
2020/05/25(月) 10:28:15.88ID:vLFHqXr3930デフォルトの名無しさん
2020/05/25(月) 12:24:29.96ID:palYJx03 半年放置で読むかね
931デフォルトの名無しさん
2020/06/10(水) 10:39:28.23ID:vabPclBn932デフォルトの名無しさん
2020/06/27(土) 08:55:28.74ID:9qJBLgyD Aex
933デフォルトの名無しさん
2020/06/27(土) 16:37:07.95ID:TjDVHLrR VBAの質問スレで質問するのはなぜ馬鹿ばっかりなのですか?
934デフォルトの名無しさん
2020/06/27(土) 16:43:50.13ID:CiV3+vm0 >>933
このスレのレベルを知ってる普通以上の人はここを頼ったりはしないから
このスレのレベルを知ってる普通以上の人はここを頼ったりはしないから
935デフォルトの名無しさん
2020/07/11(土) 22:25:50.10ID:R8+8lu0C 頼むからVBAでWin32 APIを呼び出すのはやめてくれ
そこまで要求するなら包括的な自作DLLを作ればよいと
そこまで要求するなら包括的な自作DLLを作ればよいと
936デフォルトの名無しさん
2020/07/12(日) 04:44:26.92ID:+vVO/8n9 >>935
なんでやめてほしいの?
なんでやめてほしいの?
937デフォルトの名無しさん
2020/07/12(日) 07:53:31.55ID:tbEOHCQG ものぐさが使うのがVBAなのに
いちいちDLL化なんてめんどくせえ
いちいちDLL化なんてめんどくせえ
938デフォルトの名無しさん
2020/07/12(日) 10:51:54.06ID:03QLQuvk >>936
Declare文が多すぎてコードが見づらい
Declare文が多すぎてコードが見づらい
939デフォルトの名無しさん
2020/07/12(日) 11:07:05.40ID:4WTYr4qc 見なきゃいいだろ
940デフォルトの名無しさん
2020/07/12(日) 14:43:36.83ID:HEMY1mlG Win32API使える奴がDeclare文読むの?
そりゃ、間違ってるとかおかしなのも中にゃあるけど、普通そんなとこ見ないだろ。
そりゃ、間違ってるとかおかしなのも中にゃあるけど、普通そんなとこ見ないだろ。
941デフォルトの名無しさん
2020/07/14(火) 21:09:03.79ID:66utiKuE 質問スレにも書き込んだのですが二つのieを起動して2つ目のieでpdfを開いて名前をつけて保存したいのですがexecwbを行うと一つ目のieのhtmlが選択されてしまいます。どうかやり方を教えてください。よろしくお願いします。getIEはシェル取得ファンクションです。
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://yahoo.jp”
Dim ie2 As InternetExplorer
Set ie2 = CreateObject("InternetExplorer.Application")
ie2.Visible = True
ie2.Navigate2 "C:\\Desktop\test.pdf", 1
Set ie2 = getIE("test")
Dim test As String
test = "c:\test\test.pdf"
ie2.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, test
End Sub
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://yahoo.jp”
Dim ie2 As InternetExplorer
Set ie2 = CreateObject("InternetExplorer.Application")
ie2.Visible = True
ie2.Navigate2 "C:\\Desktop\test.pdf", 1
Set ie2 = getIE("test")
Dim test As String
test = "c:\test\test.pdf"
ie2.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, test
End Sub
942デフォルトの名無しさん
2020/07/14(火) 21:45:01.80ID:euO1Ygvg 初心者です。どうかお力添えをよろしくお願いします。
943デフォルトの名無しさん
2020/07/14(火) 22:53:58.63ID:euO1Ygvg すいません 自己解決しました。単純なスペルミスでした
944デフォルトの名無しさん
2020/08/03(月) 07:54:11.09ID:4AChPi7X 製品番号のフォルダ検索して中のPDFファイルを開くようなマクロ書いてるんだけど
先日Officeのアップデートしたら、件のマクロがしばらく応答なしになって
悪意のあるマクロ云々とか言われてExcel強制終了になった
それ以後そのマクロは激遅に
ブックのファイル名変えたりマクロの関数名変えたりするとしばらくは元の速度に戻るが
1日位経つとまた遅くなる
調べてみたら、VBScript.RegExpのExecuteメソッドが10秒位かかるようになってる
通常は30msで終わるような代物がだ
どうもShellやRunで一度に多数のPDFファイルを開いているのがお気に召さなかったらしく
ファイル名や関数名でアンチウィルスのブラックリストに載る?
そのあとはそれっぽい名前のメソッドが標的になり遅くなるような感じ
こういうの経験した人いる?
先日Officeのアップデートしたら、件のマクロがしばらく応答なしになって
悪意のあるマクロ云々とか言われてExcel強制終了になった
それ以後そのマクロは激遅に
ブックのファイル名変えたりマクロの関数名変えたりするとしばらくは元の速度に戻るが
1日位経つとまた遅くなる
調べてみたら、VBScript.RegExpのExecuteメソッドが10秒位かかるようになってる
通常は30msで終わるような代物がだ
どうもShellやRunで一度に多数のPDFファイルを開いているのがお気に召さなかったらしく
ファイル名や関数名でアンチウィルスのブラックリストに載る?
そのあとはそれっぽい名前のメソッドが標的になり遅くなるような感じ
こういうの経験した人いる?
945デフォルトの名無しさん
2020/08/03(月) 12:15:10.36ID:wycAObPT アンチウィルスソフトとかいうウィルスを捨てろ
946デフォルトの名無しさん
2020/08/04(火) 17:10:57.70ID:FjnHeWDC 会社のPCじゃなければそれもありだが…
paloalto trapsとかいう奴
毎回反応する訳じゃないのが嫌だし
編集中のデータも問答無用でごっそり強制終了しやがるふざけんな
paloalto trapsとかいう奴
毎回反応する訳じゃないのが嫌だし
編集中のデータも問答無用でごっそり強制終了しやがるふざけんな
947デフォルトの名無しさん
2020/08/05(水) 03:07:47.57ID:EWWIYLqc 除外指定すればエエやん
948デフォルトの名無しさん
2020/08/05(水) 09:06:26.86ID:FS19WAoY >VBScript.RegExpのExecuteが10秒
と
>ShellやRunで一度に多数のPDFファイルを開いている
の関連がわからんね
この二つは分けて原因を探るべきじゃ?
と
>ShellやRunで一度に多数のPDFファイルを開いている
の関連がわからんね
この二つは分けて原因を探るべきじゃ?
949デフォルトの名無しさん
2020/08/05(水) 09:37:11.18ID:FS19WAoY マクロ付ファイルでPDF開かせるてのは相当に怪しいと捉えられる可能性は高いね
セキュリティ変更や除外設定なんてのは出来ればしたくないだろうし引っかからないような対策があればいいがな
ShellやRunでPDF開くんじゃなくExcelもしくはWordに取り込ませるようにすると引っ掛からないかもという気がしなくもない
セキュリティ変更や除外設定なんてのは出来ればしたくないだろうし引っかからないような対策があればいいがな
ShellやRunでPDF開くんじゃなくExcelもしくはWordに取り込ませるようにすると引っ掛からないかもという気がしなくもない
950デフォルトの名無しさん
2020/08/06(木) 06:47:20.91ID:SEE4FkRy VBAから直接PDFを開くんではなく
バッチファイルを書き出し実行することで反応の確率は減ったが
アンチウイルスが反応しやすい型番とかあってよくわからん
正規表現のexecuteメソッドは「それっぽい」名前のメソッドだろ?
これがアンチウイルスが反応したときに動作してた関数から呼ばれた時だけ遅くなるんだよ
同じブック中の他の関数から呼ばれた時は高速のままだ
dir関数でフォルダ内部のファイル名取得して正規表現検索してる時だけアホみたいに遅くなる時がある
バッチファイルを書き出し実行することで反応の確率は減ったが
アンチウイルスが反応しやすい型番とかあってよくわからん
正規表現のexecuteメソッドは「それっぽい」名前のメソッドだろ?
これがアンチウイルスが反応したときに動作してた関数から呼ばれた時だけ遅くなるんだよ
同じブック中の他の関数から呼ばれた時は高速のままだ
dir関数でフォルダ内部のファイル名取得して正規表現検索してる時だけアホみたいに遅くなる時がある
951デフォルトの名無しさん
2020/09/01(火) 22:25:39.71ID:zpaWCruh VBA開発を頼まれた いくら位金額を提示したら良いか誰か教えてほしい
内容は不動在庫を15店舗くらいあグループ店の売り上げデータから引取先の候補を検索するシステム
商品のバーコードから行き先候補を検索する予定。
この内容ってアウトソーシングするといくら位?
内容は不動在庫を15店舗くらいあグループ店の売り上げデータから引取先の候補を検索するシステム
商品のバーコードから行き先候補を検索する予定。
この内容ってアウトソーシングするといくら位?
952デフォルトの名無しさん
2020/09/01(火) 22:33:35.56ID:l37i0zd6 50円
953デフォルトの名無しさん
2020/09/02(水) 00:25:45.48ID:aLOgXzIZ 余裕みて1人週
954デフォルトの名無しさん
2020/09/02(水) 07:41:48.93ID:9bMNhGbM955デフォルトの名無しさん
2020/09/02(水) 12:23:19.05ID:IJ4By44m956デフォルトの名無しさん
2020/09/04(金) 13:35:21.25ID:YrY1uJ8P 皆さま回答ありがとうございました!
957デフォルトの名無しさん
2020/09/05(土) 14:34:31.84ID:NQbTfPgu >>944
遅レスだけど
速度が遅い件は経験ありますよ
うちの環境で調べたらSYMANTECのエンドポイントは大丈夫で、MSのディフェンダーだと遅かった
Win10のバージョンも影響したかもしれないけど、現行サポート対象バージョンは、ディフェンダーだとすべて遅い
会社のPCなんでActiveDirectory、SYMANTEC、SKYSEAがスタンダードなんだけど、更新時の不具合があったんで一部のPCでディフェンダーを使ってて発覚した
VBSの内容は、多少分岐やループはあるけど正規表現を使って置換するだけの簡単なものだった
遅レスだけど
速度が遅い件は経験ありますよ
うちの環境で調べたらSYMANTECのエンドポイントは大丈夫で、MSのディフェンダーだと遅かった
Win10のバージョンも影響したかもしれないけど、現行サポート対象バージョンは、ディフェンダーだとすべて遅い
会社のPCなんでActiveDirectory、SYMANTEC、SKYSEAがスタンダードなんだけど、更新時の不具合があったんで一部のPCでディフェンダーを使ってて発覚した
VBSの内容は、多少分岐やループはあるけど正規表現を使って置換するだけの簡単なものだった
958デフォルトの名無しさん
2020/09/09(水) 22:08:05.33ID:kLG5WjnA ミッションクリティカルな仕事をVBAでやってるのに、
少し前から動かなくなって修正したくても前任者がこの世に不在+仕様書やマニュアル無し+社内プログラム分かる人いない
って状況割とよく聞くけど、まあ自分が担当することになったんだけど、これどーすりゃいいの?
何社かソフトウェア開発系の会社に話聞きにいったら、vbaはちょっと・・・とか、プログラムみてこれはちょっと・・・って反応だし
1千万超える金積むとなると役員に説明しなくちゃならないんだけど、なんでおまえがやらないの?みたいな反応だし
まあ、控えめに言ってこのまま止まり続けると会社潰れるから言い値で出すしか無いんだろうけど
こういう状況、ここに巣喰う人達はどうやって乗り越えたのかアドバイスやヒントください
転職、以外で
少し前から動かなくなって修正したくても前任者がこの世に不在+仕様書やマニュアル無し+社内プログラム分かる人いない
って状況割とよく聞くけど、まあ自分が担当することになったんだけど、これどーすりゃいいの?
何社かソフトウェア開発系の会社に話聞きにいったら、vbaはちょっと・・・とか、プログラムみてこれはちょっと・・・って反応だし
1千万超える金積むとなると役員に説明しなくちゃならないんだけど、なんでおまえがやらないの?みたいな反応だし
まあ、控えめに言ってこのまま止まり続けると会社潰れるから言い値で出すしか無いんだろうけど
こういう状況、ここに巣喰う人達はどうやって乗り越えたのかアドバイスやヒントください
転職、以外で
959デフォルトの名無しさん
2020/09/09(水) 22:09:54.34ID:vVw6LQjX ミッションクリティカルなのに止まっても平気なのか
不思議な世界観
不思議な世界観
960デフォルトの名無しさん
2020/09/09(水) 22:58:18.76ID:sZuFJhML961デフォルトの名無しさん
2020/09/09(水) 23:15:38.01ID:kLG5WjnA >>960
すげえ
社内システム作ってるところとかつてで色んなところに聞きいったけど数百万じゃ難しいって言われたんだ
分かる人には難しさっていうか、見積もりがわかるもんなんだな
参考までにどういうところを見て判断するもんなの?
偉い人に説明するときの参考にしたい
すげえ
社内システム作ってるところとかつてで色んなところに聞きいったけど数百万じゃ難しいって言われたんだ
分かる人には難しさっていうか、見積もりがわかるもんなんだな
参考までにどういうところを見て判断するもんなの?
偉い人に説明するときの参考にしたい
962デフォルトの名無しさん
2020/09/10(木) 01:17:25.37ID:Uj/ZEArt963デフォルトの名無しさん
2020/09/10(木) 01:28:39.24ID:R4ATSmnt マクロの記録をベースにしてるのは危険な感じがする
あとループの中にgotoが入ってるやつ見たときはちょっと感動した
あとループの中にgotoが入ってるやつ見たときはちょっと感動した
964デフォルトの名無しさん
2020/09/10(木) 01:35:20.13ID:fOUD4fUU vba捨ててまともなところに新しくシステム作ってもらった方が安いし早そう
965デフォルトの名無しさん
2020/09/10(木) 01:38:51.21ID:JZj4+m/A それだと社内で仕事が無くなるおっさんたちが文句言い出す
966デフォルトの名無しさん
2020/09/10(木) 12:15:12.05ID:dws80o57 住宅で喩えるなら 地場でイチから設計・施工をする在来工法のパワービルダーや
社内で設計した通り加工し現地で組み立てるだけのハウスメーカー 又は方式は
一緒だけどコスト削減に特化して現地の安い下請け使って費用を抑えるローコスト系
システムを売りにしてる企業は上で言うHMに近く、依頼すればひと声一千万は相場
PBはどんどん規模が縮小してるから探すのも大変 LCHMなら見付かるかも知らんが
要求に応じかねるレベルだと思われる
当時の社内の人間が内製したレベルならその条件、例えばExcelVBAと絞って
改修・修繕の可不可(得意かどうか)を先ず相手に問えば話が早いかも知れない
業務内容を伝えるだけだとうまく伝わらずに高額商品を売る方向に話が進み兼ねない
社内で設計した通り加工し現地で組み立てるだけのハウスメーカー 又は方式は
一緒だけどコスト削減に特化して現地の安い下請け使って費用を抑えるローコスト系
システムを売りにしてる企業は上で言うHMに近く、依頼すればひと声一千万は相場
PBはどんどん規模が縮小してるから探すのも大変 LCHMなら見付かるかも知らんが
要求に応じかねるレベルだと思われる
当時の社内の人間が内製したレベルならその条件、例えばExcelVBAと絞って
改修・修繕の可不可(得意かどうか)を先ず相手に問えば話が早いかも知れない
業務内容を伝えるだけだとうまく伝わらずに高額商品を売る方向に話が進み兼ねない
967958
2020/09/10(木) 12:19:21.40ID:Oh+8RCfx >>962
はえ〜・・・なるほどなぁ
変数名は一応業界の人なら意味が分かる程度
インデントはルールから逸脱してるのはほぼない、とおもう
コメントはあることはあるけど助けられたコメントはほぼないな
'ここで●×処理をする Sub ●×処理(・・・・・・・) みたいなw
行数はただの改行も含めると3万行くらいで
モジュールが4、functionが500、subが1500くらい
この辺が大量にあるから難しいって説明しようとしてたんだけど
数行(ステップ?)なら別にF8ポチポチしながら追えるんだよね
じゃあ足りないのは根気だろ、みたいに言われて循環複雑なんちゃらみたいなの調べてたけど
結局こんな数字だしても理解されないだろうしなぁってのと、単に俺が素人だからってのもあって今に至る
>>964
マジそれなんだけど、何をしてるのか誰もわかんないから何を作ってもらえば良いのかも説明出来ないっていうねw
世間で言われてる炎上案件よりよっぽどかわいいレベルなのかも知れないけど
マジであと数ヶ月放置して会社潰れればいいんじゃねーかとも思ってる
はえ〜・・・なるほどなぁ
変数名は一応業界の人なら意味が分かる程度
インデントはルールから逸脱してるのはほぼない、とおもう
コメントはあることはあるけど助けられたコメントはほぼないな
'ここで●×処理をする Sub ●×処理(・・・・・・・) みたいなw
行数はただの改行も含めると3万行くらいで
モジュールが4、functionが500、subが1500くらい
この辺が大量にあるから難しいって説明しようとしてたんだけど
数行(ステップ?)なら別にF8ポチポチしながら追えるんだよね
じゃあ足りないのは根気だろ、みたいに言われて循環複雑なんちゃらみたいなの調べてたけど
結局こんな数字だしても理解されないだろうしなぁってのと、単に俺が素人だからってのもあって今に至る
>>964
マジそれなんだけど、何をしてるのか誰もわかんないから何を作ってもらえば良いのかも説明出来ないっていうねw
世間で言われてる炎上案件よりよっぽどかわいいレベルなのかも知れないけど
マジであと数ヶ月放置して会社潰れればいいんじゃねーかとも思ってる
969デフォルトの名無しさん
2020/09/10(木) 12:36:48.47ID:l+lun8zf >>961
わかんねーから高めに見積もってんだよ
わかんねーから高めに見積もってんだよ
970デフォルトの名無しさん
2020/09/10(木) 13:19:24.92ID:4mlwjCSe >>967
他人の作ったプロシージャを2千個3万行解析してドキュメントを作成しながらデバッグなら1千万はまあまあ妥当かと
設備投資でたった1千万が出せない会社は遠からず潰れると思うよ
ほかの資産や設備だって千万単位の修理はいつ発生してもおかしくないし
他人の作ったプロシージャを2千個3万行解析してドキュメントを作成しながらデバッグなら1千万はまあまあ妥当かと
設備投資でたった1千万が出せない会社は遠からず潰れると思うよ
ほかの資産や設備だって千万単位の修理はいつ発生してもおかしくないし
971デフォルトの名無しさん
2020/09/10(木) 22:45:47.73ID:Oh+8RCfx >>970
詳しい人にそう言ってもらえるとたすかる
とりあえず素人がやるもんじゃ無いって話は集めたので素直に金だせやって資料作ってるw
しかし1千万つめばできちゃうってのもすげーなあ
個人にとっては大金だけど、会社にとっては中堅社員一人分/年くらいの費用だもんな
詳しい人にそう言ってもらえるとたすかる
とりあえず素人がやるもんじゃ無いって話は集めたので素直に金だせやって資料作ってるw
しかし1千万つめばできちゃうってのもすげーなあ
個人にとっては大金だけど、会社にとっては中堅社員一人分/年くらいの費用だもんな
972デフォルトの名無しさん
2020/09/11(金) 11:34:11.36ID:LThuGd0x 解析・デバッグ・ドキュメント作成でひと声一千万?
じゃ、せっかく解析できたんだしそれをベースに新システム製作費は?
パッケージから大きく外れるものだったらオリジナル新規作成?千万? 都合?千万?
せっかく途中まで分析し始めたようだし「わたしに二千万ください、これやります」でいーじゃん
じゃ、せっかく解析できたんだしそれをベースに新システム製作費は?
パッケージから大きく外れるものだったらオリジナル新規作成?千万? 都合?千万?
せっかく途中まで分析し始めたようだし「わたしに二千万ください、これやります」でいーじゃん
973デフォルトの名無しさん
2020/09/11(金) 19:07:30.23ID:0mQCTSsr >>972
日本語で
日本語で
974デフォルトの名無しさん
2020/09/13(日) 14:01:55.06ID:AJy8UwEC975デフォルトの名無しさん
2020/09/13(日) 18:15:28.87ID:/EQXGeQJ 業務止まってるのにのん気だな
せめて地方と業務とアプリぐらい概略書けば誰かがどこかを紹介するかも知れんぞ
アプリはAccessと踏んだが、どう?
どうせこのご時世、近場でなくともZoomやらでリモートしたりでのサポートだろうし
せめて地方と業務とアプリぐらい概略書けば誰かがどこかを紹介するかも知れんぞ
アプリはAccessと踏んだが、どう?
どうせこのご時世、近場でなくともZoomやらでリモートしたりでのサポートだろうし
976デフォルトの名無しさん
2020/09/16(水) 23:50:50.45ID:249cxrEP 結局余所に投げる方向で解決した
乗り越えられるものとそうじゃないものを見極めるのも大切と思い込むことにした
なお費用は想定の2倍近くになる模様w
みんなアドバイスありがとう
乗り越えられるものとそうじゃないものを見極めるのも大切と思い込むことにした
なお費用は想定の2倍近くになる模様w
みんなアドバイスありがとう
977デフォルトの名無しさん
2020/12/20(日) 00:10:44.84ID:14Mj/Q6q >>963
> ループの中にgotoが入ってるやつ見たときはちょっと感動した
Continue 文が無いメジャーな言語があってな。
GoTo Continue1
とか、書くときの隔靴掻痒感と言ったらもう・・・。
> ループの中にgotoが入ってるやつ見たときはちょっと感動した
Continue 文が無いメジャーな言語があってな。
GoTo Continue1
とか、書くときの隔靴掻痒感と言ったらもう・・・。
978デフォルトの名無しさん
2020/12/25(金) 06:38:58.19ID:wEXLIZpl もしかしてフィルタで非表示になってるセルってVBAで値参照できない?
979デフォルトの名無しさん
2020/12/26(土) 04:11:48.30ID:NJB8+QKa >>978
自己解決
自己解決
980デフォルトの名無しさん
2021/05/14(金) 13:33:45.79ID:Kf/7Ycdt WordのVBAで質問させてください。
文書内の2種類の括弧「」『』の中にある改行だけを削除するマクロを作りたいと思っています。
例えば以下のような文章に対してマクロをかけたときに
「み
か
ん」
ば
な
な
「り
ん
ご
」
以下のような結果になるマクロです。
「みかん」
ば
な
な
「りんご」
つづきます
文書内の2種類の括弧「」『』の中にある改行だけを削除するマクロを作りたいと思っています。
例えば以下のような文章に対してマクロをかけたときに
「み
か
ん」
ば
な
な
「り
ん
ご
」
以下のような結果になるマクロです。
「みかん」
ば
な
な
「りんご」
つづきます
981デフォルトの名無しさん
2021/05/14(金) 13:34:48.74ID:Kf/7Ycdt Sub 括弧内の改行を削除()
Dim myRange As Range
Set myRange = ActiveDocument.Range(0, 0)
With myRange.Find
.Text = "[「『""]*^13*[""』」]"
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = True
Do While .Execute = True
With myRange.Find
.Text = "^13"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
DoEvents
End With
Loop
End With
Set myRange = Nothing
End Sub
Dim myRange As Range
Set myRange = ActiveDocument.Range(0, 0)
With myRange.Find
.Text = "[「『""]*^13*[""』」]"
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = True
Do While .Execute = True
With myRange.Find
.Text = "^13"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
DoEvents
End With
Loop
End With
Set myRange = Nothing
End Sub
982デフォルトの名無しさん
2021/05/14(金) 13:35:33.64ID:Kf/7Ycdt 自分なりに以上のようなマクロを組んでみたのですが、実行してみると、
最初の「みかん」の改行は削除されるのですが、そのあとの「りんご」の改行が削除されません
やり方をお教えいただけると助かります。
最初の「みかん」の改行は削除されるのですが、そのあとの「りんご」の改行が削除されません
やり方をお教えいただけると助かります。
983デフォルトの名無しさん
2021/05/14(金) 13:58:15.10ID:dwsPOlKo 馬鹿には無理
984デフォルトの名無しさん
2021/05/14(金) 20:08:25.19ID:YZr2qR8x 正規表現使えば一発じゃん。
VBAって正規表現使えるんだっけ?
VBAって正規表現使えるんだっけ?
985デフォルトの名無しさん
2021/05/14(金) 20:22:39.22ID:pWuJPMFY RegExpオブジェクトを使えば。
面倒だから俺はどうしてもというとき以外は使わない。
面倒だから俺はどうしてもというとき以外は使わない。
986デフォルトの名無しさん
2021/05/14(金) 20:24:37.07ID:6X3W89ka Wordなら最初から正規表現もどきが使えるから、Excel VBAよりはちょっとだけ楽に文字列操作ができる
987デフォルトの名無しさん
2021/05/15(土) 04:20:48.68ID:rI+eK0KL988デフォルトの名無しさん
2021/06/10(木) 19:25:30.25ID:CLREf/YK splitでいい感じに分割して判定してreplaceで改行無くしてくっ付けろ
「」は自分でつけたせ
「」は自分でつけたせ
989デフォルトの名無しさん
2021/08/25(水) 17:06:39.36ID:qYcBJ8fd あんま実験してないから文句いうなよ
まずはさ、アホでも考えられるような地道な形でやるべきだと思うわ
そのあとに、効率性とか考えて無駄排除したりすればいいわ
Sub MainProcess()
Dim text As String
text = Sheet1.Cells(1, 1) 'A1に括弧が含まれる文字列をいれろ
Const right1 As String = "「"
Const left1 As String = "」"
Const right2 As String = "『"
Const left2 As String = "』"
text = MakeText(text, right1, left1)
text = MakeText(text, right2, left2)
'B1に結果が返ってくるぞ。途中結果はメッセージボックスで順次表示されるからループ終わるまで何度もOKおせ
Sheet1.Cells(1, 2) = text
End Sub
まずはさ、アホでも考えられるような地道な形でやるべきだと思うわ
そのあとに、効率性とか考えて無駄排除したりすればいいわ
Sub MainProcess()
Dim text As String
text = Sheet1.Cells(1, 1) 'A1に括弧が含まれる文字列をいれろ
Const right1 As String = "「"
Const left1 As String = "」"
Const right2 As String = "『"
Const left2 As String = "』"
text = MakeText(text, right1, left1)
text = MakeText(text, right2, left2)
'B1に結果が返ってくるぞ。途中結果はメッセージボックスで順次表示されるからループ終わるまで何度もOKおせ
Sheet1.Cells(1, 2) = text
End Sub
990デフォルトの名無しさん
2021/08/25(水) 17:06:59.82ID:qYcBJ8fd >>989の続き
Function MakeText(text As String, rightChar As String, leftChar As String) As String
Dim startPosition As Integer
Dim endPosition As Integer
Dim InstrStartPosition As Integer
InstrStartPosition = 1
Do While InStr(InstrStartPosition, text, rightChar) <> 0
startPosition = InStr(InstrStartPosition, text, rightChar)
If startPosition <> 0 Then
endPosition = InStr(startPosition + 1, text, leftChar)
End If
Dim midText As String
midText = Mid(text, startPosition, endPosition - startPosition + 1)
Dim midTextChanged As String
midTextChanged = Replace(midText, vbLf, "")
text = Replace(text, midText, midTextChanged)
InstrStartPosition = startPosition + Len(midTextChanged)
MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text
Loop
MakeText = text
End Function
Function MakeText(text As String, rightChar As String, leftChar As String) As String
Dim startPosition As Integer
Dim endPosition As Integer
Dim InstrStartPosition As Integer
InstrStartPosition = 1
Do While InStr(InstrStartPosition, text, rightChar) <> 0
startPosition = InStr(InstrStartPosition, text, rightChar)
If startPosition <> 0 Then
endPosition = InStr(startPosition + 1, text, leftChar)
End If
Dim midText As String
midText = Mid(text, startPosition, endPosition - startPosition + 1)
Dim midTextChanged As String
midTextChanged = Replace(midText, vbLf, "")
text = Replace(text, midText, midTextChanged)
InstrStartPosition = startPosition + Len(midTextChanged)
MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text
Loop
MakeText = text
End Function
991デフォルトの名無しさん
2021/08/25(水) 17:07:53.23ID:qYcBJ8fd つかさ、rightとleftが逆だったわ
まぁ動くからいいわ
まぁ動くからいいわ
992デフォルトの名無しさん
2021/08/25(水) 17:18:37.37ID:qYcBJ8fd あれだ、最期の方に「だけが単独であると無限ループだわな
ループの条件にその辺の修正いれておいてくれ
もう寝る
ループの条件にその辺の修正いれておいてくれ
もう寝る
993デフォルトの名無しさん
2021/08/25(水) 17:34:31.79ID:qYcBJ8fd おっきした
>>990を↓に修正
Function MakeText(text As String, rightChar As String, leftChar As String) As String
Dim startPosition As Integer
Dim endPosition As Integer
Dim InstrStartPosition As Integer
InstrStartPosition = 1
Do While InStr(InstrStartPosition, text, rightChar) <> 0
startPosition = InStr(InstrStartPosition, text, rightChar)
If startPosition <> 0 Then
endPosition = InStr(startPosition + 1, text, leftChar)
End If
Dim midText As String
midText = Mid(text, startPosition, endPosition - startPosition + 1)
Dim midTextChanged As String
midTextChanged = Replace(midText, vbLf, "")
text = Replace(text, midText, midTextChanged)
InstrStartPosition = startPosition + Len(midTextChanged)
MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text
Dim textForCheck As String
If textForCheck = text Then
MakeText = text
Exit Function
End If
textForCheck = text
Loop
MakeText = text
End Function
>>990を↓に修正
Function MakeText(text As String, rightChar As String, leftChar As String) As String
Dim startPosition As Integer
Dim endPosition As Integer
Dim InstrStartPosition As Integer
InstrStartPosition = 1
Do While InStr(InstrStartPosition, text, rightChar) <> 0
startPosition = InStr(InstrStartPosition, text, rightChar)
If startPosition <> 0 Then
endPosition = InStr(startPosition + 1, text, leftChar)
End If
Dim midText As String
midText = Mid(text, startPosition, endPosition - startPosition + 1)
Dim midTextChanged As String
midTextChanged = Replace(midText, vbLf, "")
text = Replace(text, midText, midTextChanged)
InstrStartPosition = startPosition + Len(midTextChanged)
MsgBox "無限ループになっちゃった時はctrl + Breakを押せ" & vbCrLf & vbCrLf & text
Dim textForCheck As String
If textForCheck = text Then
MakeText = text
Exit Function
End If
textForCheck = text
Loop
MakeText = text
End Function
994デフォルトの名無しさん
2021/08/28(土) 10:10:42.16ID:rHnN1cM5 動けば良いんだよ
995デフォルトの名無しさん
2021/08/28(土) 12:36:26.70ID:3DqqBWFs 腕が重くて
996デフォルトの名無しさん
2021/09/01(水) 00:13:05.25ID:7BIbcRgh h
997デフォルトの名無しさん
2021/09/01(水) 00:13:11.43ID:7BIbcRgh t
998デフォルトの名無しさん
2021/09/01(水) 00:13:18.16ID:7BIbcRgh l
999デフォルトの名無しさん
2021/09/01(水) 00:17:13.66ID:7BIbcRgh n
1000小倉優子 ◆YUKOH0W58Q
2021/09/01(水) 00:17:27.14ID:7BIbcRgh ∧,,,∧
( ・∀・) 1000ならジュースでも飲むか
( )
し─J
( ・∀・) 1000ならジュースでも飲むか
( )
し─J
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2294日 13時間 24分 43秒
新しいスレッドを立ててください。
life time: 2294日 13時間 24分 43秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 【映画】『クレヨンしんちゃん』 中国で公開延期 対日報復、エンタメに波及 [冬月記者★]
- そういや米倉涼子はどうなったんんや?
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 戦争は無くならないし殺人は起きるし女はレイプされるし子供は餓死するし
- ( -᷄ὢ-᷅ )💤
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- ( ´・ω・` )朝ですぞー
