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
0655デフォルトの名無しさん
2014/06/09(月) 08:28:18.70ID:2ZoqHH1sそれは、ホントに読み込みでエラーなのか?
Integerの配列なら割り当てれるがVariantの配列は割り当てられない
っていうなら、メモリ制限の問題で有りうるだろうが
>パソコンにどんだけリソースがあってもVBAの方で利用できるメモリが制限されてるという
これそのものに間違いがなくても、不適切な例をだすと説得力がなくなるぞ
0657デフォルトの名無しさん
2014/06/09(月) 09:44:16.22ID:2ZoqHH1sオブジェクトブラウザで見ると
BeforeUpdateとかはTextBoxで実装されてなさそう
無理なんじゃないかな
0658デフォルトの名無しさん
2014/06/10(火) 01:36:44.07ID:FAZAoJi30659デフォルトの名無しさん
2014/06/10(火) 02:07:04.29ID:hc4LiDN+0660640
2014/06/10(火) 03:57:59.03ID:ZdnvVnA2そうなんですよ
MSForms.TextBoxには、BeforeUpdateが実装されてないんです
しかし、
Dim tb As MSForms.TextBox
Set tb = UserForm1.TextBox1
は通りますが
Dim tb As TextBox
Set tb = UserForm1.TextBox1
は型不一致でエラーになるように、TextBoxと言ってもいろいろあるようで
MSForms.TextBoxは、どうやらワークシート上に配置するコントロールのTextBoxのことで
ユーザーフォーム上のTextBoxを代入してもエラーにこそなりませんが、本来、適した型では無いようなのです
ワークシート用のTextBoxには元からBeforeUpdateが実装されていないので
ワークシート上のTextBoxでBeforeUpdateを取るのが無理なのは解りますが
ユーザーフォーム用のTextBoxには、間違いなくBeforeUpdateが実装されていて、実際に使えているので
ワークシート用のTextBox型ではなく、ユーザーフォーム用のTextBox型で宣言すれば
機能としては間違いなく実装されている以上、BeforeUpdateも取れるのではないかと思うのですが
その正しい型がどれなのかがわかりません
0661デフォルトの名無しさん
2014/06/10(火) 05:54:47.60ID:DoT4XX20とりあえずオブジェクトブラウザの使い方覚えて
標準的な参照設定の範囲ではTextBoxはMSForms.TextBoxしかないと思うけど
ユーザーフォーム用のTextBoxは MSForms.TextBox
オブジェクトブラウザで見る限り、BeforeUpdateはTextBoxに直接定義されていない
TextBox以外の所で定義されています(おそらくMSForms.Controlからの継承)
本来はMSForms.Controlの変数を用意してそれにTextBoxをセットすれば良いのですが
残念なことにControlはイベントソースとしては公開されてないようです(WithEvents付きで宣言できない)
ということでVBAではできません
素直に違う方法を考えましょう
0662デフォルトの名無しさん
2014/06/10(火) 09:29:36.71ID:DruWYpJa問題の発生するコード(サンプル)を貼り付けておきます。実際のコードはこれとは異なります。
このサンプルコードは正常に動作するのですが、"i mod100"を"i mod 10000"に変更すると問題が出てきます(このときcnt=1となります)。
TestArrayという二次元配列が、Transposeした後には一次元配列になってしまっています。
実際のコードではTranspose後の配列の値を読み出すのですが、TestArrayが二次元配列であるという前提で読みだしていますが、
cnt=1のときだけTranspose後のTestArrayが一次元配列になっているためエラーとなります。
cnt=1のときとそれ以外のときで場合分けすれば問題は解決するのですがスマートではないので躊躇しています。
何か美しい解決方法はないものでしょうか?
'**********************************************************
Sub test()
Dim i As Long, cnt As Long, TestArray As Variant
ReDim TestArray(1 To 3, 1 To 200) '余裕を持って200まで準備
For i = 1 To 10000
If i Mod 100 = 0 Then
cnt = cnt + 1 'カウンター(条件を満たした数)
TestArray(1, cnt) = 1: TestArray(2, cnt) = 2: TestArray(3, cnt) = 3
End If
Next i
ReDim Preserve TestArray(1 To 3, 1 To cnt) '不要なところを捨てる
TestArray = WorksheetFunction.Transpose(TestArray)
End Sub
'**********************************************************
0663デフォルトの名無しさん
2014/06/10(火) 20:29:07.13ID:8dL1hbUsWorkbooks.Open Range("A1").Value & ".xls"
If Range("A2").Value > 0 Then Sheets("sheet1").PrintOut Copies:=Range("A2").Value
AAA.xlsを開き、そのA1に書かれてるBBB(という名の).xlsをA2にある数分だけ印刷したいマクロを組みたいのですが、
上記のだとBBB.xlsのA2を参照しようとしてしまいます。
どうすればAAA.xlsファイルのA2を参照できるでしょうか?
0664デフォルトの名無しさん
2014/06/10(火) 21:30:20.37ID:hc4LiDN+枚数 = Range("A2").Value
Workbooks.Open Range("A1").Value & ".xls"
If 枚数 > 0 Then Sheets("sheet1").PrintOut Copies:=枚数
0665デフォルトの名無しさん
2014/06/10(火) 21:40:11.81ID:UIbglvLXよければ>>663がダメで>>664ならいける理由を
説明願いたい
0666デフォルトの名無しさん
2014/06/10(火) 21:43:02.84ID:QPzsyhTi0667デフォルトの名無しさん
2014/06/10(火) 21:45:17.34ID:UIbglvLXなるほど やっと理解できた
0668663
2014/06/11(水) 21:44:28.79ID:FYp71EYH何度も申し訳ないですが
枚数 = Range("A2").Value
If 枚数 > 0 Then Workbooks.Open Range("A1").Value & ".xls"
If 枚数 > 0 Then Sheets("sheet1").PrintOut Copies:=枚数
Ifの条件を
枚数 = 1〜65535(印刷で設定可能な数)
に変えたいです
具体的な書き方を教えていただけないでしょうか
0669デフォルトの名無しさん
2014/06/11(水) 21:58:07.88ID:FYp71EYHこんなで良いのでしょうか
0670デフォルトの名無しさん
2014/06/11(水) 22:11:11.04ID:GbTJWusP0671デフォルトの名無しさん
2014/06/11(水) 22:17:48.49ID:FYp71EYHそんな簡単なのがあったんですね
そっちにします ありがとうございます
0672デフォルトの名無しさん
2014/06/11(水) 22:19:55.78ID:FYp71EYH初めから0より大きいだったんですね
申し訳なかったです
0673デフォルトの名無しさん
2014/06/12(木) 02:42:30.17ID:efyo1JwZファイル2・・・マクロ2
ファイルを単独で開いている時には、マクロ1とマクロ2は正常に動きます。
ファイルを二つ開いた状態では、マクロ1とマクロ2は正常に動きますがマクロが終わるまでに異常に時間がかかります。
マクロ1にもマクロ2にも、ワークブック名を省略した記述があり(worksheets(1).cells(1,1)のように)、これが原因だと思い"thisworkbook."を付加するなどして修正しました。
しかしマクロ終了までに時間がかかるという問題は解決しないままです。
原因として何が考えられますか?
0674デフォルトの名無しさん
2014/06/12(木) 02:53:44.23ID:Ip/6+VhQリソース不足
0675デフォルトの名無しさん
2014/06/12(木) 19:29:45.18ID:JGtl8L6Jhttp://light.dotup.org/uploda/light.dotup.org28231.png
↑
データはこのような画像の通りにシート3つに分かれて存在しています。
どのようなマクロを組めばいいかお教え願いたいです。
ジャンルごとに変数というものを持たないといけないのでしょうか?
実際は母が使うので、ボタン一つで出来るのだとありがたいのですが・・・
大変面倒な質問ですが、お願いします
0676デフォルトの名無しさん
2014/06/12(木) 19:50:40.35ID:JgOg9e9B0677デフォルトの名無しさん
2014/06/12(木) 20:24:31.20ID:JGtl8L6J一度マスターでジャンルを確認しないといけないので、どうすればいいのかわからないのです
マクロでぽんと出来ると嬉しいのですが
0678デフォルトの名無しさん
2014/06/12(木) 20:50:37.37ID:A1ckDykJ左の黄色のデータを上から処理する
処理内容は、辞書を通し番号で索引してvalueの配列を取り出して、合計値に値を合算して、辞書に戻す
最後に辞書の全部のvalueの配列の内容を、右の赤のところに書き出す
0679デフォルトの名無しさん
2014/06/12(木) 20:58:48.89ID:leNeVPHtピボットで一撃で片付きそうな気もするけど、
マクロで組むならその形式であれば、それらのシートをテーブルに見たてて、
SQLを投げて、レコードセットに取得した値を他のシートに展開するのが
ちまちまロジック組むより手っ取り早いかな。
0680デフォルトの名無しさん
2014/06/12(木) 20:59:14.04ID:JGtl8L6J本当に面倒で申し訳ないのですが、そのプログラムを教えてくださいませんでしょうか
辞書を作る以外で方法はないでしょうか
0681デフォルトの名無しさん
2014/06/12(木) 21:01:22.38ID:A1ckDykJ自分でやる気ゼロかw
辞書作らないなら黄色ところに作業列を追加してジャンルを振ってからピボットか何かで集計するとかじゃね
0682デフォルトの名無しさん
2014/06/12(木) 21:19:47.42ID:leNeVPHtいくつかキーワードも挙がったし。
後は自分で調べるか、コード晒してくれる優しい人を待つか。
ただ、この程度のものであれば自分で調べて組んだ方が早いだろうけどね。
0683デフォルトの名無しさん
2014/06/12(木) 21:23:44.62ID:paP2EzQv0684デフォルトの名無しさん
2014/06/12(木) 21:26:40.23ID:leNeVPHtじゃ、出来るあなたがコード晒してあげたら?
0685デフォルトの名無しさん
2014/06/12(木) 21:26:43.13ID:FQgQ1zJaわざわざ手間かけてバグ作りたいようなマゾはコード書かないでくれマジで
0686デフォルトの名無しさん
2014/06/12(木) 21:27:48.55ID:A1ckDykJ0687デフォルトの名無しさん
2014/06/12(木) 21:29:30.29ID:leNeVPHt0688デフォルトの名無しさん
2014/06/12(木) 21:30:43.58ID:paP2EzQv僕は上から目線じゃないからいいんですよ。偉そうに語ってるくせにできないやつが滑稽なんですw
0689デフォルトの名無しさん
2014/06/12(木) 21:31:25.43ID:FQgQ1zJa0690デフォルトの名無しさん
2014/06/12(木) 21:31:59.17ID:leNeVPHtああそう、まあがんばってね
0691デフォルトの名無しさん
2014/06/12(木) 21:32:31.74ID:A1ckDykJ>偉そうに語ってるくせにできないやつ
すげぇ上からじゃん
0692デフォルトの名無しさん
2014/06/12(木) 21:33:12.72ID:JGtl8L6Jプログラミングのこと良く知らないのに軽い気持ちで質問してすみませんでした
0693デフォルトの名無しさん
2014/06/12(木) 21:35:50.99ID:paP2EzQvできないくせに質問者に偉そうな態度とってるやつを嘲笑ってるだけですよw
僕はそうはなりたくないなあ。反面教師にさせていただきますw
0694デフォルトの名無しさん
2014/06/12(木) 21:37:43.46ID:leNeVPHtババアでも40くらいまでで可愛ければコード組んじゃうかもしれない。
意外にストライクゾーン広いんだ。
0695デフォルトの名無しさん
2014/06/12(木) 21:38:15.19ID:paP2EzQv問題ないと思います。質問するのは自由ですし、僕もできれば協力したいですけど、
実力が及ばず…。
0696デフォルトの名無しさん
2014/06/12(木) 21:38:20.26ID:A1ckDykJもうなってるから心配すんな
0697デフォルトの名無しさん
2014/06/12(木) 21:39:25.92ID:JgOg9e9Bお前この程度で本当に出来ない奴いると思うの?自分が出来ないからそんな事言っちゃうんだろ
0698デフォルトの名無しさん
2014/06/12(木) 21:42:27.75ID:paP2EzQvできるんだったらとっくに作ってると思いますけど。
できると口で言うだけなら僕にもできますよw
でもそういう虚勢を張るのって人としてどうかと思うから、正直にできないって僕は言います。
できるんですね?
0699デフォルトの名無しさん
2014/06/12(木) 21:45:29.20ID:FQgQ1zJa0700デフォルトの名無しさん
2014/06/12(木) 21:56:20.85ID:A1ckDykJ後出しで「実際に解決してください」と言われても自分でやれとしか
0701デフォルトの名無しさん
2014/06/12(木) 21:59:13.12ID:JgOg9e9B悪いが煽りは逆効果だ
これで答えたら他の奴がマネするからな
0702デフォルトの名無しさん
2014/06/12(木) 21:59:30.00ID:paP2EzQvあははw
0703デフォルトの名無しさん
2014/06/12(木) 22:01:34.14ID:paP2EzQvできないんですね。それじゃあ僕と同じですねw
正直にできないって言える分僕の方が大人です。
0704デフォルトの名無しさん
2014/06/12(木) 22:10:30.70ID:yqko6NwnB.xlsの値を参照した後B.xlsを閉じる際に
If Workbooks.Count = 2 Then ActiveWorkbook.Close
これで閉じてるのですが、こっちが普通ってやり方ありませんか?
上記のだとすぐ問題が起きそうで
0705デフォルトの名無しさん
2014/06/12(木) 22:12:05.33ID:JGtl8L6Jhttp://light.dotup.org/uploda/light.dotup.org28231.png
↑
データはこのような画像の通りにシート3つに分かれて存在しています。
どのようなマクロを組めばいいかお教え願いたいです。
ジャンルごとに変数というものを持たないといけないのでしょうか?
実際は母が使うので、ボタン一つで出来るのだとありがたいのですが・・・
大変面倒な質問ですが、お願いします
0706デフォルトの名無しさん
2014/06/12(木) 22:14:44.17ID:JGtl8L6Jこれどうやるんですか?実際に教えてください
0707デフォルトの名無しさん
2014/06/12(木) 22:23:06.96ID:FQgQ1zJathrow SQL
} Catch Values as RecordSet {
RecordSet.extract(Other.Shit)
}
0708デフォルトの名無しさん
2014/06/12(木) 22:24:27.04ID:JGtl8L6Jこのスレにまともにコード描ける人が居ないってのは良く分かりました
なんかわざと荒らしをして煽って邪魔する人も居るし
答え出るまでこのスレ居ますね
0709デフォルトの名無しさん
2014/06/12(木) 22:26:34.93ID:JGtl8L6Jそれが普通です
0710デフォルトの名無しさん
2014/06/12(木) 22:26:53.60ID:A1ckDykJB.xlsを開いた直後にset BookB as ActiveWorkbook みたいな感じで
B.xlsを捕捉しておいて処理後にBookBをCloseするか
エクセルの仕様上、同名のファイルは開けないのでB.xlsのファイル名を保持しておいて
処理後に開いてるブックの中からB.xlsを見つけて閉じるか
0711デフォルトの名無しさん
2014/06/12(木) 22:27:54.98ID:A1ckDykJ0712デフォルトの名無しさん
2014/06/12(木) 22:29:02.22ID:JGtl8L6J日別の購入データの通し番号から、マスターを参照してジャンル分けして、ジャンルごとの合計金額を出したいです。
http://light.dotup.org/uploda/light.dotup.org28231.png
↑
データはこのような画像の通りにシート3つに分かれて存在しています。
どのようなマクロを組めばいいかお教え願いたいです。
ジャンルごとに変数というものを持たないといけないのでしょうか?
実際は母が使うので、ボタン一つで出来るのだとありがたいのですが・・・
大変面倒な質問ですが、お願いします
コードを教えてくださいお願いします
正確なコードが出るまで居座ります
嘘の答えも言い続けます
0713デフォルトの名無しさん
2014/06/12(木) 22:33:24.33ID:JgOg9e9Bお前は黙っとけw>>710が普通
0714デフォルトの名無しさん
2014/06/12(木) 22:35:53.98ID:JGtl8L6J私が馬鹿な人間なのは分かっているし、これが自分のためのものなら諦めるけど
本当に困ってるんですお願いです
0715704
2014/06/12(木) 22:49:20.79ID:yqko6Nwn0716デフォルトの名無しさん
2014/06/12(木) 22:50:33.31ID:JGtl8L6J私の質問のコード教えてくれませんかお願いします
本当に困ってるんです助けると思ってお願いします
0717デフォルトの名無しさん
2014/06/12(木) 22:54:21.41ID:FQgQ1zJa0718デフォルトの名無しさん
2014/06/12(木) 22:58:24.36ID:leNeVPHtSub TotalAmount()
Dim dbCon As ADODB.Connection
Dim strsql As String
Dim dbRes As ADODB.Recordset
Dim Col As Long
Dim Row As Long
Set dbCon = New ADODB.Connection
With dbCon
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties") = "Excel 8.0"
.Open ThisWorkbook.FullName
End With
strsql = "SELECT B.ジャンル ,SUM(A.価格) AS 合計金額 FROM [Sheet1$] A INNER JOIN [Sheet2$] B ON A.通し番号 = B.通し番号 GROUP BY B.ジャンル"
Set dbRes = New ADODB.Recordset
dbRes.CursorLocation = adUseClient
dbRes.Open strsql, dbCon, adOpenDynamic, adLockOptimistic, adCmdText
つづく
0719デフォルトの名無しさん
2014/06/12(木) 23:00:50.52ID:leNeVPHtWith Worksheets("sheet3")
.Cells.ClearContents
For Col = 1 To dbRes.Fields.Count
.Cells(1, Col).Value = dbRes.Fields(Col - 1).Name
Next Col
Row = 1
Do Until dbRes.EOF
Row = Row + 1
For Col = 1 To dbRes.Fields.Count
.Cells(Row, Col).Value = dbRes.Fields(Col - 1).Value
Next Col
dbRes.MoveNext
Loop
End With
dbRes.Close: Set dbRes = Nothing
dbCon.Close: Set dbCon = Nothing
End Sub
こんな感じ。
シート1,2に設定しとけばシート3に書き出すよ。
ただし、Microsoft ActiveX Data Objects 2.8 Libraryの参照設定をきっとくこと。
0720デフォルトの名無しさん
2014/06/12(木) 23:02:10.06ID:JgOg9e9BVLOOKUPとSUMIFで出来るからまじで
1.ジャンル分けしたいデータ4列目にジャンル列追加
2.ジャンル列にVLOOKUPでジャンルを設定
3.合計金額列にSUMIFでジャンル毎の集計値を設定
0721デフォルトの名無しさん
2014/06/12(木) 23:07:09.27ID:JGtl8L6Jユーザー定義型は定義されていませんってでます
> Microsoft ActiveX Data Objects 2.8 Libraryの参照設定をきっとくこと
これはどうしたらできます?
調べても出てきません
だまされてますか?
0722デフォルトの名無しさん
2014/06/12(木) 23:10:35.81ID:leNeVPHtおんぶにだっこだなぁ。
VBEでツール→参照設定でそれを選んでOK押せば参照してくれるから。
0723デフォルトの名無しさん
2014/06/12(木) 23:13:09.28ID:JGtl8L6Jそれにはチェック入ってませんでした
調べたらDAOなんたらってのにチェック入れたらいけるって書いてましたが
チェックいれたらDLLエラーってでました。
もっと簡単に出来る方法ないんでしょうか
もうしにたくなってきました
0724デフォルトの名無しさん
2014/06/12(木) 23:19:00.19ID:leNeVPHtいやだからチェック入れないと。
今回使っているのはDAOじゃなくてADOだから。
0725デフォルトの名無しさん
2014/06/12(木) 23:32:14.62ID:leNeVPHtとりあえずID:paP2EzQvは死んでくれないかな。
0726デフォルトの名無しさん
2014/06/12(木) 23:57:38.17ID:DSeU12c2A.xlsにあるマクロでB.xlsを開くんだったら
開いてからアクティブなブックをオブジェクト変数にセットするより
開くときにオブジェクト変数に直接突っ込んだ方が早くない?
Dim bookB As Workbook
Set bookB = Workbooks.Open(B.xls)
とかやっとけばいっぺんで終わる
0727デフォルトの名無しさん
2014/06/13(金) 00:05:35.25ID:3uExzG0Vうん。そう出来るんなら
外部からアクティブなブック変えられても安全だね。
0728デフォルトの名無しさん
2014/06/13(金) 01:02:52.06ID:mgi5uvuRたいていその時は他のいくつかのマクロにまで同様の被害を出し、困っています。
今のところは、作業ブックとマクロブックは必ず分けて、さらにメモ帳でマクロのプログラムを保存しておいて、もし壊れたらマクロブックは捨てて新しく作り直して対処しています。
ただ、作業ブックで直接マクロを呼び出せれば非常に便利なのでそれを検討しています。
質問は二つです
1)壊れる理由はなんなのでしょうか?
2)普通の作業ブックにマクロを用意すると、上記のように壊れたとき作業ブックごと壊れそうで怖いです。
壊れると思うとためらってしまいます。何か良い対処法はありませんか?
0729デフォルトの名無しさん
2014/06/13(金) 02:05:30.86ID:/KfsTB1Cマクロが壊れるってどういうこと?VBAのソースが書き換わってるの?
別のパソコンでは試した?
0730デフォルトの名無しさん
2014/06/13(金) 02:25:20.51ID:QETwEf+A自分自身マクロが壊れた経験は無いし、知人からも聞いたこと無いけど、
そういう理由ではなくマクロのブックとデータのブックは大抵別にしてるよ。
俺の仕事だと大抵の場合年度ごとにデータは変わるから、
マクロ入りのブックを毎年更新するのは面倒くさい。
マクロを別にしとけばデータブックだけ変えて作業できる。
もちろん、年度の指定はマクロで出来るように作ってある。
まぁ、一回コッキリの作業だったら
マクロ入りのブックにデータも入れ込むのもアリだと思うけど、
そうでなければ別体にしといたほうが作業性は上がるよ。
0731673
2014/06/13(金) 02:25:26.50ID:C2eUWGFh確かに開いているファイルのサイズは小さくないし(ファイル1が8Mバイト、ファイル2が44Mバイト)、
PCもそれほど速いわけでもないけど、やっぱリソース不足なんかな。
Variant型のグローバル変数を使ってるとかも関係しているんだろうか?
リソース不足以外に、ファイルを複数開いている時にマクロが遅い原因はありますか?
0732デフォルトの名無しさん
2014/06/13(金) 04:55:30.41ID:hNNRznvy間違ったデータを処理しているのかも?
0除算、オーバーフロー、型変換の失敗など
またエラーが出たときに、すべてのデータを破棄せず、
中途半端な状態で、ファイルなどに書き込むと、
次回そのファイルを読み込んだら、またエラーが起こる
ログファイルを作って、すべてのデータのIn/Out、
つまり、データを読み込んだ所と、演算後を記録して、
エラーが起こる瞬間をとらえる
0733デフォルトの名無しさん
2014/06/13(金) 07:26:02.30ID:kHczDXdC動作が停止するのでどうなっているかはわかりません
うちの周りではわりとよくあることのようですし、私自身1年で2回壊れています
別のpcでは試していません。windows7,8、office2010で起こります
>>730
別にしておくのは良いことも多いですがボタンのようなものがあればなおいいなとおもいまして。
>>732
後だしで申し訳ないのですが、やらせているのはファイルを開く閉じるコピーペーストのみですので計算をやらせたりはしていません
0734デフォルトの名無しさん
2014/06/13(金) 08:17:22.92ID:LRXbjNk50735デフォルトの名無しさん
2014/06/13(金) 20:38:36.57ID:3uExzG0V以前ファイルサーバーでフォルダ階層深いところに、
EXCELのファイル置いて開いたら壊れることがよくあったよ。
なんかVBエディタでオブジェクトブラウザで見ると、シートの部分が青くなったりしてた。
0736デフォルトの名無しさん
2014/06/14(土) 14:18:26.82ID:Je/qq0DA俺の体感では
システム側の問題でマクロ付きのエクセルファイルが壊れるのは、それ以外のファイルが壊れるのと差はない
マクロでおかしなことやってるか、マクロ関係なくファイル壊れるような環境かのどっちかが疑わしい
>>731
リソースの競合
>>735
パス長の問題で読み書きできないんじゃないのか?
0737デフォルトの名無しさん
2014/06/14(土) 15:36:29.51ID:UnUM1hDEこちらで質問したのですが、
こちらのスレのほうがよかったのですかね?
708です
0738デフォルトの名無しさん
2014/06/14(土) 21:48:17.67ID:ez0d87W9> マクロでおかしなことやってるか、マクロ関係なくファイル壊れるような環境かのどっちかが疑わしい
まじにこんな事言う人始めて見たw
0739デフォルトの名無しさん
2014/06/15(日) 09:58:44.35ID:2EJJf8nrB列に値が入っていない所から同じ処理をさせるようにするにはどうすればよいのでしょうか?
For wRow = 1 To Range("A" & Rows.Count).End(xlUp).Row
・・・
・・
・
Next
A B
1 x x
2 x x
3 x x
4 x ←この列から処理を始めたい
5 x
0740デフォルトの名無しさん
2014/06/15(日) 10:14:00.30ID:QD8jtgNHDim FirstB As Long
FirstB = Range("B1").End(xlDown).Offset(1).Row
For wRow = FirstB …
0741デフォルトの名無しさん
2014/06/15(日) 11:40:26.86ID:2EJJf8nr早々のレスありがとうございます。
上手くいきました!作業効率があがり助かりました!
0742デフォルトの名無しさん
2014/06/15(日) 21:21:01.30ID:2EJJf8nr度々すみません
この処理を仮に6行目からスタートさせるにはどうすればいいのですか?
0743デフォルトの名無しさん
2014/06/15(日) 21:24:01.33ID:QD8jtgNHB1をB6に変えればいいよ。
0744デフォルトの名無しさん
2014/06/15(日) 22:09:31.20ID:2EJJf8nrありがとうございます。初歩的な質問ですみませんでした
0745デフォルトの名無しさん
2014/06/17(火) 03:05:20.46ID:1LOl6xrI候補に出てきません。エクセル2002の仕様ですか?
0746デフォルトの名無しさん
2014/06/17(火) 03:10:24.91ID:1LOl6xrI[_END]の[]で括るのは、どういう意味ですか?
Enum Area
West = 0
East
[_END] = -1
End Enum
0747デフォルトの名無しさん
2014/06/17(火) 03:59:06.43ID:jPdOoXg3セル範囲の名前の定義
0748デフォルトの名無しさん
2014/06/17(火) 10:25:10.56ID:X2vvvV0A0749デフォルトの名無しさん
2014/06/17(火) 10:25:54.01ID:X2vvvV0A0750デフォルトの名無しさん
2014/06/17(火) 10:26:46.03ID:X2vvvV0A0751デフォルトの名無しさん
2014/06/17(火) 10:36:51.26ID:l2MahTzn通常指定できない変数名を使うときに[]でくくると言うVBAのルール
ExcelVBAとして>>747の使い方する時もあるけど、>>746のはそれじゃない
ちなみに_で始めた列挙名は非表示メンバになって、通常の入力補助とかに出てこない
オブジェクトブラウザで 非表示のメンバを表示 にして確認できる
0752デフォルトの名無しさん
2014/06/17(火) 10:41:48.38ID:Yj2sqA8/クラス名そのものではなく
クラス名を型として宣言した変数の後にドットを入力しましょう
それでもダメなら、どこかにコンパイルエラーがあると思うので
メニューの デバッグ > VBAProjectのコンパイル で確認しましょう
>>747
コードエリアで使う場合と、宣言エリアの列挙型で使う場合とでは意味が違うよ
>>746
列挙型では、_ で始まる名前を [ ] で囲むと、入力候補に表示されないメンバを定義できる
これは、_で始まるメンバは非表示メンバになるのと、[ ] で囲むと通常使えない名前を定義できるのとの合わせ技です
>>748
オブジェクト変数をオブジェクト変数に代入するとエラーになります
オブジェクト変数をオブジェクト変数に参照代入すると、参照代入先のオブジェクト変数でも
元のオブジェクト変数が参照しているオブジェクトを参照できるようになります
>>749
可変要素数の配列変数への代入では、元の配列変数のコピーが作成されます
固定要素数の配列変数への代入では、要素数が同じでもエラーになります
0753デフォルトの名無しさん
2014/06/17(火) 12:09:43.40ID:l2MahTznコードエリアとか宣言エリアとか
参照代入とか
微妙な俺様用語使うのやめれ
0755デフォルトの名無しさん
2014/06/17(火) 17:05:41.46ID:HVt3rccc■ このスレッドは過去ログ倉庫に格納されています