[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/27 15:50 / Filesize : 259 KB / Number-of Response : 921
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA質問スレ Part9



1 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 15:42:51 ]
ExcelのVBAに関する質問スレです

前スレ pc11.2ch.net/test/read.cgi/tech/1219673793/

★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。

★2 ExcelのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
   
 VBAとは、『Visual Basic for Application』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。 
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。

★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)


449 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:03:37 ]
>>446
Mac版の2008ではなくなったけど、その次でまた復活する予定。
Win版はなくならない。

450 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:18:53 ]
>>449
サンクス
本職はC++だけどVBA使えると経理の女の子から結構重宝されるので助かる

451 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:29:12 ]
てか、事務職でVBAって何に使うんだよw

452 名前:デフォルトの名無しさん [2009/01/07(水) 23:49:34 ]
1行目が項目名で、2行目から201行目までデータが入っています。
オートフィルター後のA列のデータを取得したい。
どんなマクロになりますか?



453 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:20:50 ]
うぇー Workbook.Save False すると Wrokbook_Before_Close動かん

454 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:29:40 ]
>>452
オートフィルタの実行はAutoFilterメソッド
結果を配列として取り出すのはCurrentRegion.SpecialCellsメソッド

>>451
単純作業をVBAで自動化してやるとけっこう喜ばれるよ
毎日在庫を確認して発注伝票を印刷してFaxで送信するとか
中小だとアバウトな部分が多くて完全な自動化は難しいから
できるところだけやる

455 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:35:23 ]
>>451
どんだけ想像力ねぇの?

456 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:35:29 ]
下記のような感じで、セルに他のセルを参照した値を入力したいのですが、
下記の入力方法だと、絶対参照になってしまいます。
相対参照にする指定方法をご存じないでしょうか?

Cells(i + 1, 9).Value = "=" & Cells(i, 9).Address & "+" & Cells(i + 1, 6).Address

457 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:43:52 ]
>>451
Officeって言うくらいだから・・・



458 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:53:51 ]
>>456
Cells(i, 9).Address(False, False)

459 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:14:30 ]
OS:WinXP
Ver:Office2000

以下のマクロが意図したとおりに動きません。
aの値によってaddstに入力した値に異なる係数をかけた値を作りたいのですが、
係数をかけたはずのaddをセルに入力してみるとゼロになっています。
参考文献にはCaseの後はコンマで区切って複数条件を入れれるとありますが、
それはできないのでしょうか。。
なおプログラム自体は上記係数を無視する他は問題なく動いています。

Dim a As Integer
(中略:aはFor構文で1から18まで増える)
Dim addstd As Double
Dim add As Double

addstd = 0.3
Select Case a
Case 3, 4, 8, 11, 13, 18
add = addstd
Range("A5").Value = add
Case 2, 6, 7, 10, 15, 17
add = addstd / 2
Range("A5").Value = add
Case 1, 5, 9, 12, 14, 16
add = addstd / 3
Range("A5").Value = add
End Select

460 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:22:28 ]
>>458
ありがとう

461 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:49:40 ]
>>459
表示形式

462 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 02:57:09 ]
ウォッチやDebug.Printで値を見るくらいは自分でやれよ

ほんと、VBA使いって問題起こるとそこで思考停止してしまい
試行錯誤することが出来ない奴が多いよな

エラー出たらそこで終わりってなら機械と同じだぜ
処理速度では機械に敵わないんだから機械以下とも言える


463 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 06:24:19 ]
多いって何人だよ

464 名前:459 mailto:sage [2009/01/08(木) 08:48:02 ]
ありがとうございます。ググってみました。
もしかすると、これに近い問題でしょうか。
questionbox.jp.msn.com/qa2390763.html

また、デバッグ方法もありがとうございました。
VBAというか、プログラミング的なものを初めて2日目なもので、まだよく使い方がわかっていませんでした。
今から会社に行っていろいろ試してみようと思います!

465 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 09:05:06 ]
>>459
計算自体はできてるようなので
書式設定の少数点以下の桁数が0になってるんじゃ?

