Excel VBA 質問スレ Part45 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2017/01/03(火) 02:51:16.56ID:9Y8iTik6コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part44
http://echo.2ch.net/test/read.cgi/tech/1479421482/
※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
0471デフォルトの名無しさん
2017/02/02(木) 19:03:14.33ID:26wow3Y8ああ、ソフト的ではなく環境的にということね
0472デフォルトの名無しさん
2017/02/02(木) 19:37:44.37ID:NSv6UvRaわざわざエクセルをDBに使うなんてそういうことやろ
0473デフォルトの名無しさん
2017/02/02(木) 19:45:16.92ID:26wow3Y8daoを使えばできるのに使えない人じゃないか?
0474デフォルトの名無しさん
2017/02/02(木) 19:50:07.70ID:/oce7NjA「いますぐマスターすべきExcelシートにDELETE文を発行する10の方法」
という記事をQIITAに書け。
0475デフォルトの名無しさん
2017/02/02(木) 20:02:10.03ID:oZoqJ5piAccessその他のDBソフトに繋いで利用する方法は知らない」
ってどんな確率だよ。
0476デフォルトの名無しさん
2017/02/02(木) 20:07:41.61ID:/oce7NjAそうだなあ、、、
・エクセルしかない環境
とか、
・データ入力者は別にいて、そいつがエクセルしか使わない
とか?
0477デフォルトの名無しさん
2017/02/02(木) 20:15:04.31ID:bpSSgRJM>>468によれば、Microsoft.Jet.OLEDB.4.0では削除できないみたいだけど
出来るって言ってるやつも出来ないって言ってるやつも、ドライバ(プロパイダ)明示しろや
0478デフォルトの名無しさん
2017/02/02(木) 21:51:23.00ID:TcNEtgX90479デフォルトの名無しさん
2017/02/02(木) 23:04:57.75ID:JuktWcDi完全にエクセルでDBの方がバカなんだけど
もしかしてExcel VBAでAccess使っちゃダメみたいなローカルルールがあんの?
0480デフォルトの名無しさん
2017/02/02(木) 23:41:12.27ID:yoXwSHRoa1セルからデータ始まってない場合とかどうすんだ?
表形式ですらない場合のほうが多いし
0481デフォルトの名無しさん
2017/02/03(金) 04:47:43.76ID:OWBaaXVbDELETEさえ使えればエクセル単体でDB処理が完結するから便利なんだよ。
これ一つ使えないせいで仕方なく外部のDB使ってる場合が多いと思う。
発想が逆というか、話の前提条件というか。
まぁ、そもそも出来ない事を出来ると主張した奴が悪いんだけどね。
0482デフォルトの名無しさん
2017/02/03(金) 07:06:56.58ID:XP7JqKvcexcelだけでやることに意味があることもおおいだろ
少しは頭使え
0483デフォルトの名無しさん
2017/02/03(金) 07:18:59.91ID:2s9sq5BM0484デフォルトの名無しさん
2017/02/03(金) 08:15:27.01ID:Ibd8YbHy普通の会社なら Excel が入っていない PC は滅多にないけど Access が入ってないことはよくある
0485デフォルトの名無しさん
2017/02/03(金) 08:17:25.72ID:6hF18qg4>>480
できるようにしろよ
お前は雛かw
0486デフォルトの名無しさん
2017/02/03(金) 08:18:24.35ID:jCN45Z8Mだよね
うちも情シス課だけだ
0487デフォルトの名無しさん
2017/02/03(金) 10:15:04.35ID:jamIg+V10488デフォルトの名無しさん
2017/02/03(金) 22:34:23.19ID:zw5JONDs実は問題ない。
SELECT * FROMで全部拾うと、
勝手に列名書き足してくれるから。
こんな感じの、すげぇダッセェwwwシートになるけど。
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
2017/2/3
○○○一覧
No 商品名 単価 数量 合計 備考
1 ▲▲ 100 2 200 □□
2 ◎◎ 500 1 500 ▽▽
3 ×× 320 2 640 ◆◆
後でRows("1:4").Deleteしてもいいし、
そもそも項目をF1 AS [No]とかにして、
WHEREで余計なところを消してもいい。
0489デフォルトの名無しさん
2017/02/04(土) 00:03:57.13ID:L9lbN/6P何とかならんだろうか。
10個あったら60行っすよ。
0490デフォルトの名無しさん
2017/02/04(土) 00:23:48.42ID:IKUGnnqZIFで指定した列が表示が表示されてるならValueをTrue(押されてる状態)にするという処理を書いています
その後の処理のためにイベントプロージャーで、トグルボタンをクリックすると列の表示、非表示を指定できるようにしていますが、最初のIF文でもイベントプロージャーを実行してしまいます
何か回避策ありませんか?
0491デフォルトの名無しさん
2017/02/04(土) 01:50:33.82ID:DTJgp/8VLet Get合わせて最低2行だろjk
0492デフォルトの名無しさん
2017/02/04(土) 01:52:48.86ID:keYK1J0lなんちゃらEnableみたいなのがあったけど思いだせん
自分でぐぐってくれ
0493デフォルトの名無しさん
2017/02/04(土) 03:27:18.53ID:DTJgp/8Vイベントを禁止できないけど こうゆうのどう?
If ToggleButton1.Value = False Then
ToggleButton1.Tag = 1
ToggleButton1.Value = True
End If
Private Sub ToggleButton1_Click()
If ToggleButton1.Tag <> "" Then
ToggleButton1.Tag = ""
Exit Sub
End If
'処理
End Sub
0494デフォルトの名無しさん
2017/02/04(土) 05:14:57.71ID:XGGN10p2OracleDBのテーブルにあるCLOBフィールドに格納
されたExcelファイルにアクセスしてReadOnlyで開くか
ダウンロードするかしたいと考えています。
テーブル仕様書を見ると、CLOBにXMLTypeで格納され
ているとあります。
DBMS_LOB.SubStr()でVARCHAR2に変換して
先頭数文字取得しようとするのですがエラーでこけます。
GGって良い事例がないか捜しているのですがうまく見つけ
られません。VBAで可能でしょうか?
ODBC(Excel Driver)またはOraDynasetは利用できる
環境にあります。
0495デフォルトの名無しさん
2017/02/04(土) 11:23:15.74ID:R/BCzGYYアクセサ云々より先に継承だからなあ
0496デフォルトの名無しさん
2017/02/04(土) 11:37:21.42ID:O5nNdZ1Mたくさんあったら使う側も面倒なんだからひとつのメソッドで同時に設定すればいいんじゃない?
相互依存のない独立したプロパティが10個あるクラスだとしたら設計がまずいか、相当なレアケースのどちらか。
0497デフォルトの名無しさん
2017/02/04(土) 12:40:09.24ID:pgmrL8Re改行しないで二行でかけ
0498デフォルトの名無しさん
2017/02/04(土) 13:20:38.95ID:R/BCzGYY0499デフォルトの名無しさん
2017/02/04(土) 15:59:29.14ID:4MwsZCTu一つ目の画像を縦横の短い長さでクロップしたいのですが
どこがまちがっているのでしょうか
Sub 画像をクロップして正方形にしたい()
Dim myPic As Shape
Set myPic = ActiveSheet.Shapes(1)
With myPic
TateYokoSa = Abs(.Height - .Width)
If .Height > .Width Then
.PictureFormat.CropBottom = .PictureFormat.CropBottom + TateYokoSa
Else
.PictureFormat.CropRight = .PictureFormat.CropRight + TateYokoSa
End If
End With
End Sub
0500デフォルトの名無しさん
2017/02/04(土) 17:00:11.13ID:OKds5wOX文字コードじゃなくて?
0501デフォルトの名無しさん
2017/02/04(土) 19:06:45.66ID:L9lbN/6P>>497
>>498
Property Let
内容
End Property
Property Get
内容
End Property
ググっても、こういう書き方しか見つからない・・・。
>>496
クラス.名前
クラス.部署
クラス.年齢
クラス.性別
・
・
的な使い方をしたいんだけど、変?
0502デフォルトの名無しさん
2017/02/04(土) 19:11:21.46ID:hnMbbMl2Property Let : {...} : End Property
って書き方でしょ。
どっちにしろ単純なメンバー変数の読み書きをいちいちメソッド化してもなぁ。
0503デフォルトの名無しさん
2017/02/04(土) 19:35:42.95ID:ypmLJyxSC#使いなよ
0504デフォルトの名無しさん
2017/02/04(土) 19:55:29.16ID:nIvSnu1nletもgetもあるなら、クラスの中にpublic変数作った方が良い。
隠蔽的にはなんの役にも立たないけど。
0505デフォルトの名無しさん
2017/02/04(土) 20:04:50.83ID:R/BCzGYY変数の初期値設定とかでもよくやるけど
Dim c as class1:set c=new class1
とかね
0506デフォルトの名無しさん
2017/02/04(土) 20:17:51.11ID:L9lbN/6P目から鱗。
コロンは知ってたけど、まさか最初と最後にも使えるとは思わなかった。
ありがとう。
0507デフォルトの名無しさん
2017/02/04(土) 20:42:11.57ID:pJMir97a> Dim c as class1:set c=new class1
そのパターンは
Dim c As New class1
でよくね?
0508デフォルトの名無しさん
2017/02/04(土) 20:55:01.33ID:O5nNdZ1Mいいと思うけどなぜか嫌う人もいる
0509デフォルトの名無しさん
2017/02/04(土) 20:57:38.63ID:TSeQ29q+0510デフォルトの名無しさん
2017/02/04(土) 21:02:39.21ID:O5nNdZ1Mhttps://msdn.microsoft.com/ja-jp/library/dd297716.aspx
0511デフォルトの名無しさん
2017/02/04(土) 21:17:54.19ID:O5nNdZ1M宣言と同時に初期化(≠代入)したい、ってことでしょ
0512デフォルトの名無しさん
2017/02/04(土) 21:49:00.67ID:pJMir97aほえー、これは知らんかったわ
なんでこんな凝ったことするかねぇ...
0513デフォルトの名無しさん
2017/02/04(土) 22:12:26.08ID:R/BCzGYYもう出てるけどコンストラクタが働かない
0514デフォルトの名無しさん
2017/02/05(日) 10:29:00.78ID:7v2W1cWr多分この仕様のせいかと
https://msdn.microsoft.com/ja-jp/library/office/ff838027.aspx
>トリミングは、元の図の大きさを基に計算されます。
>たとえば、元の図が高さ 100 ポイントの場合に、それを 200 ポイントに変更して、
>CropBottom プロパティに 50 を設定すると、
>図の下端からトリミングされるのは 50 ポイントではなく 100 ポイントとなります。
だから↓のような処理にすればよくね?
現在のサイズを保存 → オリジナルサイズに戻す → Crop → Cropしてない方のサイズに戻す
0515デフォルトの名無しさん
2017/02/05(日) 18:56:44.11ID:qj78kXRnありがとうございます 一発で解決しました
変な仕様だとおもったけど拡大縮小を考えたら
こっちのほうが誤差がでなくて使いまわしがいいのかも
0516デフォルトの名無しさん
2017/02/06(月) 12:18:45.75ID:Xnyr5yqpありがとうございます!
無事想定通りに動きました!
0517デフォルトの名無しさん
2017/02/06(月) 15:58:56.02ID:6lEgfPNZ0518デフォルトの名無しさん
2017/02/07(火) 21:15:01.23ID:0h02j8pV簡易CTIをエクセルで作りたいと思ってます
パソコンに繋いでいるfomaの着信を拾って相手の発信番号を取得するにはどうすれば良いでしょうか?
com3ポートに認識されていたのでterateamで接続しATコマンドでの発着信はできました
vbaでの操作ではCOMポートにATコマンドを入力して発信はできました
なんとか自力でココまで調べましたが、肝心の着信を拾う方法が一向に分かりません•••
何方か教えて頂けませんでしょうか
0519デフォルトの名無しさん
2017/02/07(火) 21:26:24.63ID:obnTOw8Yできるなら俺も教えてほしい
煽りとかじゃなくて
0520デフォルトの名無しさん
2017/02/07(火) 21:33:09.15ID:71skcbUj232Cアナライザーでどんな通信してるかバイパスして見るとかいう手もある
http://www.fullfree.jp/i/cti/%E6%90%BA%E5%B8%AF%E9%9B%BB%E8%A9%B1/
対象機器なら ↑ こういう手もあるかも
0521デフォルトの名無しさん
2017/02/07(火) 21:45:01.70ID:K6SNK3fF0522デフォルトの名無しさん
2017/02/07(火) 22:41:07.72ID:4GsqGq1Tしかし起動時に勝手に計算してしまうことがあります。(計算されないこともある)原因がわかる方がいたら教えてくださいm(__)m
マクロ勉強中なので変なこと描いてるかもしれませんが、お手柔らかにお願いします。
Private Sub Workbook_Open()
Worksheets(計算シート1).EnableCalculation = False
Worksheets(計算シート2).EnableCalculation = False
End Sub
Sub 再計算()
Worksheets(計算シート1).EnableCalculation = True
Worksheets(計算シート2).EnableCalculation = True
Calculate
Worksheets(計算シート1).EnableCalculation = False
Worksheets(計算シート2).EnableCalculation = False
End Sub
0523デフォルトの名無しさん
2017/02/07(火) 22:42:44.62ID:4GsqGq1TEXCEL2007 windows7です。
0524デフォルトの名無しさん
2017/02/07(火) 22:47:36.56ID:vzZ8DTGh数式再計算を止める
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic
「.Calculation」と「.EnableCalculation」のどちらが効果的か
http://stabucky.com/wp/archives/6840
.EnableCalculationってのは初めて知ったw
0525デフォルトの名無しさん
2017/02/07(火) 22:49:15.03ID:0h02j8pVfullfreeは試しに使って見ました
通知も上手く動くので大変良いのですが、本格的に使うには有料版を買わなきゃいけないのです•••
VB.netで似たようなものなら作れるのかな
0526デフォルトの名無しさん
2017/02/07(火) 22:56:00.49ID:kg1BFKbjファイル名 ドキュメントの種類 計算方法
------------------------------------------------------
Auto1.xls Workbook 自動
Manual1.xls Workbook 手動
Auto2.xls Workbook 自動
Excel の計算方法は、次の各条件を適用して決定されます。
最初に開かれるドキュメントでは、そのドキュメントで最後に保存された計算方法が使用されます。以降に開かれるドキュメントでは、同じ計算方法が使用されます。
たとえば、Auto1.xls を開いてから Manual1.xls を開く場合は、両方のドキュメントで自動の計算方法 (Auto1.xls で使用されていた計算方法) が使用されます。Manual1.xls を開いてから Auto1.xls を開く場合は、両方のドキュメントで手動の計算方法が使用されます。
事前に何かのブックを開いている…ってのはないのかな
0527デフォルトの名無しさん
2017/02/07(火) 22:57:33.27ID:4GsqGq1T回答ありがとうございます。
前はそっちでやってたんですけど、結果は同じでした。
それにexcel自体を全て手動計算にしている状態で別のexcelファイルを開くと、後から開いたEXCELファイルも手動になってしまうので、それは辞めました。
アクティブ状態のとき手動計算。非アクティブのとき自動計算にするっていう感じでごまかしていたんてすけど、それでも他のファイルがアクティブのときは重くなってしまうのでエクセル全体の手動計算化は諦めたんです。
0528デフォルトの名無しさん
2017/02/07(火) 23:13:44.54ID:4GsqGq1Tそれもあり得ると思ってそのファイル以外は開かないようにしていろいろ試しているんですけど、たまに起動時に自動計算してしまいます。
上記の再計算マクロを実行したときに、次回起動時に再計算されることが多い気がします。
あと変わったことといえば、保存時にバックアップファイルを作成すると、読み取り専用で開くを推奨するにチェックを入れてます。
0529デフォルトの名無しさん
2017/02/07(火) 23:22:48.13ID:diTiDCUQどう繋いでるのか知らんけど
AT+CMR=3,0,0,1,0
で非請求リザルトコードを送出するようにして
AT+CLIP=1
で相手先の番号通知をするようにしておけば電話がかかってきたらリザルトコードと電話番号が送られてくるはず
https://www.nttdocomo.co.jp/binary/pdf/corporate/technology/document/foma/foma8.pdf
0530デフォルトの名無しさん
2017/02/08(水) 00:37:33.33ID:ZVPHpwbPZolls(4,2).Value= "あ"
みたいな。
何でかというと、サム(SUM)も、ザム(ZAM)にしたほうがカッコイイからです。
なので、LEN→ZEN、LEFT→LEVT、IF→IVEに直ることを望みます。
0531デフォルトの名無しさん
2017/02/08(水) 00:44:56.28ID:JHaqns+X何でかというと、SUM(和)も、動きと意味を同じにしているからです。
0532デフォルトの名無しさん
2017/02/08(水) 01:23:44.42ID:gxc/oAA10533デフォルトの名無しさん
2017/02/08(水) 12:32:13.51ID:YRaicT0y前向きに善処します
0534デフォルトの名無しさん
2017/02/08(水) 15:05:50.71ID:jpNr2q1tだからやめて欲しい
何度説明読んでも覚えられない
0535デフォルトの名無しさん
2017/02/08(水) 16:01:16.01ID:GSna8PfoSUMPRODUCT っていう名前の事? 機能の事? どっちを言ってる?
機能の事なら覚えるしかないけど
名前の事なら
VBEのインテリジェンス や 数式オートコンプリートで候補表示されるがな
0536デフォルトの名無しさん
2017/02/08(水) 17:02:26.93ID:jpNr2q1t0537デフォルトの名無しさん
2017/02/08(水) 17:26:17.93ID:G5M1Oque0538デフォルトの名無しさん
2017/02/08(水) 20:23:45.21ID:PsLw780Zインテリセンスな
0539デフォルトの名無しさん
2017/02/08(水) 20:28:50.62ID:xdFvHyj9そういう英単語はないのですが。
0540デフォルトの名無しさん
2017/02/08(水) 20:31:43.60ID:ahyxJIg+インゲマルセンス
0541デフォルトの名無しさん
2017/02/08(水) 20:35:58.20ID:YRaicT0yそんなに馬鹿をご披露しなくても。
見ててしんどすぎるw
0542デフォルトの名無しさん
2017/02/08(水) 20:36:09.45ID:KwXJn1Y4辞典に載ってる
http://www.weblio.jp/content/%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AA%E3%82%BB%E3%83%B3%E3%82%B9
http://e-words.jp/w/%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AA%E3%82%BB%E3%83%B3%E3%82%B9.html
0543デフォルトの名無しさん
2017/02/08(水) 21:17:52.74ID:J3ugy/jRそうだな。INNERPRODUCTって名前にすべきではあるな。
0544デフォルトの名無しさん
2017/02/08(水) 21:18:25.45ID:J3ugy/jR>>534
0545デフォルトの名無しさん
2017/02/08(水) 22:10:27.54ID:ycePkqqkLEN→文字数
LEFT→左
SUM→和
SUMPRODUCT→積の和
0546デフォルトの名無しさん
2017/02/08(水) 22:42:52.80ID:2zqqayOY0547デフォルトの名無しさん
2017/02/08(水) 22:47:04.89ID:DZJYY/gu・空白
・日付 例:2017/01/0
・A701-01 英字&3桁数字&ハイフン&2桁数字
B列の複数行をピンポントで選択して、マクロを実行
・空白、日付の場合は、なにもしない
・A701-01 → A701-01+1 「+1」の部分を追加
「+1」部分についてはマクロボタンを区別して「+0」〜「+5」をそれぞれ選べるようにする
作ってみたのが↓
Sub Plus1()
'
' セルの文字列に”+1”を追加する
'
Dim cell As Range
For Each cell In Selection
cell.Formula = Left(cell, 7) & "+1"
Next
これだと、選択したセルの値に強制的に「+1」を付加することができるけど
まずB列以外を誤って選択した場合、実行をキャンセルする
空白もしくは日付データのセルを誤って選択した場合スキップする
という条件が未設定なわけですが
初心者のため、やり方が解りません
何卒ご教授お願いします
0548デフォルトの名無しさん
2017/02/08(水) 22:55:24.84ID:PsLw780ZSub test1()
If Selection.Columns.Count = 1 And Selection.Column = 2 Then
For Each cell In Selection
If Len(cell.Text) = 7 Then
cell.Value = cell.Text & "+1"
End If
Next
End If
End Sub
0549デフォルトの名無しさん
2017/02/08(水) 23:32:27.61ID:DZJYY/gu日付チェックは難しそうなのでパスしました
列チェック、ブランクチェックはOK
0550デフォルトの名無しさん
2017/02/08(水) 23:43:38.04ID:G5M1Oqueデータ左端の文字が英文字の場合のみ処理すればよい
0551デフォルトの名無しさん
2017/02/08(水) 23:56:03.18ID:ZVPHpwbPクラスモジュールでプロパティゲトォした値を入れると、遅くなりますか?
(1ループ毎にゲトォしやがりますか?)
普通の変数の方がいい?
0552デフォルトの名無しさん
2017/02/08(水) 23:57:41.36ID:2zqqayOYA1に 2017/2/8 (日付)
A2に '2017/2/8 (日付に似た文字列)
を入れた場合、
TypeName([A1].Value) は Date
TypeName([A2].Value) は String
VarType([A1].Value) は 7
VarType([A2].Value) は 8
IsDate([A1].Value) は True
IsDate([A2].Value) は True
目的に応じて。
0553デフォルトの名無しさん
2017/02/09(木) 08:11:20.26ID:qBnVMkljそれぐらい自分で試せるでしょ
0554デフォルトの名無しさん
2017/02/09(木) 09:20:05.90ID:kHCI6X3g速いは遅いは
そりゃ偉い騒ぎよ
0555デフォルトの名無しさん
2017/02/09(木) 12:46:25.09ID:vKLMa/HOご教授願えませんでしょうか...
Sub Macro2()
Dim orgWs As Worksheet
Dim idx As Long
Set orgWs = ActiveSheet
Application.ScreenUpdating = False
For idx = 1 To Range("A65536").End(xlUp).Row
Worksheets.Add after:=Sheets(Worksheets.Count)
orgWs.Rows(idx).Copy
Range("A1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
' ActiveSheet.Name = orgWs.Cells(idx, "A").Value
Next idx
orgWs.Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
0556デフォルトの名無しさん
2017/02/09(木) 12:48:49.77ID:hH4J/ks8○ご教示
0557デフォルトの名無しさん
2017/02/09(木) 12:54:24.78ID:f2wLu3Eu0558デフォルトの名無しさん
2017/02/09(木) 12:54:36.06ID:vKLMa/HO0559デフォルトの名無しさん
2017/02/09(木) 13:03:15.06ID:0S6dEfQx本来のやりたい事がようわからんが ありがちな事として
Row(行) と Column(列)を 勘違いしてるとか
ActiveSheetの内容と欲しい結果を具体例で上げてみて
0560デフォルトの名無しさん
2017/02/09(木) 13:25:47.81ID:WkR93Ch5なら2回コピペ
0561デフォルトの名無しさん
2017/02/09(木) 13:43:10.76ID:vKLMa/HO一件2回コピペで終わるんですが、数があるのと、元のリストを整備しておけば簡単に作り直せるようにしたいので。
0562デフォルトの名無しさん
2017/02/09(木) 14:01:19.23ID:0S6dEfQxこれだと どうかな? (2回コピペでもいいけどUnionで一回でいいようにしてる)
Sub Macro2b()
Dim orgWs As Worksheet
Dim idx As Long
Set orgWs = ActiveSheet
Application.ScreenUpdating = False
For idx = 2 To Cells(Rows.Count, "A").End(xlUp).Row
Worksheets.Add after:=Sheets(Worksheets.Count)
Union(orgWs.Rows(1), orgWs.Rows(idx)).Copy
Range("A1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
ActiveSheet.Name = orgWs.Cells(idx, "A").Value
Next idx
orgWs.Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
0563デフォルトの名無しさん
2017/02/09(木) 14:01:32.78ID:e5heueGcSub Macro2()
Dim orgWs As Worksheet
Dim idx As Long
Set orgWs = ActiveSheet
Application.ScreenUpdating = False
For idx = 2 To Range("A65536").End(xlUp).Row
Worksheets.Add after:=Sheets(Worksheets.Count)
orgWs.Rows(1).Copy
Range("A1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
orgWs.Rows(idx).Copy
Range("B1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
' ActiveSheet.Name = orgWs.Cells(idx, "A").Value
Next idx
orgWs.Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
こんなんでいいの?
0564デフォルトの名無しさん
2017/02/10(金) 06:41:47.39ID:C/dUqapt書式必要じゃないなら
Dim v as variant
v = range(範囲)
貼り付け先 = v
ってした方が早いんじゃないかな
書式必要だとしても、形式が決まってるならあとから直接指定した方がコピペするより早いと思う
クリップボード経由する分コピペだと遅いはず
0565デフォルトの名無しさん
2017/02/10(金) 07:18:27.18ID:C/dUqapt細かいこと言うとActivesheetを変数に入れてるのに最大行求めるときに指定してなかったりとか個人的には気になる
あと、コピペするにしても行まるごとコピーするよりちゃんと範囲指定してあげたほうが速いんじゃね、試してないけど
後、増やした後のシートもちゃんと指定してあげないと
「アクティブになってる前提」でコード書くと怖いよ
Sub test()
Dim orgWs As Worksheet, dstWs As Worksheet
Dim idx As Long, maxRow As Long, maxCol As Long
Dim postValue As Variant
Set orgWs = ActiveSheet
maxRow = orgWs.Cells(Rows.Count, 1).End(xlUp).Row
maxCol = orgWs.Cells(1, Columns.Count).End(xlToLeft).Column
Application.ScreenUpdating = False
For idx = 1 To maxRow
postValue = orgWs.Range(orgWs.Cells(idx, 1), orgWs.Cells(idx, maxCol))
Set dstWs = Worksheets.Add(after:=Sheets(Worksheets.Count))
dstWs.Range(dstWs.Cells(1, 1), dstWs.Cells(maxCol, 1)) = WorksheetFunction.Transpose(postValue)
Next idx
orgWs.Activate
Application.ScreenUpdating = True
End Sub
0566デフォルトの名無しさん
2017/02/10(金) 07:23:40.57ID:C/dUqaptまあ、同じ要領で
0568デフォルトの名無しさん
2017/02/10(金) 18:30:23.86ID:n+qIsj3QVBAの勉強がんばります・・・
0569デフォルトの名無しさん
2017/02/10(金) 18:45:27.09ID:iQHACvfgちゃんと速度は計れよ
0570デフォルトの名無しさん
2017/02/10(金) 20:51:56.75ID:FEKvr519BookBに「仮シート」という名前のシートがあり、
そこにAのsheet1のA1〜B2のデータをコピーして、
仮シートのC1にコピーするにはどういうコードを書けば良いでしょうか?
Workbook("BookA").Activate
Worksheet("Sheet1").Activate
Range("A1:B2").copy(Workbooks("BookB").Range(C1))
これでは動かなかったです。
基本的なことですが、教えてくれると助かります。
■ このスレッドは過去ログ倉庫に格納されています