トップページtech
1001コメント417KB

Excel VBA 質問スレ Part33

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/17(木) 22:04:40.64
ExcelのVBAに関する質問スレです

                   ___
       ___      /____ヽ      ____
      /____\    | |´・ω・`| |    /___ヽ
      .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
0075デフォルトの名無しさん2013/11/25(月) 21:11:46.22
ネタの質問だな。ググれば数秒で解決。
0076デフォルトの名無しさん2013/11/25(月) 22:35:38.26
ググって解決するんだ!
0077デフォルトの名無しさん2013/11/29(金) 11:03:07.73
>>74
MsgBox "Love"
0078デフォルトの名無しさん2013/11/29(金) 16:52:31.96
MsgBox "クリスマスに1日一緒にいてくれたら10万円あげちゃう", vbOKOnly
0079デフォルトの名無しさん2013/11/29(金) 21:18:14.46
インターフェースって
よく分かんないのがあるんですが
あれって何に使うんですか?
0080デフォルトの名無しさん2013/11/29(金) 22:10:15.32
vbaのどこで「インターフェース」って出てくるのさ。
Vb.Netの方でならそういうのあるのは知ってるけど(ちらっとだけどねw
0081デフォルトの名無しさん2013/11/30(土) 00:00:45.39
>>78
例えば、AというクラスとBというクラスがあったとして、
それぞれに同じ数と型の引数、同じ型の戻り値を持った同じ名前のメソッドがあったとします。
コード的にAとBのインスタンスさえ入れ換えてやれば分岐して違うクラスとして
設定しなくても一発で行けるのに・・・
と言う時に、A、B、どちらの型のインスタンスも格納出来るのがインターフェースです。
もっとも、それ用に作らなければなりませんが。

>>80
vbaには継承は有りませんが実装は有る様ですよん。
0082デフォルトの名無しさん2013/11/30(土) 06:02:14.70
>>79
クリスマスの夜に僕と君を繋いでくれる
そういうものさ
0083デフォルトの名無しさん2013/11/30(土) 13:24:33.41
早くvba.net出来ないかな。
.netになったらあんなことやこんなことも
できるようにばなるんだろうな。
いや、よく知らないけど。
0084デフォルトの名無しさん2013/12/03(火) 11:41:37.13
プログラマーなら「FizzBuzz問題」解けるよな?
http://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
>>84
改行しないで、1行に複数の命令書くときの区切り
0086デフォルトの名無しさん2013/12/03(火) 15:25:14.02
>>85
なんと、ありがとうございます
セミコロンにしようよ・・・
0087デフォルトの名無しさん2013/12/03(火) 16:21:57.89
>>86
セミコロンには別の意味が割り当てられてる
0088デフォルトの名無しさん2013/12/03(火) 21:35:40.07
>>84
へぇ、vbaでも三項演算子って使えるんだ。
vb.net辺りでも使えるけど、iifだと遅いからifの方の三項演算子使うとか色々あるんだけど、
まぁvbaのそれとは別物かも知れんね。
0089デフォルトの名無しさん2013/12/03(火) 21:49:58.38
三項演算子なんてたいそうなものじゃないよ
>>85のいうとおり一行に複数命令を書くときの単なる区切り文字
Cでのセミコロンと大体同じ(なので>>86はセミコロンにしようよと言ってると思う)
0090デフォルトの名無しさん2013/12/03(火) 21:52:40.76
あコロンのことをいってるんじゃないのか勘違い失礼
0091デフォルトの名無しさん2013/12/03(火) 22:38:33.25
VBAではIIfは関数であって演算子ではない
VB.NETでも同様
0092デフォルトの名無しさん2013/12/04(水) 02:17:02.98
GetPivotDataを使うとき、引数が条件によって変わる場合の処理ってどうすれば良いですか。
イメージとしては下記のようにしたいです。

Sub MYGETPIVOTDATA(ParamArray arr as Variant)
 GETPIVOTDATA(データ フィールド, ピボットテーブル,arr(0),arr(1),arr(2),arr(3),・・・arr(ubound(arr,1)))
End Sub
0093922013/12/04(水) 02:18:48.10
引数の数が条件によって増えたり減ったりするという意味です。
0094デフォルトの名無しさん2013/12/04(水) 10:03:51.41
数分ケース
0095デフォルトの名無しさん2013/12/04(水) 23:44:34.02
>>93
役に立つかどうかは分からんけど、この辺のでどうだろうか

http://www.moug.net/tech/exvba/0100045.html
0096デフォルトの名無しさん2013/12/05(木) 00:06:24.65
演算子と言えばXor(排他的論理和)ってのがあって
True 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.09
http://code.msdn.microsoft.com/office/VBACRC-32-dad7d087
0099デフォルトの名無しさん2013/12/05(木) 08:05:03.83
>>96
今取り込んだデータと直前のデータの Xor とって、データの変化点を見るとか。
まあ、VBA ではあまり出番はないわな。
0100デフォルトの名無しさん2013/12/05(木) 11:29:50.26
スクランブラ/デスクランブラを実装したり
擬似乱数を自前で作ったり

かな?
0101デフォルトの名無しさん2013/12/05(木) 11:54:01.45
今まで、「あ、これってxor使えば一発じゃん」と思ったことが数回あったと記憶しているが、
どういう場面だったかは思い出せない
0102デフォルトの名無しさん2013/12/05(木) 16:40:08.46
特定ビットの反転につかう
0103デフォルトの名無しさん2013/12/05(木) 16:48:23.56
>>102
あ!それだ!
0104デフォルトの名無しさん2013/12/05(木) 20:12:53.41
で、VBAで「特定のビットを反転する」場面って?
0105デフォルトの名無しさん2013/12/05(木) 21:19:40.58
フラグって意味じゃないかな
0106デフォルトの名無しさん2013/12/05(木) 22:04:39.69
>>102
特定Bitの反転だったらNotとAndでよくない?
0107デフォルトの名無しさん2013/12/05(木) 23:46:22.83
NotとAndでビット反転書いてみてくれ
それとXorと比べてみ
0108デフォルトの名無しさん2013/12/06(金) 00:10:00.42
ECCでも実装すれば
0109デフォルトの名無しさん2013/12/06(金) 07:06:26.46
>>107
ああ、なるほどね。解った。
0110デフォルトの名無しさん2013/12/06(金) 09:15:16.89
SQL で XOR が無くて困ったときってどうしてます?
0111デフォルトの名無しさん2013/12/06(金) 13:29:52.61
IE操作時、BusyとReadystateでページ読み込み完了をチェックしていますが、
タイムアウト(?)が原因なのか ページの読み込み中 で止まる場合があります
このような場合、どのように回避すればよろしいのでしょうか?
0112デフォルトの名無しさん2013/12/06(金) 17:32:08.44
>>111
一定時間経過したら、再読み込み処理、
複数回再読み込みしてダメなら、読み込みエラー処理
0113デフォルトの名無しさん2013/12/06(金) 22:03:11.45
>>112
無事動きました、ありがとうございます
0114デフォルトの名無しさん2013/12/07(土) 08:48:57.29
仕事場でまれに内容が何も書いてない関数が
ずらっと並んでいるクラスモジュールを見かけることがあるんですが
この間気になってそことその関数を呼び出している所を
コメントアウトしたら挙動がなんかおかしくなりました。
この内容がまったく書かれていない関数ってどんな意味があるんでしょうか?
0115桃白白 ◆9Jro6YFwm650 2013/12/07(土) 10:02:34.86
>>114
なにもしないってことじゃない。ヌルオブジェクトみたいな。
0116デフォルトの名無しさん2013/12/07(土) 13:00:27.72
呼び出してる前後で想像できないのかよ
想像しろよ、気になるだろ、なんなら聞いてくれよ
ずらっと並ぶ程沢山あるならなおさら
0117デフォルトの名無しさん2013/12/07(土) 14:03:31.00
>>114
コード見てないから分からんけど、
それ、多分ちょっと前にレスがあった
インターフェースだと思うよ。
0118デフォルトの名無しさん2013/12/07(土) 21:05:07.86
IIFってなんて詠むんでしょうか
アイアイエフ?
アイイフ?
2エフ?
0119デフォルトの名無しさん2013/12/07(土) 22:14:16.32
>>118
俺はアイイフと読んでいるけど、多分これには正しい答えはなく、
どれだけ多く世間に浸透しているかが正しいかどうかを決めていると思う。

そんな時はここを参考にするといいかも知れない。

http://shinh.skr.jp/yomikata/
0120デフォルトの名無しさん2013/12/07(土) 22:26:52.30
愛畏怖って読んでます
0121デフォルトの名無しさん2013/12/07(土) 23:34:34.88
>>119
いやおかしいだろそのリンク先w
0122デフォルトの名無しさん2013/12/08(日) 00:33:08.88
>>114
>>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.25
Error_Handler:

Call 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.80
モジュール:SheetControl
Option 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.11
'ソート
With 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.07
'対象の範囲と指定した列により、ソートする列の行範囲を取得
Public 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.99
モジュール:TableControl
Option 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.40
'テーブル解除処理
Public 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.87
モジュール:Sheet2ParameterEntity
Option 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.16
'対象ソート項目取得
Public 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.08
モジュール:Sheet3ParameterEntity
Option 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.94
'対象ソート項目取得
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
0135デフォルトの名無しさん2013/12/08(日) 01:06:09.64
モジュール:SheetParameterFactory
'対象範囲格納
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
ミスった>>135はなし
モジュール: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
>>119
へー、面白いな、これ。
「Width」って「うぃどぅす」って呼ぶのが一般的なんだ。
今までずーっと「ワイズ」だと思ってた。
0140デフォルトの名無しさん2013/12/08(日) 08:27:53.85
>>138
「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
Then は ゼンって言ってます
なぜか合ってるのか不安になる音です
0145デフォルトの名無しさん2013/12/08(日) 12:26:13.53
日本語に無い音だから、カナ表記するなら近い音を探すしかない
0146デフォルトの名無しさん2013/12/08(日) 12:42:17.43
そこでGoogle翻訳読み上げお姉さんですよ
キュートなお声ですよね
0147デフォルトの名無しさん2013/12/08(日) 15:06:03.17
いやだからおかしいだろそこのリンク先
最初のAAAからして読み方の
西恋ケ窪とかどこだよ。
IEnumerableって何なんだよ。
0148デフォルトの名無しさん2013/12/08(日) 15:34:26.83
IEnumerableはインターフェースだにょ
0149デフォルトの名無しさん2013/12/08(日) 18:05:50.91
私は関数で使う変数宣言を関数の頭で行いますが、
Javaもやっている私の同僚はインデント階層切替わりの単位で変数宣言をします。
関数内のどこで変数宣言しても特に動きが変わらないのは知っていますが、
同僚に言わせるとその方が分かり易いし、いずれObject指向言語に手を付けるなら、
そっちの方に慣れておいた方がいいと言います。
そう言うものなんでしょうか?
0150デフォルトの名無しさん2013/12/08(日) 19:32:44.84
>>149
>関数内のどこで変数宣言しても特に動きが変わらない
VBAではそうでも、Javaではそうではない
言語に合わせて宣言するべきで、VBAではプロシジャの先頭での宣言が薦められてたはず
まあ、どこで宣言しても良いんだが、ルールを決めてそれを守る方が大事
先頭で宣言したり使う直前に宣言したり、混在させるのが最悪
0151デフォルトの名無しさん2013/12/08(日) 20:55:04.75
>>149
vbaはやっぱり頭で合わせるもんだと思う。
無理してjavaなんぞに合わせなくても
object指向ので作る時にそうすればいいじゃない。
0152デフォルトの名無しさん2013/12/08(日) 21:01:29.51
>>148
冗談で言ってるのかと思ったら
本当でビビったw
0153デフォルトの名無しさん2013/12/08(日) 21:07:26.86
変数の話ならそんなことより
DimとPrivateの違いって何なの?
0154デフォルトの名無しさん2013/12/08(日) 21:37:29.33
>>153
モジュールレベルで宣言したときのスコープ(参照できる範囲)が違う
と思ったけど、モジュールレベルで使うとDimと同じスコープか
プロシジャレベルで使えるかどうかの違いだけで同じだな

VBではPublicかPrivate書いたらDimを省略できる出来るだけだったと記憶してるが
VBAではそうじゃないっぽいな
0155デフォルトの名無しさん2013/12/09(月) 20:52:31.18
>>153
Dimは遠い昔の、それこそVBじゃない頃、
N-Basicとかで配列をDim(dimension)で
宣言してた頃の名残りで盲腸みたいなもんだから、
出来ればPrivateで宣言した方がいいと、個人的には思う。
コメントをアポストロフィで付けないで、REMで書く様なもん。
0156デフォルトの名無しさん2013/12/10(火) 01:13:10.32
シングルコートまたはシングルコーテーションと言わずにアポストロフィとおっしゃるのは癖ですか?何か意図があれば解説きぼんぬ
0157デフォルトの名無しさん2013/12/10(火) 01:51:33.24
それを言うなら自分もまず「シングルクォート」と書くべきじゃね
0158デフォルトの名無しさん2013/12/10(火) 02:05:44.25
>>156
引用符(コーテーションマーク、クォーテーションマーク)は、前と後の一対で使うもの
0159デフォルトの名無しさん2013/12/10(火) 02:09:15.25
シングルコーテーションマークは、英語で使われ、
日本語ではあまり使われない
(中国語や韓国語では普通に使われるらしい)
0160デフォルトの名無しさん2013/12/10(火) 02:38:21.76
シングルクォーテーションとアポストロフィは厳密には別物なんだろうけど
もともともコメント記号としてどっちの意図で使われたのかはわからんしなぁ
俺もこの文脈なら'はアポストロフィって言うんだが、ヘルプみると
>コメントを入力するには、先頭にクォーテーション (') を入力するか、Rem ステートメントで指定します。
とか
>コメント行は、先頭にクォーテーション (') または Rem ステートメントのいずれかと、
とか書いてあるから、あれはクォーテーションと呼ぶのが正しいのかもしれん
0161デフォルトの名無しさん2013/12/10(火) 03:14:25.20
記号の読み方はJIS規格で「シングルクォーテーションマーク」と定められているので議論の余地はない

英語的な解釈をするなら、アポストロフィはコメント行の先頭に使っていい記号ではない
本来はクォーテーションで前後を囲ったであろう物を、8bit時代のMS-BASICのリソース的な制約から
後半を省略可能にしたと見るのが妥当
0162デフォルトの名無しさん2013/12/10(火) 04:19:23.00
そういうのも定められてるのか。
そのJIS企画の当該ページのリンクが貼られたらこの話は終わりにしよう。
それまでは存分に語らい合いましょう!

ってExcel VBAスレじゃないですか。
おわり。
0163デフォルトの名無しさん2013/12/10(火) 04:33:44.43
>>161
お前のキーボードはjIS規格配列なのか?
VBAはいつからJIS規格になったんだ

違う規格の定義をあてはめて議論の余地がないとか笑わせる
0164デフォルトの名無しさん2013/12/10(火) 04:42:38.53
おーっとここで待ったが入ったーっ!
これは確かにと言わざるを得ない。
これで結論はもう出たということか。
VBAのオフィシャルドキュメントで、
コメントには何を使うと記載されているのか?
で、この話に執着する者達が終着できそうだ。

公式文書のリンクが貼られたらこの話は終わりにしよう。
それまでは存分に語らい合いましょう!

って略
0165桃白白 ◆9Jro6YFwm650 2013/12/10(火) 05:26:36.90
>>164
語らうには語り合うという意味があるから合うを付ける必要ないんじゃないかな。
語らいましょう、または、語り合いましょうでいいと思うんだよね。
0166デフォルトの名無しさん2013/12/10(火) 05:33:56.97
>>165
うっせーばーか
いいと思うんだよねってなんだよ
いいんだよって言い切れないのかよ
もっと自信もてよボケカス
早くVBAの公式文書のリンク持ってこいや
0167桃白白 ◆9Jro6YFwm650 2013/12/10(火) 05:38:24.57
(´・ω・`)・ω・`) キャー
/  つ⊂  \  怖いー
0168デフォルトの名無しさん2013/12/10(火) 05:57:51.45
\               U         /
  \             U        /
             / ̄ ̄ ヽ,
            /        ',      /     _/\/\/\/|_
    \    ノ//, {0}  /¨`ヽ {0} ,ミヽ    /     \          /
     \ / く l   ヽ._.ノ   ', ゝ \       <   バーカ!  >
     / /⌒ リ   `ー'′   ' ⌒\ \    /          \
     (   ̄ ̄⌒          ⌒ ̄ _)    ̄|/\/\/\/ ̄
      ` ̄ ̄`ヽ           /´ ̄
           |            |  
  −−− ‐   ノ           |
          /            ノ        −−−−
         /           ∠_
  −−   |    f\      ノ     ̄`丶.
        |    |  ヽ__ノー─-- 、_   )    − _