466 名前:デフォルトの名無しさん [2009/01/08(木) 09:52:07 ]
非アクティブシートの選択セルを操作する事は可能ですか?

467 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 10:48:21 ]
無理



468 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:28:00 ]
VBAを作成してもらいたいのですが
もし作成していただけるようでしたらメールをお願いします。

1つの縦列から文字や数字を抽出し、横行書き出す作業を繰り返すマクロの作成をお願いしたいです。

469 名前:468 mailto:s.rika1990@gmail.com [2009/01/08(木) 15:30:04 ]
メール入力し忘れてました(´A`)

470 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 19:05:09 ]
幾ら出すの?

471 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 19:42:27 ]
カラダで良かったら...

472 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 20:41:14 ]
>>468
形式を選択して貼り付け→行列を入れ換える

473 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:45:40 ]
EXCELのWebブラウザでプレビューの機能を使って作ったブラウザをVBAで閉じるにはどうしたらいいんですか?

474 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 00:43:19 ]
Webbrowser.Fuck

475 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 00:44:26 ]
OS:XP
Version:2003

取得したデータをセルに表示させる処理を作ったのですが
少し処理速度が遅いので、配列を使って処理しようと思っています。
その際、特定データに対してセルの色付けを行っているのですが
配列を使って最後にRangeオブジェクトで貼り付ける場合、どのタイミングで
セルに色付けするのがいいんでしょうか?

配列に入れる処理中に色付けをするぐらいしか思い浮かばないのですが
どなたか知恵を貸して下さい


476 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 00:50:04 ]
> 配列に入れる処理中に色付けをする
それでいいじゃん、何か問題有るの?

477 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 03:10:36 ]
>>473
穴だらけのコードだけど、とりあえず…
環境依存かもしれない

Option Explicit

Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const GW_HWNDLAST = 1
Public Const GW_HWNDNEXT = 2
Public Const WM_CLOSE = &H10
Public Const ml = 255
Dim wh1 As Long

' コールバック関数
Public Function EnumWindowsProc(ByVal Handle As Long, ByVal lParam As Object) As Long
  Dim strClassName As String * ml
  Dim strCaption As String * ml
  GetClassName Handle, strClassName, ml  ' クラス名取得
  GetWindowText Handle, strCaption, ml    ' キャプション取得
  If Left(strClassName, 7) = "IEFrame" And Mid(strCaption, 4, 22) = "Documents and Settings" Then wh1 = Handle
  EnumWindowsProc = True
End Function

Private Sub test1() '「ブラウザでプレビュー」を閉じる
  wh1 = 0
  Dim Ret As Long
  Ret = EnumWindows(AddressOf EnumWindowsProc, ByVal 0&)
  If wh1 <> 0 Then Call PostMessage(wh1, WM_CLOSE, 0, 0)
End Sub



478 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 09:28:53 ]
>>475
とりあえず大雑把なアドバイスをしておく

できる限りセルへのアクセスを減らす

決まった色の取得にRGBを何度も呼ばない
定数を使うか初期化の段階でLong型の変数に入れておいてそれを使う

的外れなアドバイスだったらスマソ
具体的にどんな処理をしてるのか分かればもう少し細かく何か言えるかも知れん

479 名前:デフォルトの名無しさん [2009/01/09(金) 16:28:17 ]
名前の定義のリストをシートに作成し、それを変更して一気に登録しています。
そこで困った事が発生しました。

シート名がS1とかだと名前の前後にシングルコーテーションが付きますね。
セルから取り出した値は先頭の1文字が外されます。
仕様だとは思いますが、シングルコーテーションも一緒に取り出す方法等が
あるのでしょうか?



480 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 16:45:36 ]
>>479
リストを作る時に先頭にシングルコーテーションをもう1つ入れておく
もしくはシート名と名前で列を分ける(使う時に編集する)

この程度しか思いつかないな・・・

481 名前:452 [2009/01/09(金) 23:15:14 ]
452 :デフォルトの名無しさん:2009/01/07(水) 23:49:34
1行目が項目名で、2行目から201行目までデータが入っています。
オートフィルター後のA列のデータを取得したい。
どんなマクロになりますか?

>454 :デフォルトの名無しさん:2009/01/08(木) 00:29:40
> >>452
> オートフィルタの実行はAutoFilterメソッド
> 結果を配列として取り出すのはCurrentRegion.SpecialCellsメソッド
との答えをいただき、
いろいろとやってみるのですが、全くのお手上げ状態です。

フィルター後の上2件分の例示マクロをお願いします。


482 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 23:25:47 ]
>>481
もうちょっと質問を具体的に。
(1)フィルターの条件は?
(2)フィルターかけたあとどうしたい?

483 名前:452 [2009/01/10(土) 00:31:08 ]
(1) フィルターの条件はデータが1又は0となっているので、1を該当データとしてかけています。
(2) フィルターをかけた後は可視セルを対象に、「A列の各コード(3桁)を取得したい。」
おおよそ、20〜50件程が該当データになります。
取得した後の配列から、その各要素を取り出すことは自分でできると思います。
随分以前ですがやったことはありますので。



484 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 01:11:17 ]
>>483
1か0か判定するだけなら、わざわざオートフィルタ使わなくてもForループで順に見てけばいいんでない?
要素数も大して多くないんだし。とりあえず…

B列が1の物だけをオートフィルタで抽出
Range("A1").AutoFilter Field:=2, Criteria1:="=1"

A列の可視セルの内容をすべて書き出す
For Each c In Range("A1").CurrentRegion.Columns(1).SpecialCells(xlCellTypeVisible).Cells
  Debug.Print c.Value
Next

485 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 08:15:13 ]
VBAを用いてプリンタに印刷させようと考えています。
それ自体はPrintOutメソッドを使えばできると思っているのですが、その際、プリンタのトレイまで指定することは可能でしょうか。
例えば、このシートを印刷する時はA4のトレイ、このシートを印刷する時は手差しのトレイから、という感じで。

486 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 09:20:27 ]
>>485
出来るよ
手動でトレイの選択などが出来る状態なら
その辺の制御をするドライバやAPIは入ってるわけだから
それをプログラムから叩けば良いだけ

でもそれはVBAではなくVBの分野(>>1参照)
印刷対象がExcelのシートだろうと、プリンタのハード的制御はExcel関係ないのでスレ違い

487 名前:452 mailto:sage [2009/01/10(土) 10:10:00 ]
>>484
おかげで、所期目的が達成できました。サンクス。




488 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 11:09:59 ]
>>485
>それ自体はPrintOutメソッドを使えばできると思っているのですが、・・・

484氏の回答を得て、機嫌がいいので (~_~);
そうゆう設定は、PrintOutメソッドでは出来ない。
それで、vbaとしての回答は、印刷ダイアログボックスを呼び出して、選択することになる。
Application.Dialogs(xlDialogPrint).Show

但し、excel4マクロ(vbaではない扱いをされている)の世界だとどうだか知らない。
(xpでは見ていないが、97(たぶん?)と)2007ではマクロの記録で、また、
excel4マクロが記述されている。が、これは、触らない方が無難。


489 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 11:17:02 ]
xp は2003 の誤記です。

490 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:30:56 ]
↓のようなWindowオブジェクトの用途がよくわかりません。

Dim window1 As Window

workbookでもなくworksheetでもないんですよね??
どなたかご教授お願いします。

491 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:53:34 ]
用途が判らなければ、使わなければいいのでは?

492 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:04:46 ]
>>490
大雑把に説明すると、Windowsというのは画面上に表示された状態の物。
ブックやシートは画面に表示されてなくても、例えばHDDに保存されたファイルの中にも存在する。
ブックを開いたらWindowが作られる、みたいに考えておけばいい。

493 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:44:48 ]
>>492
ありがとう。
自分が作るプログラムには特に必要はなさそうです。
自分のPCでは
Set window1 = Workbooks(1) 
でwindow1には”PERSONAL.XLS”が入ります。
勉強になりました。

494 名前:デフォルトの名無しさん [2009/01/11(日) 20:05:41 ]
A(伝票番号)B(日付)C(店名)D(金額)
となっていて、C列の店名ごとに並べ替えてあります。
C列の店名が変わるごとに列A〜Dに太線を入れたいので以下のようにしました。

Sub test()
With Range("C1", Range("B65536").End(xlUp)).Offset(, 250)
.Formula = "=IF(C2="""","""",IF(C1<>C2,1,""""))"
.Value = .Value
On Error Resume Next
With Intersect(.SpecialCells(xlCellTypeConstants) _
.EntireRow, Range("A:D")).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
End With
On Error GoTo 0
.ClearContents
End With
End Sub

これだとデータが1件(1行分)しかない場合線が引けません。
データが1件でも区切り線が引かれるようにするには
どのようにすれば良いですか?


495 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:24:15 ]
>>494
努力だけは認めるが、無駄が多すぎる。
店名が同じかどうか判定するのに、わざわざワークシート関数なんか使わなくてもVBAだけでやればいいだろうに。
Sub test()
  r = 2
  While Cells(r, 3) <> ""
    If Cells(r, 3) <> Cells(r - 1, 3) Then
      With Range(Cells(r, 1), Cells(r, 4)).Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThick
      End With
    End If
    r = r + 1
  Wend
End Sub

496 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:37:40 ]
>>495
考えすぎたみたいです。解決しました。
ありがとうございましたm(_ _)m

497 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:43:27 ]
>>494
オレの知らないテクニック満載で何やってんのか理解できねえ



498 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:46:09 ]
すみませんw

499 名前:デフォルトの名無しさん [2009/01/12(月) 07:19:54 ]
2007の質問ですー
図形の操作がらみが「マクロの記録」に残らないんですが
以前のバージョンのように記録させる方法ないでしょうか?

500 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 08:23:04 ]
>>499
ない

501 名前:デフォルトの名無しさん [2009/01/12(月) 17:55:50 ]
初歩的な質問で申し訳ありません。教えていただけますでしょうか。

下図@のように、クラスと番号と氏名が入力されているファイルがあります。
下図Aのように、クラスと番号のみが入力されているファイルがあります。
クラスと番号の2つをキーに、図@からAに氏名をとってきたいのですが、
どのようにしたら良いでしょうか。
キーが1つであれば、VLOOKUPで出来るのですが、2つになって困っています。
宜しくお願いします。

図@            図A
クラス 番号 氏名     クラス 番号
1   1  相沢      1   1
1   2  加藤      1   2
1   3  佐藤      2   1
1   4  館山      2   2
2   1  安西      2   3
2   2  木村      
2   3  工藤


502 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 17:57:54 ]
Excel総合相談所 76
pc11.2ch.net/test/read.cgi/bsoft/1228655230/942

942 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2009/01/12(月) 17:51:11
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 VLOOKUP 値の取り出し

下図@のように、クラスと番号と氏名が入力されているファイルがあります。
下図Aのように、クラスと番号のみが入力されているファイルがあります。
クラスと番号の2つをキーに、図@からAに氏名をとってきたいのですが、
どのようにしたら良いでしょうか。
キーが1つであれば、VLOOKUPで出来るのですが、2つになって困っています。
宜しくお願いします。

図@            図A
クラス 番号 氏名     クラス 番号
1   1  相沢     1   1
1   2  加藤     1   2
1   3  佐藤     2   1
1   4  館山     2   2
2   1  安西     2   3
2   2  木村      
2   3  工藤



503 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:11:53 ]
こんなスレにホイホイ質問して良かったのか?
俺はマルチポストでも構わず答えちまう男なんだぜ。

俺なら、どっかのセルにクラスと番号を結合させた物を作る。
cells(i,1).value & "-" & cells(i,2).value をforでまわしてどっかに作る。
図1と図2に同じ処理。
後はfindでsetするなり、好きに料理しろ。

504 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:50:33 ]
実行中のマクロより呼び出すことで、実行を中断しデバッグ可能な状態にする
コマンドはありますか?

マクロの自動記録で試しましたが記録されませんでした。


505 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:58:38 ]
>>504
勘違いかも知れんが、Stopとかブレークポイントの事か?

506 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:28:43 ]
>>505
そうです。
ブックを開いてマクロ実行する運用の中で、
一定の条件が成立した時に止めたいのですが、
ブックを開く度にブレークポイントを手動で設定するのは
現実的ではないのでブレークポイントはちょっとNGと思ってます。
イメージとしては以下のような感じです。

if xxxxx then
application.stop ← ここで止めたい
end if

ブレークポイントをマクロより動的に設定できるか、
ブックに保存できる方法でも助かります。


507 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:30:16 ]
>>506
errとerr.number使えばいいんじゃねーの?



508 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:34:30 ]
MsgBoxやInputBox出せばそこで止まるぞ
止まったらEsc押すといい

509 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:37:15 ]
>>508はダメだった、すまね

510 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:53:25 ]
じゃあSTOPでいいんじゃね?
止まったところでイミディエイトウィンドウで変数の内容を見たり書き換えたり自由にできる。

実行再開はCONT (嘘)

511 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:58:17 ]
SendKeys "{Break}"

ごめん嘘

512 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:58:50 ]
debug.assert false じゃダメなん?


513 名前:505 mailto:sage [2009/01/13(火) 17:18:25 ]
>>506
そのままでいいじゃん
for i=1 to 5


514 名前:505 mailto:sage [2009/01/13(火) 17:20:27 ]
>>506
途中で送信してしまった

for i=1 to 5
  if i=3 then
    stop
  endif
next i

みたいに。

515 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 20:24:40 ]
単に止めるだけなら
for i=1 to 5
  if i=3 then stop
next i
って書く。

516 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 21:12:47 ]
俺は処理が1行でもThenの後ろには書かない
もちろん、If ... Then ... else ...もやらない

517 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 21:36:38 ]
>>514
>>515
ありがとうございました。
stopで止まりました。




518 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 21:51:33 ]
>>516
すいません
そのわけを教えてください

519 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 22:15:21 ]
クラスモジュールについてドップリ勉強できる書籍はないだろうか?

520 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 22:39:31 ]
勉強するほどのものじゃないんじゃ

521 名前:デフォルトの名無しさん [2009/01/13(火) 22:54:17 ]
IPアドレスを
123.456.789.10
からx番目のIPアドレスを求めるような
EXCEL関数かVB関数を探してるのですが、
そんな便利なものありませんか?


522 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:17:28 ]
x番目って何よ?

523 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:23:36 ]
Split("123.456.789.10", ".")(x)でいいんじゃねーの

524 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:25:33 ]
>>522
すみません。
123.254.90.10から
1番目は、123.254.90.11
2番目は、123.254.90.12、

という意味です。
上のIPアドレスの範囲も間違えて、あぁぁぁ、出直してきます。
失礼しました。。。。


525 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:28:29 ]
単なる足し算じゃね

526 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:02:10 ]
うーん
Sub test()
  For x = 1 To 10
    A = Split("169.254.100.10", ".")
    A(3) = A(3) + x
    Debug.Print Join(A, ".")
  Next
End Sub

527 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:48:01 ]
123.254.90.256とかやりそうな奴だな



528 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 20:38:53 ]
123.54.90.999 とかやってくれたら笑えるんだけど

529 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 00:29:42 ]
OSはXP
EXCELは2003です。

1.EXCEL上に別のEXCELシートを開くハイパーリンクを貼る
2.リンク先のシートが開くと同時に

Private Sub Workbook_Open()
Workbooks("Book1").Close
End Sub

みたいな感じで処理を走らせ、リンクで開いたシート自体を閉じる

のような処理を入れるとシートが閉じられた後、EXCELがおかしくなります。
アクティブになっているEXCELシート以外のシートがアクティブにできないし、
新たに別のシートも開けなくなります。

ハイパーリンクとリンク先のシートを閉じる処理って同時には行えないんですかね?

530 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 01:01:19 ]
>>529
イベント処理中でブックを閉じると実行中のインスタンスが開放されて暴走するんだっけ、
なんかそんなのがあったような気がする。

531 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 03:44:25 ]
開く方に
Book1閉じるって書くしかないんじゃね

532 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 04:02:02 ]
マクロ専用のブックを1つ用意して、それは閉じないようにするとか

533 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 18:17:44 ]
すみません。質問させて下さい。

Excel2002のシートにラベルコントロールを貼付けました。
それをクリックすると、マウスカーソルがコントロールから離れるまで
コントロール全体のサイズが若干大きくなってしまいます。
これは仕様でしょうか?
もし対処方がありましたら、御教示下さい。

534 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 18:20:29 ]
>>533
フォーカス位置を示す点線で囲まれた状態のことを言ってんなら、それは仕様

535 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 18:37:33 ]
>>534
回答ありがとうございます。

ラベルのキャプションのテキストのサイズも変化するので、
フォーカスの点線ではないと思われます。

キャプションのテキストは通常状態ですと文字が滲んでおり、
クリックしてラベル全体が大きくなると文字がハッキリすることから、
ラベルをクリックしたときのサイズが正しいような気がします。

536 名前:デフォルトの名無しさん [2009/01/15(木) 19:37:27 ]
質問です。

book1をアクティブにした状態のまま、book2の特定のセルに書き込みをしたいのです。
で、

Windows("book2.xls").Cells(1, 2) = 1

とやったのですが、エラーが出ます。
正しくはどうやればいいのでしょうか?

537 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 22:06:50 ]
× ブック.セル = 値
○ ブック.シート.セル = 値




538 名前:デフォルトの名無しさん [2009/01/16(金) 18:33:12 ]
すいません質問です。
VBAを使い年賀状を作成しなければならないのですが まず何からどうしたらよいかさえわかりませんm(_ _)m
お願いします。汗

539 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 18:40:34 ]
まずは作成しなければならない状況に陥らせた人に聞くべきだろう

540 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 18:48:41 ]
マクロ記録しながらシートで作ればいいよ

541 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:00:27 ]
この時期だと年賀状じゃなくて寒中見舞いだぞ

542 名前:536 [2009/01/16(金) 19:27:50 ]
>>537
レスありがとうございます。

さっそくやってみました。

Windows("book1.xls").Sheets("Sheet1").Cells(1, 2) = 1

とやったのですが、やはりエラーが出ます。
なぜなのか、さっぱりわかりません。
しつこいようですが、教えて下さい<(_ _)>

543 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 20:03:41 ]
ちょっとはぐぐれよ。オブジェクト名やメソッド名がおかしいだろ。

Sub test()
  Workbooks("book1.xls").Activate
  Workbooks("book2.xls").Worksheets("Sheet1").Cells(2, 1) = 1
End Sub

544 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:03:00 ]
Excel 2000ですがマクロのステップ数が大きくなると、
ブックのファイルサイズがMB単位で肥大化して困ってますが、
皆さんどうしてますか?

545 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:17:27 ]
そんな現象おきないのでどうもしてないが

546 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:24:57 ]
どんだけ巨大なマクロを作ってるんだか。
ワークシートを操作するマクロを何度も走らせるとファイルが太る可能性はあるが、
それならシートの再構築でダイエットできるかもしれない。

547 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:27:09 ]
以下の構成で、hogeよりfugaにあるクラスを生成(new)しようとすると、
「ユーザ定義型は定義さていません」エラーとなります。
クラスでないモジュールの場合はそのまま呼び出せてます。
名前空間の問題と思われますが解決方法はありますでしょうか?

hoge.xls → fuga.xla(参照設定)




548 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:31:21 ]
>>546
マクロは相当な量です。
再構築は以前試した時は多少は改善しました。
でも、まっさらなブックにマクロのみ貼り付けても、
それ以上は小さくならなかったのでコレが限界かと。

549 名前:デフォルトの名無しさん [2009/01/16(金) 23:32:49 ]
>>543
おおおおお、ありがとうございました!!






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<259KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef