Excel VBA 質問スレ Part33
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/10/17(木) 22:04:40.64___
___ /____ヽ ____
/____\ | |´・ω・`| | /___ヽ
.l |´・ω・`| ニX二 . ̄ ̄ ̄ 二X二 |´・ω・`| l 俺たちに任せろ
!、 ̄ ̄ ̄ ヽ | | /  ̄ ̄ ̄/
ヽ_/ヽ、 ヽ__) \__/\_/. /_/ ノヽ_/
 ̄  ̄ ̄
前スレ
Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151717/
このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。
コードが嫌な人はこちらのスレへ
http://toro.2ch.net/test/read.cgi/tech/1381151995/l50
0048デフォルトの名無しさん
2013/11/23(土) 09:43:33.38何の為に必要なの?
0049デフォルトの名無しさん
2013/11/23(土) 09:43:54.19何の為に必要なの?
0050デフォルトの名無しさん
2013/11/23(土) 10:32:05.39サーバ上のフォルダやファイルの更新履歴を欲しいと思っています。
最初はサーバ上のフォルダやファイルを定期的に巡回し、その情報を取得してDBに登録する方法を考えていましたが、
膨大な数があるため、1巡するだけでも12時間以上掛かってしまいます。
それで指定されたファイルやフォルダの情報をシャドウコピー側から
取得出来ればいいなと思い聞いてみました。
0051デフォルトの名無しさん
2013/11/23(土) 10:49:48.08自演乙
0052デフォルトの名無しさん
2013/11/23(土) 10:59:33.23痛々し過ぎて見てられない
0053デフォルトの名無しさん
2013/11/23(土) 11:37:18.230054デフォルトの名無しさん
2013/11/23(土) 12:36:38.98トンチンカンな回答で偉そうにしていた事実は消えない
0055デフォルトの名無しさん
2013/11/23(土) 13:17:41.21スレチ気にするならVBAなんでもスレいけよ
0056デフォルトの名無しさん
2013/11/23(土) 14:20:32.85そんなので一々ギャーギャー言うならあのドMスレに行け。
0057デフォルトの名無しさん
2013/11/23(土) 14:34:44.17シャドウコピー作る例はいっぱい見つかるけど戻すのはほとんど見ないな
かろうじて見つかったのがこれ
social.technet.microsoft.com/Forums/de-DE/57025a40-400d-498d-a163-3c613145d16c/powershell?forum=powershellja
ただ、ファイルのプロパティで出るやつは、シャドウコピーじゃない普通のバックアップも表示してるしどうやってるか知らん
そもそもファイルの更新情報とるのに12時間ってホントにそんなにかかるのか?
プロパティで出てくるのだいぶ遅いし、それで一覧つくるともっとかかる気がするけど
0058デフォルトの名無しさん
2013/11/23(土) 15:41:13.67レスありがとうございます。
シャドウコピーから取得するなら、巡回する必要もないしピンポイントで
対象のフォルダやファイルのバックアップ情報を見にいけば良いと思ったので
余り時間のことは気にしていませんでした。
そのリンク先にもWMIのShadowCopyが書いてあるのですが、
色々調べてみた結果、結局ローカルからサーバの情報を読みに行く際に
VSS登録先のIDやパスワードが必要になるのでこちらの環境上、結局は使えない
みたいです。
別にシャドウコピーを使わなくても今回は大量にある
ファイルやフォルダの履歴がピンポイントで指定して取れれば
それで良いんですが・・・。
0059デフォルトの名無しさん
2013/11/23(土) 18:20:45.18うーん。
ファイル数が多くても履歴をなんとかする方法、
知らなくもないけど、多分テンプレ君が数秒でググって教えてくれるよ。
口だけでなければ。
0060デフォルトの名無しさん
2013/11/23(土) 19:16:49.58テンプレ君は口だけなので当てには出来ません
是非>>59さまのお知恵をお貸しください
0061デフォルトの名無しさん
2013/11/23(土) 19:32:01.65大丈夫。>>40であれだけの事を豪語してるし。
まさかこれで何も無しって事はないだろw
0062デフォルトの名無しさん
2013/11/23(土) 19:42:18.50口だけ君がまた一人増えただけか
0063デフォルトの名無しさん
2013/11/23(土) 19:53:49.10いや、俺はテンプレ君の出方を見るよ。
どうしても駄目でギブアップと言うなら
答えんでもないけどねw
0064デフォルトの名無しさん
2013/11/23(土) 20:04:45.04あいつがギブアップなんてする訳無いじゃん
何事も無かったようにシカトして終わりだよ
大体、あんな屑相手にするより
今実際に困ってる>>38さんにアドバイスしてあげるほうが
よっぽどヤツにダメージ与えられるだろうが。
せめて期限を区切ってそれを過ぎたら回答すると宣言しておくとか
そのぐらいはしてもらわないと
今の時点では君も口だけ君と言わざるを得ない。
第一君の回答が正しいと言う保証も無いわけだし。
0065デフォルトの名無しさん
2013/11/23(土) 20:28:56.03>>60は捨てメアド晒してくれ。先に俺の
考えた方法を送っておこう。
テンプレ君が考えを述べるまで、メールでやり取りすることにしようか。
テンプレ君が考えを述べた後はここでいくらでも俺の考えを晒してくれて構わない。
それならみんな幸せだよんな。
006660=62=64
2013/11/23(土) 21:04:56.72俺の能力では君の答えを聞いてもそれが正しいかどうか判断出来んし。
むしろ>>38さんに教えてあげてくれ。
ただ、こっちやあっちでそういう安い挑発をするより
答えられる質問にはこのスレで淡々と答え続けることの方が
あっちのスレの存在意義を失わせるという意味では遥かに有効だと思うよ。
あぁ、そういえばテンプレ君が俺を騙ってメールする可能性もあるから
君の正当性を証明する手法としてはおそらく不適切だね。
0067デフォルトの名無しさん
2013/11/23(土) 21:13:32.42助かります。実は代替案が思い浮かばなくて非常に困っていました。
少し諦めかけて月曜日に仕事場で何て報告しようか悩んでいた所です。
それと私は>>58ですが>>60ではありません。
宜しくお願いいたします。
[email protected]
0068デフォルトの名無しさん
2013/11/23(土) 21:22:25.84了解した。
それにしても>>60が>>58では無かったとは。
>>66がテンプレ君で成りすましだったら全て帳尻が合うな。
いけずうずうしいと言うかなんというかw
0069デフォルトの名無しさん
2013/11/23(土) 21:47:07.49> >>66がテンプレ君で成りすましだったら全て帳尻が合うな。
会わねーよw
もし俺がテンプレ君だったら自虐的にも程があるだろ。
挙句に誘導してる向こうのスレじゃなくてこっちで答えられたら
ヤツにどんなメリットがあるんだよ。
(ちなみにこういうときに使うなら
「帳尻」じゃなくて「辻褄」のほうが適切だよ)
俺は向こうには書き込まないし、自分が分かる範囲の質問なら
こっちのスレで答えさせてもらってるだけだよ。
一応このスレで俺が今まで書き込んだレスは
>>28,>>30,>>33,>>42,>>47,>>52,>>54,>>60,>>62,>>64
だよ
これは全部俺の書き込みだし、このスレではこれ以外には一切書き込んで無い。
内容を吟味してテンプレ君かどうか判断してくれ。
つうか、仮に成りすましを疑われたところで
特にデメリットも無いわけだけどな。
0070デフォルトの名無しさん
2013/11/23(土) 22:36:41.94メール確認しました。
まさかここまで詳しい説明書き付けてくれて、
しかも一番重要と思える部分を既に作ってくれているとは思いもしませんでした。
家ではその部分は問題なく動いているので、
仕事場の膨大なフォルダやファイルで問題なく使えるか確認させて頂きたいと思います。
私の知識が足らず、よく分からない部分は済みませんが後でメール送付しますので宜しくお願いします。
どうもありがとうございます。
0071デフォルトの名無しさん
2013/11/23(土) 22:57:52.70そうか、信用しよう。
疑って済まんかったな。
>>70
そんな大層なもんじゃないけど、
仕事場でもちゃんと動くことを祈ってるよ。
0072デフォルトの名無しさん
2013/11/24(日) 16:07:20.41もうすぐクリスマスですが
皆さんは一緒に過ごす相手がいますか?
0073デフォルトの名無しさん
2013/11/24(日) 21:22:14.190074デフォルトの名無しさん
2013/11/25(月) 16:21:16.46もうすぐクリスマスですが
クリスマスまでに彼女ができるVBAのコードはありますか?
0075デフォルトの名無しさん
2013/11/25(月) 21:11:46.220076デフォルトの名無しさん
2013/11/25(月) 22:35:38.260077デフォルトの名無しさん
2013/11/29(金) 11:03:07.73MsgBox "Love"
0078デフォルトの名無しさん
2013/11/29(金) 16:52:31.960079デフォルトの名無しさん
2013/11/29(金) 21:18:14.46よく分かんないのがあるんですが
あれって何に使うんですか?
0080デフォルトの名無しさん
2013/11/29(金) 22:10:15.32Vb.Netの方でならそういうのあるのは知ってるけど(ちらっとだけどねw
0081デフォルトの名無しさん
2013/11/30(土) 00:00:45.39例えば、AというクラスとBというクラスがあったとして、
それぞれに同じ数と型の引数、同じ型の戻り値を持った同じ名前のメソッドがあったとします。
コード的にAとBのインスタンスさえ入れ換えてやれば分岐して違うクラスとして
設定しなくても一発で行けるのに・・・
と言う時に、A、B、どちらの型のインスタンスも格納出来るのがインターフェースです。
もっとも、それ用に作らなければなりませんが。
>>80
vbaには継承は有りませんが実装は有る様ですよん。
0082デフォルトの名無しさん
2013/11/30(土) 06:02:14.70クリスマスの夜に僕と君を繋いでくれる
そういうものさ
0083デフォルトの名無しさん
2013/11/30(土) 13:24:33.41.netになったらあんなことやこんなことも
できるようにばなるんだろうな。
いや、よく知らないけど。
0084デフォルトの名無しさん
2013/12/03(火) 11:41:37.13http://kohada.2ch.net/test/read.cgi/prog/1209467166/6
なんですが、forの後のコロンってどういう意味があるんでしょうか?
Sub a()
Dim s, i
For i = 1 To 100: s = s & IIf(i Mod 15 = 0, "FizzBuzz", IIf(i Mod 3 = 0, "Fizz", IIf(i Mod 5 = 0, "Buzz", i))) & vbCrLf: Next
MsgBox s
End Sub
0085デフォルトの名無しさん
2013/12/03(火) 15:21:31.23改行しないで、1行に複数の命令書くときの区切り
0086デフォルトの名無しさん
2013/12/03(火) 15:25:14.02なんと、ありがとうございます
セミコロンにしようよ・・・
0087デフォルトの名無しさん
2013/12/03(火) 16:21:57.89セミコロンには別の意味が割り当てられてる
0088デフォルトの名無しさん
2013/12/03(火) 21:35:40.07へぇ、vbaでも三項演算子って使えるんだ。
vb.net辺りでも使えるけど、iifだと遅いからifの方の三項演算子使うとか色々あるんだけど、
まぁvbaのそれとは別物かも知れんね。
0089デフォルトの名無しさん
2013/12/03(火) 21:49:58.38>>85のいうとおり一行に複数命令を書くときの単なる区切り文字
Cでのセミコロンと大体同じ(なので>>86はセミコロンにしようよと言ってると思う)
0090デフォルトの名無しさん
2013/12/03(火) 21:52:40.760091デフォルトの名無しさん
2013/12/03(火) 22:38:33.25VB.NETでも同様
0092デフォルトの名無しさん
2013/12/04(水) 02:17:02.98イメージとしては下記のようにしたいです。
Sub MYGETPIVOTDATA(ParamArray arr as Variant)
GETPIVOTDATA(データ フィールド, ピボットテーブル,arr(0),arr(1),arr(2),arr(3),・・・arr(ubound(arr,1)))
End Sub
009392
2013/12/04(水) 02:18:48.100094デフォルトの名無しさん
2013/12/04(水) 10:03:51.410095デフォルトの名無しさん
2013/12/04(水) 23:44:34.02役に立つかどうかは分からんけど、この辺のでどうだろうか
http://www.moug.net/tech/exvba/0100045.html
0096デフォルトの名無しさん
2013/12/05(木) 00:06:24.65True Xor True = False
True Xor False = True
False Xor True = True
False Xor False =False
みたいにどちらか片方のみがTrueの場合にTureを、
そうじゃない場合はFalseを返すんだけど、
これの使い道って何か有る?
0097デフォルトの名無しさん
2013/12/05(木) 03:16:55.19加算機とか半加算器とかで使うのかね。
言われてみれば使ったことないかも。
0098デフォルトの名無しさん
2013/12/05(木) 05:31:18.090099デフォルトの名無しさん
2013/12/05(木) 08:05:03.83今取り込んだデータと直前のデータの Xor とって、データの変化点を見るとか。
まあ、VBA ではあまり出番はないわな。
0100デフォルトの名無しさん
2013/12/05(木) 11:29:50.26擬似乱数を自前で作ったり
かな?
0101デフォルトの名無しさん
2013/12/05(木) 11:54:01.45どういう場面だったかは思い出せない
0102デフォルトの名無しさん
2013/12/05(木) 16:40:08.460103デフォルトの名無しさん
2013/12/05(木) 16:48:23.56あ!それだ!
0104デフォルトの名無しさん
2013/12/05(木) 20:12:53.410105デフォルトの名無しさん
2013/12/05(木) 21:19:40.580106デフォルトの名無しさん
2013/12/05(木) 22:04:39.69特定Bitの反転だったらNotとAndでよくない?
0107デフォルトの名無しさん
2013/12/05(木) 23:46:22.83それとXorと比べてみ
0108デフォルトの名無しさん
2013/12/06(金) 00:10:00.420109デフォルトの名無しさん
2013/12/06(金) 07:06:26.46ああ、なるほどね。解った。
0110デフォルトの名無しさん
2013/12/06(金) 09:15:16.890111デフォルトの名無しさん
2013/12/06(金) 13:29:52.61タイムアウト(?)が原因なのか ページの読み込み中 で止まる場合があります
このような場合、どのように回避すればよろしいのでしょうか?
0112デフォルトの名無しさん
2013/12/06(金) 17:32:08.44一定時間経過したら、再読み込み処理、
複数回再読み込みしてダメなら、読み込みエラー処理
0113デフォルトの名無しさん
2013/12/06(金) 22:03:11.45無事動きました、ありがとうございます
0114デフォルトの名無しさん
2013/12/07(土) 08:48:57.29ずらっと並んでいるクラスモジュールを見かけることがあるんですが
この間気になってそことその関数を呼び出している所を
コメントアウトしたら挙動がなんかおかしくなりました。
この内容がまったく書かれていない関数ってどんな意味があるんでしょうか?
0115桃白白 ◆9Jro6YFwm650
2013/12/07(土) 10:02:34.86なにもしないってことじゃない。ヌルオブジェクトみたいな。
0116デフォルトの名無しさん
2013/12/07(土) 13:00:27.72想像しろよ、気になるだろ、なんなら聞いてくれよ
ずらっと並ぶ程沢山あるならなおさら
0117デフォルトの名無しさん
2013/12/07(土) 14:03:31.00コード見てないから分からんけど、
それ、多分ちょっと前にレスがあった
インターフェースだと思うよ。
0118デフォルトの名無しさん
2013/12/07(土) 21:05:07.86アイアイエフ?
アイイフ?
2エフ?
0119デフォルトの名無しさん
2013/12/07(土) 22:14:16.32俺はアイイフと読んでいるけど、多分これには正しい答えはなく、
どれだけ多く世間に浸透しているかが正しいかどうかを決めていると思う。
そんな時はここを参考にするといいかも知れない。
http://shinh.skr.jp/yomikata/
0120デフォルトの名無しさん
2013/12/07(土) 22:26:52.300121デフォルトの名無しさん
2013/12/07(土) 23:34:34.88いやおかしいだろそのリンク先w
0122デフォルトの名無しさん
2013/12/08(日) 00:33:08.88>>117
インターフェースだね。
って言うか前スレで、テーブルの集計を出して欲しいって言われた時
実はそれ使ってコード書いたし。長くなるけど、その時のコードで
説明しようか。
0123デフォルトの名無しさん
2013/12/08(日) 00:37:17.54モジュール:Main
Option Explicit
Private mSheetParameterEntity As ISheetParameterEntity
'メイン処理
Public Sub Main(ByVal targetSheet As Worksheet)
Dim factory As New sheetParameterFactory
On Error GoTo Error_Handler
Application.ScreenUpdating = False
Set mSheetParameterEntity = factory.makeSheetParameter(targetSheet)
Call Initialize
Call TableControl.CopyTable
Call SheetControl.Sort
Call TableControl.ReleaseTable
Call SheetControl.MakeSummary
Call SheetControl.SelectCellTopLeft
GoTo Finaly
0124デフォルトの名無しさん
2013/12/08(日) 00:38:33.25Call MsgBox(Error)
Finaly:
Application.ScreenUpdating = True
End Sub
'初期化処理
Private Sub Initialize()
Call TableControl.SetSheetParameterEntity(mSheetParameterEntity)
Call SheetControl.SetSheetParameterEntity(mSheetParameterEntity)
Call TableControl.ClearOutLine
Call SheetControl.InitializeSheet
End Sub
0125デフォルトの名無しさん
2013/12/08(日) 00:42:50.80Option Explicit
Private Const COPY_CRITERIA_POSITION As String = "B2"
Private mSheetParameterEntity As ISheetParameterEntity
'テーブルパラメタエンティティ格納
Public Sub SetSheetParameterEntity(ByVal value As ISheetParameterEntity)
Set mSheetParameterEntity = value
End Sub
'シート初期化
Public Sub InitializeSheet()
mSheetParameterEntity.GetTargetSheet.Cells.Clear
End Sub
'ソート処理
Public Sub Sort()
Dim sortRange As range
'ソートキーのクリア
mSheetParameterEntity.GetTargetSheet.Sort.SortFields.Clear
'ソートキー追加
For Each sortRange In mSheetParameterEntity.GetTargetSortItem
mSheetParameterEntity.GetTargetSheet.Sort.SortFields.Add Key:=sortRange, _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
Next
0126デフォルトの名無しさん
2013/12/08(日) 00:44:08.11With mSheetParameterEntity.GetTargetSheet.Sort
.SetRange mSheetParameterEntity.GetTargetRange
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
'集計行の表示
Public Sub MakeSummary()
mSheetParameterEntity.GetTargetRange.Subtotal _
GroupBy:=mSheetParameterEntity.GetGroupColumn, _
Function:=xlSum, _
TotalList:=Array(mSheetParameterEntity.GetTargetSummaryItem), _
Replace:=True, _
PageBreaks:=False, _
SummaryBelowData:=True
End Sub
0127デフォルトの名無しさん
2013/12/08(日) 00:45:26.07Public Function GetSortRange(ByVal targertSheet As Worksheet, _
ByVal originalRange As range, _
ByVal columnOffset As Long) As range
Set GetSortRange = targertSheet.range(Cells(originalRange.Row, _
originalRange.Column + columnOffset), _
Cells(originalRange.Row + originalRange.Rows.Count - 1, _
originalRange.Column + columnOffset))
End Function
'対象シートの左上セル選択
Public Sub SelectCellTopLeft()
mSheetParameterEntity.GetTargetSheet.Cells(1, 1).Select
End Sub
0128デフォルトの名無しさん
2013/12/08(日) 00:47:52.99Option Explicit
Private Const COPY_CRITERIA_POSITION As String = "B2"
Private mSheetParameterEntity As ISheetParameterEntity
'テーブルパラメタエンティティ格納
Public Sub SetSheetParameterEntity(ByVal value As ISheetParameterEntity)
Set mSheetParameterEntity = value
End Sub
'テーブルコピー処理
Public Sub CopyTable()
Sheet1.range(COPY_CRITERIA_POSITION).CurrentRegion.Copy
mSheetParameterEntity.GetTargetSheet.range(COPY_CRITERIA_POSITION).PasteSpecial
Application.CutCopyMode = False
'テーブル範囲格納
Call mSheetParameterEntity.SetTargetRange( _
mSheetParameterEntity.GetTargetSheet.range(COPY_CRITERIA_POSITION).CurrentRegion)
End Sub
'アウトラインの解除
Public Sub ClearOutLine()
mSheetParameterEntity.GetTargetSheet.Cells.ClearOutLine
End Sub
0129デフォルトの名無しさん
2013/12/08(日) 00:49:12.40Public Sub ReleaseTable()
Dim list As ListObject
With mSheetParameterEntity
For Each list In .GetTargetSheet.ListObjects
If list.range.Row = .GetTargetRange.Row And _
list.range.Column = .GetTargetRange.Row And _
list.range.Rows.Count = .GetTargetRange.Rows.Count And _
list.range.Columns.Count = .GetTargetRange.Columns.Count Then
list.Unlist
Exit For
End If
Next
End With
End Sub
0130デフォルトの名無しさん
2013/12/08(日) 00:58:17.49モジュール:ISheetParameterEntity
'対象シート取得
Public Function GetTargetSheet() As Worksheet
End Function
'対象範囲取得
Public Function GetTargetRange() As range
End Function
'対象範囲格納
Public Sub SetTargetRange(ByVal value As range)
End Sub
'対象ソート項目取得
Public Function GetTargetSortItem() As Collection
End Function
'グループ化列取得
Public Function GetGroupColumn() As Integer
End Function
'対象合計項目取得
Public Function GetTargetSummaryItem() As Integer
End Function
0131デフォルトの名無しさん
2013/12/08(日) 01:00:28.87Option Explicit
Implements ISheetParameterEntity
Dim mTargetRange As range
Const SORT_ITEM1 As Long = 0
Const SORT_ITEM2 As Long = 1
Const GROUP_COLUMN As Integer = 2
Const SUMMARY_ITEM As Integer = 3
'対象シート取得
Public Function ISheetParameterEntity_GetTargetSheet() As Worksheet
Set ISheetParameterEntity_GetTargetSheet = Sheet2
End Function
'対象範囲取得
Public Function ISheetParameterEntity_GetTargetRange() As range
Set ISheetParameterEntity_GetTargetRange = mTargetRange
End Function
'対象範囲格納
Public Sub ISheetParameterEntity_SetTargetRange(ByVal value As range)
Set mTargetRange = value
End Sub
0132デフォルトの名無しさん
2013/12/08(日) 01:01:16.16Public Function ISheetParameterEntity_GetTargetSortItem() As Collection
Dim sortItemCollecton As New Collection
Dim sortRange As range
Set sortRange = SheetControl.GetSortRange(Sheet2, mTargetRange, SORT_ITEM1)
Call sortItemCollecton.Add(sortRange)
Set sortRange = SheetControl.GetSortRange(Sheet2, mTargetRange, SORT_ITEM2)
Call sortItemCollecton.Add(sortRange)
Set ISheetParameterEntity_GetTargetSortItem = sortItemCollecton
End Function
'グループ化列取得
Public Function ISheetParameterEntity_GetGroupColumn() As Integer
ISheetParameterEntity_GetGroupColumn = GROUP_COLUMN
End Function
'対象合計項目取得
Public Function ISheetParameterEntity_GetTargetSummaryItem() As Integer
ISheetParameterEntity_GetTargetSummaryItem = SUMMARY_ITEM
End Function
0133デフォルトの名無しさん
2013/12/08(日) 01:03:07.08Option Explicit
Implements ISheetParameterEntity
Dim mTargetRange As range
Const SORT_ITEM1 As Long = 3
Const SORT_ITEM2 As Long = 0
Const GROUP_COLUMN As Integer = 4
Const SUMMARY_ITEM As Integer = 3
'対象シート取得
Public Function ISheetParameterEntity_GetTargetSheet() As Worksheet
Set ISheetParameterEntity_GetTargetSheet = Sheet3
End Function
'対象範囲取得
Public Function ISheetParameterEntity_GetTargetRange() As range
Set ISheetParameterEntity_GetTargetRange = mTargetRange
End Function
'対象範囲格納
Public Sub ISheetParameterEntity_SetTargetRange(ByVal value As range)
Set mTargetRange = value
End Sub
0134デフォルトの名無しさん
2013/12/08(日) 01:03:56.94Public Function ISheetParameterEntity_GetTargetSortItem() As Collection
Dim sortItemCollecton As New Collection
Dim sortRange As range
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM1)
Call sortItemCollecton.Add(sortRange)
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM2)
Call sortItemCollecton.Add(sortRange)
Set ISheetParameterEntity_GetTargetSortItem = sortItemCollecton
End Function
'グループ化列取得
Public Function ISheetParameterEntity_GetGroupColumn() As Integer
ISheetParameterEntity_GetGroupColumn = GROUP_COLUMN
End Function
'対象合計項目
Public Function ISheetParameterEntity_GetTargetSummaryItem() As Integer
ISheetParameterEntity_GetTargetSummaryItem = SUMMARY_ITEM
End Function
0135デフォルトの名無しさん
2013/12/08(日) 01:06:09.64'対象範囲格納
Public Sub ISheetParameterEntity_SetTargetRange(ByVal value As range)
Set mTargetRange = value
End Sub
'対象ソート項目取得
Public Function ISheetParameterEntity_GetTargetSortItem() As Collection
Dim sortItemCollecton As New Collection
Dim sortRange As range
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM1)
Call sortItemCollecton.Add(sortRange)
Set sortRange = SheetControl.GetSortRange(Sheet3, mTargetRange, SORT_ITEM2)
Call sortItemCollecton.Add(sortRange)
Set ISheetParameterEntity_GetTargetSortItem = sortItemCollecton
End Function
'グループ化列取得
Public Function ISheetParameterEntity_GetGroupColumn() As Integer
ISheetParameterEntity_GetGroupColumn = GROUP_COLUMN
End Function
'対象合計項目
Public Function ISheetParameterEntity_GetTargetSummaryItem() As Integer
ISheetParameterEntity_GetTargetSummaryItem = SUMMARY_ITEM
End Function
0136デフォルトの名無しさん
2013/12/08(日) 01:15:14.00モジュール:SheetParameterFactory
'シートパラメタエンティティ作成クラス
Public Function makeSheetParameter(ByVal targetSheet As Worksheet) As ISheetParameterEntity
Dim instance As ISheetParameterEntity
Select Case targetSheet.Name
Case Sheet2.Name
Dim sht2Para As Sheet2ParameterEntity
Set sht2Para = New Sheet2ParameterEntity
Set instance = sht2Para
Case Sheet3.Name
Dim sht3Para As Sheet3ParameterEntity
Set sht3Para = New Sheet3ParameterEntity
Set instance = sht3Para
Case Else
Set instance = Nothing
End Select
Set makeSheetParameter = instance
End Function
0137デフォルトの名無しさん
2013/12/08(日) 01:36:17.38が、>>130の部分がインターフェースで
、
>>123でそのインターフェースの型を用意して、>>136でSheet2ParameterEntityか、Sheet3ParameterEntityの
どちらかを生成して>>123で用意した型に設定しています。
後は生成される二つのクラスの中以外は差異なくコードが走るため、
クラスの違いによる分岐は有りません。
この様に違うクラスで生成したものを同じクラスの型で扱えるようにする
仕組みが、中に何も書かれていない関数の正体です。
0138デフォルトの名無しさん
2013/12/08(日) 01:39:18.23ごめんなさいもう二度としません。
0139デフォルトの名無しさん
2013/12/08(日) 07:58:29.03へー、面白いな、これ。
「Width」って「うぃどぅす」って呼ぶのが一般的なんだ。
今までずーっと「ワイズ」だと思ってた。
0140デフォルトの名無しさん
2013/12/08(日) 08:27:53.85「Vba、インターフェース、ストラテジーパターン」あたりで
ググれと言えば一発で分かることだろ。
どうしても長いコード書きたかったら前
桃臼が晒してたコード書き場があったから
そこを使え。
どこだったかは忘れたけど。
0141デフォルトの名無しさん
2013/12/08(日) 09:52:33.48京都人「うぃどす」
0142デフォルトの名無しさん
2013/12/08(日) 10:19:44.06いばらきと
いばらぎで僅差なんだね。
本当はどっち?
0143デフォルトの名無しさん
2013/12/08(日) 11:10:35.20ちばらき
0144デフォルトの名無しさん
2013/12/08(日) 11:30:50.96なぜか合ってるのか不安になる音です
0145デフォルトの名無しさん
2013/12/08(日) 12:26:13.530146デフォルトの名無しさん
2013/12/08(日) 12:42:17.43キュートなお声ですよね
0147デフォルトの名無しさん
2013/12/08(日) 15:06:03.17最初のAAAからして読み方の
西恋ケ窪とかどこだよ。
IEnumerableって何なんだよ。
■ このスレッドは過去ログ倉庫に格納されています