.        |  |            /  /
         | |          ,'  /
    /  /  ノ           |   ,'    \
      /   /             |  /      \
   /_ノ /              ,ノ 〈           \
    (  〈              ヽ.__ \        \
     ヽ._>              \__)
0169デフォルトの名無しさん2013/12/10(火) 19:53:40.33
まぁいいじゃないか。
「'」に変わりはないんだろうし。
0170デフォルトの名無しさん2013/12/13(金) 00:23:21.08
Excelにはテキストリーダー の機能があると聞きました。
それに音程付けてボーカロイドみたいにすることってできますか?
0171デフォルトの名無しさん2013/12/13(金) 05:55:28.56
無理
0172デフォルトの名無しさん2013/12/15(日) 07:52:32.98
>>170
可能
0173デフォルトの名無しさん2013/12/15(日) 20:26:43.18
マクロの設定を有効にしているにもかかわらず多変量解析を行おうとすると
マクロが使用できないか、全てのマクロが無能になっている可能性があります、と出ます
どうすれば多変量解析を実行できるでしょうか?
0174デフォルトの名無しさん2013/12/15(日) 20:39:43.00
excelのバージョンも書かず、どこに置いてあるものなのかも言わず
excel2007以降なら信頼できる場所に置いてあるのかいないのかなどなど情報を一切書かず
■ このスレッドは過去ログ倉庫に格納されています