Excel VBA 質問スレ Part14
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2010/01/06(水) 12:34:5801 http://pc11.2ch.net/test/read.cgi/tech/1054356121/
02 http://pc11.2ch.net/test/read.cgi/tech/1168308855/
03 http://pc11.2ch.net/test/read.cgi/tech/1180192018/
04 http://pc11.2ch.net/test/read.cgi/tech/1189814602/
05 http://pc11.2ch.net/test/read.cgi/tech/1197448064/
06 http://pc11.2ch.net/test/read.cgi/tech/1205231499/
07 http://pc11.2ch.net/test/read.cgi/tech/1212587819/
08 http://pc11.2ch.net/test/read.cgi/tech/1219673793/
09 http://pc11.2ch.net/test/read.cgi/tech/1228372971/
10 http://pc12.2ch.net/test/read.cgi/tech/1235332603/
11 http://pc12.2ch.net/test/read.cgi/tech/1241885130/
12 http://pc12.2ch.net/test/read.cgi/tech/1247566074/
13 http://pc12.2ch.net/test/read.cgi/tech/1254281104/
0850デフォルトの名無しさん
2010/03/26(金) 23:27:150851デフォルトの名無しさん
2010/03/26(金) 23:35:17このスレはVBAとPerl14
のスレなのになぜPerlネタが一切でてこないんだ?
0852デフォルトの名無しさん
2010/03/26(金) 23:49:260853847
2010/03/27(土) 19:33:47もう見てないかもしれないけれど
>>847のコードは
型宣言を 勘違いしてたみたい
変数 X1 X2 Y1 Y2 は Single型もしくはLong型で宣言するべきだった
Integer型だと少数点以下がカットされるので線が少しずれてる
さっきヘルプを見ていて気づいた
ゴメンね
0854デフォルトの名無しさん
2010/03/28(日) 03:21:33て、Longも駄目だろw
0856デフォルトの名無しさん
2010/03/28(日) 11:02:370857デフォルトの名無しさん
2010/03/28(日) 21:05:10CSVファイルをエクセルブック内のワークシートに貼り付けするとき、
Workbooks.Open Filename:=csvfile
Workbooks(csvfile).Worksheets.Copy after:=Workbooks(mybook).Worksheets("ファイル一覧")
Workbooks(csvfile).Close
こんな感じで簡単に貼り付けています。
csvファイルが5MBとかサイズが大きくても上のようなやり方で問題ないでしょうか。
csvファイルの先頭から1レコードずつ取得して貼り付けるという方法もネットから探し出せたんですが
どっちがいいのか判断しにくいです。
0858デフォルトの名無しさん
2010/03/28(日) 21:07:57趣味とか、基本的にはVBとか、やけにできる事務員とか、そんな感じですか?
0859デフォルトの名無しさん
2010/03/28(日) 21:21:120860デフォルトの名無しさん
2010/03/28(日) 21:35:38使用する英語の辞書のURLはhttp://www.alc.co.jp/です。
「apple」という単語を検索するとURLは
http://eow.alc.co.jp/apple/UTF-8/?ref=sa
となります。
ここで、英単語を検索した結果表示されたページから該当箇所を抜き出すというやり方が分かりません。
上記の「apple」の場合、「・apple」から「分節ap・ple」まで抜き出したいのです。
やり方がわかる方教えてください。
0861デフォルトの名無しさん
2010/03/28(日) 22:09:20* データの転載は禁じられています。
class="midashi"
0862デフォルトの名無しさん
2010/03/28(日) 22:25:225MBのCSVなんて動作遅くならないか?
速さをなんとかしたいならsqlでやる。
0863デフォルトの名無しさん
2010/03/29(月) 00:28:17VBA上から Webページのデータを取得するのは
そのWebページのソースを見て理解できないと無理
(そしてそれをどうVBA上からコントロールするかも)
ソースをみたけど
<DIV class=mr_10 id=resultList ondblclick=seow()>
ってのがあるから
id=resultList ←これを利用すれば
「・apple」から「《コ》アップル・メニュー」
までは抜き出せるね
あとはタグを辿っていくしかないかな
0864デフォルトの名無しさん
2010/03/29(月) 13:57:45やけにできる事務員だった
データの正規化やコピーする際に絶対にミスしないのが魅力的
速度自体は大して変わらん
0865デフォルトの名無しさん
2010/03/30(火) 10:59:35印刷したときに割り振られるページ数を、印刷せずにマクロで調べたいのですがどのような方法があるでしょうか?
このシートのこのセルは何ページ目に該当する、ということを調べて行きたいです。
プレビューで見ていけば可能ですがページ数が膨大なのでマクロで処理したいと思っています。
0866865
2010/03/30(火) 11:02:540867デフォルトの名無しさん
2010/03/30(火) 13:47:33『このシートのこのセル』はそもそもどうやって特定するの?
1シートで印刷するのは複数頁あるってこと?
0868865
2010/03/30(火) 16:43:41全シート走査で特定単語を置換していくので、
その置換処理が行われたときのセルを元に出力時のページをその都度
調べてワークファイルに書き出したいと思っています。
(置換処理、書き出す処理はできてます)
>1シートで印刷するのは複数頁あるってこと?
そうです。
1シートに1頁の場合と複数頁ある場合とがあります。
0869デフォルトの名無しさん
2010/03/30(火) 20:18:53検索→セル番地取得→セル番地から頁数割り出し
という作業をかませばいいんでないの?
0871デフォルトの名無しさん
2010/03/30(火) 21:41:450872デフォルトの名無しさん
2010/03/30(火) 22:13:52VPageBreak オブジェクト
HPageBreak オブジェクト
なんかどう?
0873872
2010/03/30(火) 23:30:03Sub test()
Debug.Print "改ページ数:"; ActiveSheet.HPageBreaks.Count
For Each a In ActiveSheet.HPageBreaks
Debug.Print "改ページ 行位置:"; a.Location.Row
Next
End Sub
0874デフォルトの名無しさん
2010/04/02(金) 07:24:45セルをダブルクリックして値入力状態であったり、モーダルで
バルーンを表示させていたりすると、Application.OnTimeに制御
が移らず、サブルーチンを起動できません。
これを回避する知恵をお持ちの方、ご教示願います。
0875デフォルトの名無しさん
2010/04/02(金) 16:52:52>セルをダブルクリックして値入力状態であったり、モーダルで
>バルーンを表示させていたりすると、
はどうするねん
別にexcel.applicationを起こしてそっちでontimeさせればええやん
0876デフォルトの名無しさん
2010/04/04(日) 19:32:11ピボットテーブルをVBAで作成しているのですが、
データによって(件数?)、集計の仕方が、
「個数/金額」になったり、「合計/金額」になったりします。
常に「合計/金額」になるようにするには、どうすれば良いのでしょうか?
コードは次の通りです。
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"ZZZWORK!R5C" & c_yymm_p & ":R" & lastrow & "C" & c_io_p).CreatePivotTable TableDestination:="", TableName:= _
"ピボットテーブル4", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("ピボットテーブル4").ColumnGrand = False
ActiveSheet.PivotTables("ピボットテーブル4").AddFields RowFields:=Array("分類", "科目") _
, ColumnFields:="年月"
ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Orientation = _
xlDataField
Application.CommandBars("PivotTable").Visible = False
ActiveWorkbook.ShowPivotTableFieldList = False
よろしくお願いします。
0877デフォルトの名無しさん
2010/04/05(月) 02:29:05ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Function = xlSum
0878876
2010/04/05(月) 08:04:46レスありがとうございます。
そのコードを追加したら、
実行時エラー'1004':
PivotFieldクラスのFunctionプロパティを設定できません。
になりました。どうすれば良いのでしょうか?
追加した位置は、下記のステートメントの次です。
ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Orientation = _
xlDataField
よろしくお願いします。
0879デフォルトの名無しさん
2010/04/05(月) 12:28:18フィールド名の「金額」の部分を自分の作ったテーブルに合わせて書き換える
テーブルの一番左上の灰色のセルの値を見る
0880878=876
2010/04/05(月) 17:07:07レスありがとうございます。
常に合計になるようにできましたm(_ _)m
0881デフォルトの名無しさん
2010/04/05(月) 18:37:42どのサブメニューを選択しても、同じSubプロシージャを呼び出したいです。
Subプロシージャ側で、どのサブメニューが選択されたかを知るにはどうすればいいでしょうか?
パラメーターとか使えますか?
参考になるサイトがありましたら紹介していただけませんか。
0882デフォルトの名無しさん
2010/04/07(水) 10:22:06OS WindowsXP sp2
Excel2007
以下のようなサンプルコードを実行するとVisible=falseにしたはずのBookが「Copyコマンド」発行直後に表示されてしまう。
※「コピー完了」ダイアログ表示時はBookが表示されてしまう。
Private Sub cmdCopy_Click()
Excel.Application.Visible = False
Call Sheets.Copy(Before:=Sheets(1))
MsgBox "コピー完了"
Excel.Application.Visible = True
End Sub
※2007以外のバージョンであれば「コピー完了」迄はBookは隠れたままである。
回避策有りますでしょうか?
同様の処理をAccessからExcelを遠隔操作で処理するとBookが表示された瞬間に、何らかのきっかけでフォーカスが与えられると処理が止まってしまいます。
どなたか回避策を教えてください。
0883デフォルトの名無しさん
2010/04/07(水) 13:10:420884デフォルトの名無しさん
2010/04/07(水) 13:15:25ヘルプ
なければCDやDVDから追加でインストールする
0885デフォルトの名無しさん
2010/04/07(水) 15:01:36それはどういうものですか?
単独で購入できるのですか?
それとも何かのソフトに付いているのですか?
0886デフォルトの名無しさん
2010/04/07(水) 16:28:15Wordの「あいまい検索」にあたるExcelでの関数は何になるのでしょうか?(´・ω・`)
MatchFuzzyを差し込んだらエラー吐いたんですが、Excelにはコレ無いのかな??
0887デフォルトの名無しさん
2010/04/07(水) 20:03:052007ではVBAのリファレンスはオンラインヘルプだけになってしまった。
Visual Basic Editorを起動したら、メニューバーのヘルプ→Microsoft Visual Basic ヘルプ→
Excel2007開発者用リファレンス→リファレンスを開くと、全オブジェクトの一覧が出てくる。
もしかしたら、MSDNライブラリにオフライン版があるかもしれんが、俺はよく知らん。
あるんならこっちが教えてほしいぐらい。
0888デフォルトの名無しさん
2010/04/07(水) 22:45:38エラー吐いたコード と エラー内容 を書きこんだ方が回答がつきやすいかも
0889デフォルトの名無しさん
2010/04/08(木) 00:06:13そんなもの入手して何するの?
オブジェクトブラウザとヘルプで十分だろ?
0890デフォルトの名無しさん
2010/04/08(木) 13:43:55おれの使ってる2000の場合は(>>887によれば2003までは)
VisualBasicEditorからヘルプ→MicrosoftVisualBasicヘルプを開けば
オフラインでもリファレンスを参照できた
>>885 CDとはいうまでもなくExcel(またはOffice)のCD-ROMのこと。
以前は、
Excel(またはOffice)の購入=Excel(またはOffice)のCD-ROMの購入
と同等なので
Excelの利用者はExcel(またはOffice)のCD-ROM持ってるはず。
2007以降は削除されたとの事なので、DVDにはないんだろうけど
0891デフォルトの名無しさん
2010/04/08(木) 14:22:540892デフォルトの名無しさん
2010/04/08(木) 14:35:25ありがとうございます
2002ですがそれと同じ手順で出てきました
もっとも昨日質問してからいろいろやっていて何とかたどり着いていたところでしたが
VBエディターのヘルプを開いても左側のコラムは出ない初期設定(もしくは当初闇雲にいじってそういう設定になってしまっていた)になっていたようです
それを変えると出てきました
0893デフォルトの名無しさん
2010/04/08(木) 14:36:11ありがとうございます
2002ですが出て来ました
0894デフォルトの名無しさん
2010/04/08(木) 17:22:07Excelは2003です。
コンボボックスを配置したシートを複数作り(シートのインデックスは1〜3)、
標準モジュールのauto_openで各シートのコンボボックスの内容を初期化しているんですが、
Excel起動時にauto_open内でSheets(1)のみを認識することができず、
「実行時エラー'32809'」が発生してしまいました。
しかもこの事象は全てのBookで発生するわけではなく、
コントロールをコピペしてきて同様の初期処理を組み込んだ他のBookでは
発生しません。
どなたかこのエラー発生の原因をご存知ありませんか?
0895デフォルトの名無しさん
2010/04/08(木) 17:30:542007では同名のファイルがダミーになってしまったのでヘルプが無くなったと思い込んでる人がいるようだが、
実はzip圧縮されたxml形式で格納されている。
わざわざダミーファイルを置いてる理由は不明。
0896デフォルトの名無しさん
2010/04/08(木) 19:11:17下のような処理で、1〜3、8〜10のどこかにブレークポイントをつければ
2つめのIfの中の処理をしてくれるのですが
はずすと1件も処理しません(3行目のIFでfalseになると思います)
ブレークポイントのあるなしで、なにか制御が変わってしまうんでしょうか?
2007です
1 For rowidx = 20 To lastrow
2 str1 = MotoSheet.Cells(s3row, 1).Value
3 If Len(str1) = 10 Then
4 If Mid(str1,3,2) = "**" Then
5 dcnt = dcnt + 1
6 いろいろ処理
7 End If
8 End If
9 LoopCnt = Loopcnt + 1
10 Next
0897896
2010/04/08(木) 20:52:00その上でやってるwebクエリーのせいだと思います。
0898デフォルトの名無しさん
2010/04/08(木) 23:36:14【2 Excelのバージョン】 Excel2002
【3 VBAが使えるか】 初心者です
【4 VBAでの回答の可否】 可
【5 検索キーワード】 private sub フォーム 呼び出せない
フォーム1にコマンドボタンを2個付けました。
そのボタンを押すとメッセージボックスでどちらのボタンが押されたかを表示するサンプルです。
フォーム『UserForm1』のコード
Private Sub CommandButton1_Click()
atai = 1
Call 選択表示
End Sub
Private Sub CommandButton2_Click()
atai = 2
Call 選択表示
End Sub
標準モジュール『module1』のコード
Public atai As Integer
Private Sub 選択表示() ’←をSubにすると実行できるがマクロ一覧に出てきてしまう。
If atai = 1 Then
MsgBox "押されたのは上のボタンです"
Else
MsgBox "押されたのは下のボタンです"
End If
End Sub
マクロ一覧に出したくないので『module1』のコードでPrivate Sub 選択表示()としたところ、『Subまたは Functionが定義されていません』とエラーが返ってきます。
Sub 選択表示()とすると実行出来るのですが、フォームからはPrivate Subは呼び出せないのでしょうか?
0899デフォルトの名無しさん
2010/04/08(木) 23:46:18Private指定したSubやFunctionは、そのモジュール以外の場所から呼び出すことはできない。
逆の言い方をすれば、他から呼び出して欲しくないとき、呼び出せないようにしたいときにPrivateを指定する。
解決策としては、Private Sub 選択表示() はmodule1ではなくUserForm1の中に書く。
0900デフォルトの名無しさん
2010/04/08(木) 23:58:45わかりやすい説明ありがとうございました。
すべてUserForm1に書いて、「Sub Auto_Open()」 で呼び出します。
誠にありがとうございました。
0901デフォルトの名無しさん
2010/04/09(金) 00:33:33sub と function の違いって値を返す返さないの違いとググる先生は言ってましたが、そもそもfunctionの存在意義ってあるんですか?
call subで代用出来るような気がするのですが、理解が難解なのを我慢して使う価値のある代物なのですか?
どういう時に使うのが有効なのかが私の理解力が低すぎて全く見えてこないので、何か良き実例などありましたら教えてください。
0902デフォルトの名無しさん
2010/04/09(金) 00:43:47逆にそういったものを作る必要が無いならSubで十分。
0903デフォルトの名無しさん
2010/04/09(金) 02:19:00逆だよ。
SubはFunctionで代用できるけど、逆は難しい、というかかなりめんどくさい。
もしどちらかに統一するとしたら、Subを廃止してFunctionを残すだろうね。
簡単なマクロはSubだけで作ることが多いからFunctionはいつ使うの?って思うかもしれないけど、
自分で作らなくてもシステムに用意されているFunctionを普段からたくさん使ってるんだよ。
たぶん、知識が足りなくて気が付いてないだけ。
0904デフォルトの名無しさん
2010/04/09(金) 02:35:11たくさんプログラム作ってくうちに理解できるようになるよ。
気が付くと、毎回同じ記述してることあったりするからw
そういうのをFunctionで作っておいて、あちこち使いまわしできると楽になる。
0905デフォルトの名無しさん
2010/04/09(金) 06:43:08Declare Function SetSysColors Lib "user32" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long
Sub 黒白反転()
Dim rc As Long
rc = SetSysColors(1#, 5#, 0#): rc = SetSysColors(1#, 8#, 16777215#)
End Sub
0906デフォルトの名無しさん
2010/04/09(金) 10:06:49> 2007ではVBAのリファレンスはオンラインヘルプだけになってしまった。
オフラインコンテンツあるけど?
0907デフォルトの名無しさん
2010/04/09(金) 13:27:04>2003まではOfficeフォルダのvbaxl10.chmをダブルクリックすればVBAのリファレンスを直接見ることができた。
2002ですが見ることが出来ました
同じく2002のVisual Basic Editorのヘルプで出てくる「Visual Basicのランゲージリファレンス」とはまた違いますね
0908デフォルトの名無しさん
2010/04/09(金) 14:43:18Range型の変数にオブジェクトがセットされているかの
判定方法がわかりません。
複数のテキストボックスにセル範囲(a1:g5など)を入力してもらい
unionで繋げているのですが
if tbox1.txt <> "" then
set r = range(tbox1.txt)
end if
if tbox2.txt <> "" then
set r = union(r,range(tbox2.txt))
end if
.
ここでunionの前にRange rにオブジェクトがセットされているかの
判定を入れてtbox1が空白の時の対応をしたいのです
0909デフォルトの名無しさん
2010/04/09(金) 15:23:28ワードアートを作成したのですが、その設定に
With Selection.ShapeRange.Width = WD * 0.7
(WDの変数にはSelection.Widthがはいってます)
とかやってるんですが、幅が変わらず・・・
ググりつかれました・・・
知っている方がいれば教えてください。
0910デフォルトの名無しさん
2010/04/09(金) 15:33:13オフラインにしてるか?
0911デフォルトの名無しさん
2010/04/09(金) 16:10:06HDD節約のためにカスタムインストールでヘルプをインストールしない設定にしてるとか
0912デフォルトの名無しさん
2010/04/09(金) 16:19:53変数 r が
Dim r As Range
のようにRangeオブジェクト型としてきちんと宣言してあれば、r が空なら
If r Is Nothing Then
で判定できる。これが正攻法。
まあ、もうちょっと手を抜くなら
If tbox1.txt <> "" And tbox2.txt <>"" Then
Set r = Range(tbox1.txt & "," & tbox2.txt)
Else
Set r = Range(tbox1.txt & tbox2.txt)
End IF
みたいに文字列の段階で結合してしまうのも一つの方法だし、
さらに手を抜くなら On Error でエラーを無視して続行するという手もある。
0913デフォルトの名無しさん
2010/04/09(金) 16:28:152007はオートシェイプのマクロが作りにくいからなあ。
(1) そのWithの使い方はおかしい
(2) セル範囲じゃなくてちゃんと図形がSelectされてる?
とりあえず模範解答
ActiveSheet.Shapes("WordArt 1").Select
WD = Selection.ShapeRange.Width
Selection.ShapeRange.Width = WD * 0.7
0914デフォルトの名無しさん
2010/04/09(金) 16:35:51ActiveSheet.Shapes("WordArt 1").Select
With Selection
WD = .ShapeRange.Width
.ShapeRange.Width = WD * 0.7
End With
0915908
2010/04/09(金) 16:51:08解決しましたありがとうございます。
IsNothing(r)
IsNull(r)
If r.IsEmpty
If r.IsNothing
などは試していたのですが
If r Is Nothing Then
という書き方があるんですね
勉強になりました。
0916デフォルトの名無しさん
2010/04/09(金) 17:23:01>>914
レスありがとうございます。
すいません、初心者なもので・・・
言葉足らずだった様ですので、補足です
ActiveSheet.Select
'変数の宣言(位置設定用:上位置、左位置、高さ、広さ)
Dim tp, lf, ht, wd
tp = Selection.Top
lf = Selection.Left
ht = Selection.Height
wd = Selection.Width
ActiveSheet.Shapes.AddTextEffect(msoTextEffect1, "てすと1", "MS P明朝", 18# _
, msoFalse, msoFalse, lf + (wd / 2 - wd * 0.35), tp - 4).Select
0917デフォルトの名無しさん
2010/04/09(金) 17:25:12'フォント内側の色指定
.Characters.Font.Color = RGB(255, 0, 0)
'フォント外側の色変更
.ShapeRange.TextFrame2.TextRange.Font.Line.ForeColor.RGB = RGB(255, 0, 0)
'ワードアートの大きさ調整
.ShapeRange.Width = wd * 0.7
End With
End Sub
上記で一応、指定していると思います。
で、選択範囲の中央付近に文字を持って来て、
文字を選択範囲の割合にたいして伸び縮みさせたいんですが・・・
これではワードアートの文字ではなく、わくの幅のみの変化となり、
文字に影響が無いんです。
excel2007の、ワードアートスタイル-文字の効果-変形-四角の効果
をvbaで指定できれば理想的かと思うんですが・・・
長文すいません
よろしくお願いします。
0918デフォルトの名無しさん
2010/04/09(金) 17:50:05Dim r As Range で Rが自動で大文字にならずDim r As Rangeとなるのは2003の仕様ですか?
あと、プロパティだとrowsだと大文字になるのにrowだとなりません。
0919デフォルトの名無しさん
2010/04/09(金) 17:53:28○ Dim r As rangeとなるのは
変数もrだったし例えが紛らわしかったですw ごめんなさい。
Rowsと自動大文字されるのにrowは自動で大文字にならないって事です
0920デフォルトの名無しさん
2010/04/09(金) 19:59:21うっかり最初に「range」と入れてしまうと、
消した後で改めて大文字で始めても勝手に小文字に直されてしまうとか、
そんな感じじゃなかったっけ?
0921デフォルトの名無しさん
2010/04/09(金) 20:42:41正しく入力すればちゃんと大文字になる。
ならない時は、どこか間違えてる。はず。
前後の行もよく確認。
>>920
それはユーザー定義名の場合。変数名とか関数名とか。最後に入れた方に自動的に統一される。
0922デフォルトの名無しさん
2010/04/09(金) 22:44:291 "dim r as range"と打ってEnter→"Dim r As Range"になる
2 全部削除
3 "dim range"と打ってEnter→"Dim range"になる
4 全部削除
5 "dim r as range"と打ってEnter→"Dim r As range"になる
0923デフォルトの名無しさん
2010/04/10(土) 01:01:00rangeが変数名として記憶されちゃったのか
どこまで戻ればリセットされるんだろう
小文字のままでもちゃんとRangeオブジェクトとして動作するから
ソースエディタのバグと言っていいのかな
0924918
2010/04/10(土) 01:37:24>>922に従って
dim Range(Rは手打ちで大文字)
dim Row(Rは手打ちで大文字)
とバリアントで宣言するとそれ以降は自動変換に戻りました。
逆に、小文字で宣言すると以降の自動変換なくなりました。全く訳の分からない仕様ですw
0925デフォルトの名無しさん
2010/04/10(土) 02:18:05それは自動変換がなくなったんじゃなくて、小文字に自動変換されてるんだよ
dim rowと入れてからROWと入力するとrowに変換される
0926デフォルトの名無しさん
2010/04/10(土) 03:06:19宣言していないモジュールの同名変数に「コンパイルエラー: 名前が適切ではありません」って出て困ってます。
エラーの出たシートの宣言セクションに同じようにpublicで宣言するとエラー回避出来ますがpublicの意味が無い気がします。
とにかく何でも参考にして欲しいので色々書いておくと
@全部標準モジュール
A全部の宣言セクションにOption Explicit
B当たり前だけど変数名とsubもしくはfunctionに同名は無し
Cその変数を一番使ってるシートで宣言しないといけないとかいうルール?
D2003 XP
結構困ってます。宜しくお願いします。
0927デフォルトの名無しさん
2010/04/10(土) 04:03:52そのエラーは変数のスコープじゃなくてプロシージャ名の重複
ttp://windyakin.if.land.to/src/up38_2022.png
0928デフォルトの名無しさん
2010/04/10(土) 06:10:40Excel2007でワードアートの文字サイズを変更するには
'ワードアートの大きさ調整
.ShapeRange.TextEffect.PresetShape = msoTextEffectShapePlainText '←この1行を追加
.ShapeRange.Width = wd * 0.7
0929926
2010/04/10(土) 10:34:21ここで質問する前、最初自分で調べた時も確かにそんな事書いてあったんですが、
でも実際変数が青囲み(選択状態?)になってエラーメッセージが出て困ってココに来たと・・・
勿論変数と同名のプロシージャ・プロシージャ名の重複は無しだったはずなんですが。
0930デフォルトの名無しさん
2010/04/10(土) 11:21:310931デフォルトの名無しさん
2010/04/10(土) 17:36:59二つのブックを開いている状態で、裏側に隠れている方のブックをマクロで
OnTimeを使って自動クローズします。
(この際、Before_Close内部で一部のシートを非表示にします。)
次にそのブックを開いたとき、シートが未選択の状態(シートが表示される
領域部分が真っ白)になってしまうのですが、解決手段はありますか?
0932デフォルトの名無しさん
2010/04/10(土) 17:46:30これだけだ。
0933デフォルトの名無しさん
2010/04/10(土) 21:20:340934デフォルトの名無しさん
2010/04/10(土) 21:23:550935デフォルトの名無しさん
2010/04/11(日) 13:22:31→真下にずらして計算結果セルをコピー
→ずらしてコピーした行数だけ計算元もずらして計算する
これをVBAでやろうと思っても、一番最初の計算結果そのまま全コピーしてしまいます。
おそらくcellsの中身が変数だからだと思うんですが、何か良い方法はありませんか?
今は仕方ないのでfor i 使っていちいち全セル計算させてますが遅いです・・・
0936デフォルトの名無しさん
2010/04/11(日) 14:03:01セルをコピーする時、代入するんじゃなくてCopyメソッドを使う
0937デフォルトの名無しさん
2010/04/11(日) 14:30:02文字列なら追加できるみたいなのですが、自分で作ったクラス等はCollectionに格納出来ない仕様なのか、単に文法ミスなのか教えてもらえますでしょうか?
Dim testCollection As Collection
Dim a発注 As C発注
Set testCollection = New Collection
Set a発注 = New C発注
testCollection.Add (a発注) 'ここでエラーが発生する
0938デフォルトの名無しさん
2010/04/11(日) 14:52:03testCollection.Add Item:=a発注
又は
testCollection.Add a発注
じゃないかな
ちなみに自分は
testCollection.Add Item:=New C発注
って書いてる
0939デフォルトの名無しさん
2010/04/11(日) 14:58:57ありがとうございます上手くいきました、なかなかステートメントと関数の違いになれられないですOrz
参照と実体で微妙に違う文法にも・・・
久々のBasicで、ああそういえばこんなのがというのがいっぱいです
0940938
2010/04/11(日) 14:59:49testCollection.Add a発注
はダメかも
0941デフォルトの名無しさん
2010/04/11(日) 15:00:390942デフォルトの名無しさん
2010/04/11(日) 15:10:470943デフォルトの名無しさん
2010/04/11(日) 15:56:560944デフォルトの名無しさん
2010/04/11(日) 16:08:070945デフォルトの名無しさん
2010/04/11(日) 16:12:090946デフォルトの名無しさん
2010/04/11(日) 16:55:001*(1+1)みたいに(a発注)の部分が先に実行され、
a発注がデフォルトプロパティーを持たないからエラーになったってことか、なるほど。
0947デフォルトの名無しさん
2010/04/11(日) 17:40:37VBにはあるのにVBAにはないメソッドとかイベントとかクラスとかいっぱいあるじゃん
0948デフォルトの名無しさん
2010/04/11(日) 19:06:48VBと統合して.NETframeworkで動くようにしてくれれば非常にありがたいんだが
0949デフォルトの名無しさん
2010/04/11(日) 20:07:210950デフォルトの名無しさん
2010/04/11(日) 20:20:49レス数が950を超えています。1000を超えると書き込みができなくなります。