Excel VBA 質問スレ Part59

■ このスレッドは過去ログ倉庫に格納されています
2019/02/09(土) 15:12:30.70ID:3lTArmdf0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part58
https://mevius.5ch.net/test/read.cgi/tech/1542577644/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/02/12(火) 22:00:43.06ID:1aNudvIBa
線つなぐやつはサブルーチンが正体不明のアイコンになるからものすごくわかりにくい
逆にわかりやすいプログラムを描くには高度なアイコンデザインセンスが必要ということだ
そんなの天才にしか使いこなせない
2019/02/12(火) 22:17:01.28ID:qNrXOr6p0
>>82
もうVBA関係なくなっちゃうけど、普通のエディタ使って置換機能を使えばいいだけでは。
85デフォルトの名無しさん (アウアウクー MM91-q7hS)
垢版 |
2019/02/12(火) 22:41:31.90ID:CcMjC8kpM
>>84
セル内の文字列を対象にしてると思うからエディタでは無理では?分からないから適当に言うんだけど。
2019/02/12(火) 23:08:07.22ID:u96ReIy/0
>>80
質問はうけつけん

Sub RemoveCRLF()

Dim target As Range
Dim str As String

Set target = Sheet1.Range("A1")

str = target.Value
str = Replace(str, vbCr, "")
str = Replace(str, vbLf, "")
str = Replace(str, ".", "." & vbNewLine)
target.Value = str
End Sub
87デフォルトの名無しさん (ワッチョイ f901-YOpM)
垢版 |
2019/02/12(火) 23:38:26.31ID:ja5MNGvN0
>>76
あまりいけてないけど、ぼくも考えた

Dim str As String
str = Range("A1")

Dim re As Object
Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.Pattern = "[\r\n]"
str = re.Replace(str, "")
re.Pattern = " +"
str = re.Replace(str, " ")
re.Pattern = "([?.]) *"
str = re.Replace(str, "$1" & vbLf)
Range("A2") = str
88デフォルトの名無しさん (アウアウクー MM91-q7hS)
垢版 |
2019/02/12(火) 23:44:44.19ID:CcMjC8kpM
>>75
最新版は5ですよね?使ってみましたがオブジェクトエラーが起きてどこで停止しているかみてみると、ソート処理時に停止する。

そこで4_2をベースにこちらでカスタマイズして、ボタン1つでセル内の文字列をシャッフルするコードをネットから拾ってきました。
ついでに縦横の切り替えもボタンで実現してます。

やりていことこ実現できているので満足です
2019/02/12(火) 23:58:53.49ID:gxc4B4g80
そうでしたか、なんかすみません
じゃ本当に終わります。
2019/02/13(水) 02:27:50.55ID:NEpE3zFw0
Python などの形態素解析で、文末でも判定すれば?
91デフォルトの名無しさん (ワッチョイ e101-P0T6)
垢版 |
2019/02/13(水) 06:35:13.37ID:9485a3fT0
>>84
例えば?メモ帳とか?

改行を無くす置換はありますか?
2019/02/13(水) 07:12:30.92ID:i20vW39tM
>>82
改行置換ならVBAも要らん
https://excelkamiwaza.com/excel_kaigyou_tikan.html
93デフォルトの名無しさん (ワッチョイ f901-P0T6)
垢版 |
2019/02/13(水) 07:30:01.13ID:AhLCWHg20
>>92
ありがとうございます。一つのセルに最大どんだけテキスト貼れるかですね
94デフォルトの名無しさん (ワッチョイ f901-P0T6)
垢版 |
2019/02/13(水) 07:36:07.18ID:QsqoJnTp0
>>92
cntl+jか。知らなかった。ほかのワードとかでも使えるかな
2019/02/13(水) 07:44:47.38ID:zGo41KJe0
セルを指定する時とか”A1”とかちまちま書くのが普通?
めんどくさいんだけどそんなもの?
96デフォルトの名無しさん (JP 0H16-KbRv)
垢版 |
2019/02/13(水) 08:07:53.15ID:kNKWDOP4H
>>95
ヘッダの話なら1個ずつ書いてくしかない
2019/02/13(水) 08:46:40.27ID:LdPPLa0i0
>>95
状況とやりたいことによる
範囲指定する書き方も出来るし、変数で楽できる場合もある
2019/02/13(水) 08:48:18.23ID:LdPPLa0i0
>>93
Excelと関係ない英文を整形したいだけならテキストエディタを使った方が早いぞ
せめてWordにしとけ
2019/02/13(水) 09:17:10.81ID:s1ZD6WV/0
「何の条件」で「何を」「どのようにしたいか」の中で「何の条件で」が出てないな
「何を」「どのようにしたいか」も一部の条件しか出てない気がする
連想ゲームじゃないんだから質問はちゃんとかけよ
2019/02/13(水) 10:05:00.38ID:s1ZD6WV/0
>>76
この質問は
Excelの枠に配置で、折り返して全体を表示するに
以下の改行のない文を貼り付けた時に
How are you? I’m looking forward to see you.
セルの幅に合う位置で改行されるのを思いの位置で改行したい
ってことだろ、思いの位置が明文化されないとな
例えば英文であるかわからんが「...」みたいな文とか「!!」みたいなとかもありそうだしな
101デフォルトの名無しさん (JP 0H16-KbRv)
垢版 |
2019/02/13(水) 10:59:06.69ID:kNKWDOP4H
>>95
あと以下のようにしておくと面倒でなくなるよ

cns_COL_ID = “A”
Range(cns_COL_ID & 1) = “ID”
2019/02/13(水) 11:08:47.69ID:s1ZD6WV/0
>>95
貼り付けられたイベントで処理するのも普通だけどな
位置は分かるから、そのセル・レンジを処理する
2019/02/13(水) 11:41:27.51ID:s1ZD6WV/0
Private Sub Worksheet_Change(ByVal Target As Range)
まあ、Changeイベントで
 If Application.CutCopyMode = xlCopy Then
 End if
コピーされた場合「Range」に対して処理を書くんだな
2019/02/13(水) 14:06:51.14ID:cLVWJ/NN0
セル上でドラッグドロップしたら、それでプログラムが動くようなことってできますか
たとえば、縦1列に20個のデータが入っていて、その1つを別の場所に
ドラッグドロップすると順番が入れ替わるようにするとか
105デフォルトの名無しさん (JP 0H16-KbRv)
垢版 |
2019/02/13(水) 14:22:50.50ID:kNKWDOP4H
>>104
こうかな

Sub Worksheet_change(ByVal Target As Range)
if target.column = 貼り付けた列番号 then 配列に突っ込む
配列をソートする
配列をセルに書き込む
End Sub
2019/02/13(水) 14:36:01.74ID:cLVWJ/NN0
>>105
出来るんですね。 ありがとう
107デフォルトの名無しさん (JP 0H16-KbRv)
垢版 |
2019/02/13(水) 14:45:16.60ID:kNKWDOP4H
>>106
あとApplication.Enableevents = Falseしないと配列をセルに書く時にWorksheet_changeが起きて無限ループするから気を付けて
2019/02/13(水) 14:45:50.22ID:s1ZD6WV/0
>>104
それって、切取りと切り取ったセルの挿入のことじゃない
2019/02/13(水) 18:05:52.67ID:YjEmAg3Q0
>>104
シフト押しながらドラッグするだけやろ。

テーブル定義ならシフトすら必要ない。

既存の機能を自力で作ってどうするんや
110デフォルトの名無しさん (ササクッテロル Spd1-P0T6)
垢版 |
2019/02/13(水) 19:29:04.53ID:yofO24jUp
>>94
置換前にcntl+jと入れると、置換ボタンが押せない。
2019/02/13(水) 19:30:45.49ID:JQT8xzoY0
検索で正規表現を使えないというのもあれだな。
2019/02/13(水) 20:11:24.50ID:1az0o1MYM
ワードラップの問題だろ改行関係ない
2019/02/13(水) 20:17:10.65ID:zGo41KJe0
>>96>>97>>101>>102
ありがとう
>>101
これはなぜ楽になるの?
114デフォルトの名無しさん (ワッチョイ f901-KbRv)
垢版 |
2019/02/13(水) 20:39:49.89ID:9c/UwGiq0
>>113
楽というかマナー
意味の分かる定数で定義することで他人がプログラムを追わなくても理解できるようになる
2019/02/13(水) 20:49:54.38ID:9vYYaAAUa
プロパティ使ったほうが定数よりずっとわかりやすいよ
2019/02/13(水) 20:50:53.76ID:Hdk7qA5y0
決まりきったセル(範囲)参照する時は名前定義なりテーブル化した方がいいと思うけどな
117デフォルトの名無しさん (オイコラミネオ MM16-duX/)
垢版 |
2019/02/13(水) 20:54:23.96ID:vtryBqN5M
vba初心者です。
マウスイベントやスリープなどのapi を使って
会社で使うツールを半自動化してますが、
こういうアナログな方法ではなく、
マウスでクリックしなくてもツールがアクティブになったり、
スリープではなく画面が遷移したのを読み取って次の命令を実行してくれるような
ものを作るにはどういう学問を学べばいいですか?
2019/02/13(水) 20:57:56.29ID:zGo41KJe0
>>114
あり
2019/02/13(水) 21:14:49.27ID:0iV7VQWH0
ウインドウズのイベントをフックする
2019/02/13(水) 21:25:30.47ID:Hdk7qA5y0
>>117
UI Automation
ただ色々アレで結局Win32API併用することになることが多いけど
2019/02/13(水) 23:29:11.25ID:vsTJ7JQU0
自作したdllファイルに文字列を投げて配列を受け取りたい場合

Public Declare Function 〇〇 Lib "△△" Alias "□□" (string path)As string()

〇 自分で付ける関数名??
△ dllファイルの場所フルパス??
□ dllファイル内の何か?
それぞれ何を指すんですか?

ちなみにこれでも似たような事ができるんですか?
Dim tarApp As Variant
Set tarApp = CreateObject(“◎◎“)
 tarApp.Documents.Open FileName:="〇〇"
Set wdApp = Nothing
2019/02/14(木) 10:46:56.68ID:oxBa5+ju0
>>121
まあ、気楽に回答しておく
>〇 自分で付ける関数名??
その通り
>△ dllファイルの場所フルパス??
Pathが通ってればフルパスでなくてもよい
>□ dllファイル内の何か?
別名宣言できる・・・まあ、調べろ

>ちなみにこれでも似たような事ができるんですか?
>Dim tarApp As Variant
>Set tarApp = CreateObject(“◎◎“)
> tarApp.Documents.Open FileName:="〇〇"
>Set wdApp = Nothing
書いている意味が理解できてないだろう、Office系のソフトはちゃんとしたルールで作られてるが
こんなこと気にする前に、有効なDllを作ってみろよ
尚、理解できてないことが丸わかり
2019/02/14(木) 12:07:22.70ID:xvzsmsEPM
(´;ω;`)イベントが起こらなくなりました
2019/02/14(木) 12:08:59.63ID:FmdtC3Uo0
>>123
エクセル再起動しろ
2019/02/14(木) 12:20:00.82ID:oxBa5+ju0
>>123
まあ、間違ってるんだろそれだけ
ソースを出さなきゃ何もないよ
イベント鳥杉ってよくあるからな
有効な手段は、護摩をたけ、できるだけ激しく火事には気を付けろ
2019/02/14(木) 13:20:00.69ID:chn4JYyT0
たとえば、A1からC50までデータがあってA列をキーにソートしたいのですが、
途中たとえば、10行、15行、20−25行は抜かしたいのです。 これらにはコメントや他のものが入ってるので
でもそれらを抜かして全体でソートしたいのですが、Unionで繋いでやったら複数のレンジは出来ないみたいな
エラーを返されました
何かいい方法はないでしょうか
2019/02/14(木) 13:50:43.73ID:chn4JYyT0
例えば、画面表示は止めて、メモリ上で行を移動させてソートする行をまとめてからソートして、
また行をもとに移動させてから、画面上に結果を表示とか、出来ると可能性があると思うのですが
128デフォルトの名無しさん (ワッチョイ ff6f-dKms)
垢版 |
2019/02/14(木) 14:23:28.89ID:sSBdRoDO0
>>126
if i = 対象行 then
行入替え
end if
とかでいいんじゃね?
2019/02/14(木) 16:52:27.07ID:PSNlkVOrM
>>126
行を非表示にしたら対象から外してくれんかな…(試してない)
2019/02/14(木) 17:20:39.55ID:L4IMpAFUM
>>121

〇 自分で任意に付ける関数名
□ dllがエクスポートしている関数名
131デフォルトの名無しさん (ワッチョイ c701-mnSR)
垢版 |
2019/02/14(木) 17:59:11.87ID:bFGkVmlp0
dllってよくわかんないだけどvbsのexecuteglobalみたいな感じ?
2019/02/14(木) 19:55:09.02ID:chn4JYyT0
>>129
マジかあ。  やってみた。 出来てる

なんだよ、プログラム作っっちゃった。 ソートしないところを一旦別に移して圧縮してソートしてから
下に戻すってやつ
なんだよ、 この2時間返して w
133デフォルトの名無しさん (アメ MM6b-+q6E)
垢版 |
2019/02/14(木) 22:52:59.46ID:nNkHGtvOM
>>132
まあ、普通にデータはテーブルでもてば良いだけだろ
整形は別シートででーたをさんしょう
2019/02/15(金) 00:17:44.61ID:lL6vjf9tM
>>131
外部にライブラリーなどを持たすんだから
Include の方が近いだろ
135デフォルトの名無しさん (ワッチョイ dfeb-A2tD)
垢版 |
2019/02/15(金) 00:49:30.00ID:6QKgXGI40
よろしくお願いいたします。

VBAで、半角カナ文字列を与えると、その文字列の中にある、
ァィゥェォャュョッ などの小さい字をアイウエオヤユヨツなどの大きい字(半角カナ)に変換して返す
functionを作りたいのですが、どう書いていいのかわかりません。

ひとつずつ、ァをアに変換、ィをイに変換、のように書くしかありませんか?
まとめて書く方法ってあるのでしょうか?
2019/02/15(金) 01:15:28.74ID:BkaZ3+610
Ruby のNKF とか、文字列.tr とか、正規表現とか
2019/02/15(金) 01:18:13.72ID:vhn0rFgQ0
60項目7万件のjsonデータ読んで保存した。
開いたらモジュールとフォームが破損って何なんだよ。うう吐きそうだ。
10Gじゃメモリたりなかったのか?いや、それならそうメッセージがでるはず。
まさかこんなんでコード飛ぶとは思わなかったからバックアップは取ってない。
10分おきの自動バックアップのデータはあったけどデータ取るのに2日かかったからとっくに消えてる。
もう作る気おきない。
参った。
2019/02/15(金) 01:20:07.21ID:vhn0rFgQ0
>>135
文字コードを差分だけ加算すればいい。
2019/02/15(金) 01:21:08.10ID:EWf/hEPba
>>137
ざまあ
そういうのはCSVを介するのが定石だろう
2019/02/15(金) 01:23:24.10ID:NXuVhChr0
>>135
dictionaryオブジェクトで連想配列作れば?

Dim myDic As Object
Set myDic = CreateObject("Scripting.Dictionary")

myDic.Add "ァ", "ア"
myDic.Add "ィ", "イ"
myDic.Add "ゥ", "ウ"

Dim str As String
str = myDic.Item("ァ") #<--ここに参照したい文字を渡す

MsgBox str, vbInformation


https://www.sejuku.net/blog/29736


動くかわからんけどお試しあれ。
2019/02/15(金) 01:37:27.77ID:6R3QhjK00
>>135
あんまり綺麗じゃないけど

Function kanacaps(s1) As String
  For i = 1 To Len(s1)
    c = Mid(s1, i, 1)
    If "ァ" <= c And c <= "ッ" Then
      Select Case c
        Case "ァ" To "ォ"
          s = 10
        Case "ャ" To "ョ"
          s = 40
        Case Else
          s = 19
      End Select
      Mid(s1, i) = Ch r(As c(c) + s)
    End If
  Next
  kanacaps = s1
End Function
2019/02/15(金) 01:38:16.76ID:6R3QhjK00
一部の文字列関数が、なぜか5ちゃんねる全体のNGワードになってるんで、わざとスペースを入れてある
2019/02/15(金) 01:38:19.40ID:BkaZ3+610
Ruby では、

str = "ァィゥェォャュョッあ"

puts str.tr( "ァィゥェォャュョッ", "アイウエオヤユヨツ" )
#=> アイウエオヤユヨツあ
2019/02/15(金) 01:43:51.10ID:6R3QhjK00
もっとシンプルなのができた

Function kanacaps(s1) As String
  t = "アイウエオヤユヨツ"
  For i = 1 To Len(s1)
    c = Mid(s1, i, 1)
    If "ァ" <= c And c <= "ッ" Then
      Mid(s1, i) = Mid(t, A sc(c) - 166, 1)
    End If
  Next
  kanacaps = s1
End Function
2019/02/15(金) 01:46:51.97ID:6R3QhjK00
しつこいけど、これで最後

Function kanacaps(s1) As String
  t = Array("ア", "イ", "ウ", "エ", "オ", "ヤ", "ユ", "ヨ", "ツ")
  For i = 1 To Len(s1)
    c = Mid(s1, i, 1)
    If "ァ" <= c And c <= "ッ" Then Mid(s1, i) = t(As c(c) - 167)
  Next
  kanacaps = s1
End Function
2019/02/15(金) 01:53:45.99ID:6R3QhjK00
最後と言いながらもう一度
これってまだまだコンパクトにできるパターンだな

Function kanacaps(s1) As String
  t = Array("ア", "イ", "ウ", "エ", "オ", "ヤ", "ユ", "ヨ", "ツ")
  For i = 1 To Len(s1)
    c = Asc(Mid(s1, i))
    If 166 < c And c < 176 Then Mid(s1, i) = t(c - 167)
  Next
  kanacaps = s1
End Function
2019/02/15(金) 02:00:19.18ID:6R3QhjK00
1回しか使わない変数を消した
これ以上の短縮は無理かな?

Function kanacaps(s1) As String
  For i = 1 To Len(s1)
    c = Asc(Mid(s1, i)) - 167
    If 0 <= c And c < 9 Then Mid(s1, i) = Array("ア", "イ", "ウ", "エ", "オ", "ヤ", "ユ", "ヨ", "ツ")(c)
  Next
  kanacaps = s1
End Function
2019/02/15(金) 09:21:30.82ID:U9ClSHCYM
>>147
横レスだけど
他の言語に比べかったるいけどおいておいて
変換に使う文字列または配列はfunctionの外
変数はアドレス渡し function内で文字列を書き換え
変更が有った場合 true なかった場合false
使い勝手と動作速度を優先する
とスマホで書いてみる
2019/02/15(金) 09:40:41.96ID:GIzZTHxJM
>>147
たしかにs1を書き換えつつまたそれを返すというのは無駄だ。
ByValで受けて書き換えた結果を返すかByRefのままでSubにするかだと思う。
Booleanで返すのは今時の趣味には合わないんじゃないかな。
2019/02/15(金) 09:58:15.95ID:FxoJIoi60
>>149
セルを書き換えるべきか書き換えないかの判断をする
全てのセルの書き換えは時間もかかるし、空白のセルもある
必要ないデータは書き換えないでいいようにする

if kanacaps(s1) then cells(i,j) = s1
のように
2019/02/15(金) 11:36:22.43ID:GIzZTHxJM
>>150
s1自体は As Stringだろ
元の質問もワークシート関係ない話のように見受けられる
2019/02/15(金) 11:44:10.23ID:FxoJIoi60
>>151
だったら、このスレ関係ないな本当にそう思うのか?
自分の主張じゃなく要求者の状況を読まなければ意味ない
150の書き方でならシート全てを変換するfunctionも簡単にできるけど
お題を読めないのは厳しいな
2019/02/15(金) 11:49:05.00ID:6R3QhjK00
データ量と出現頻度と、呼び出し側でのデータの持ち方がわからない限り、最適解は出せないと思う
用途はなんだろう?半角カナが通るのにカナ小文字が使えないシステムなんて、大昔のオンラインシステムぐらいしか思い付かんけど
2019/02/15(金) 11:56:15.89ID:FxoJIoi60
>>153
今更聞いてる処がどうなの?
こんなのどっちでも簡単なのに、私は書かないけどなポリシーです
2019/02/15(金) 11:59:50.72ID:GIzZTHxJM
>>152
データソースがRangeであるか否かに関わらずs1は As String相当 だろう。
件の関数が何を返すべきか(もしくはSubにすべきか)という話とは関連が薄い。
2019/02/15(金) 12:04:24.39ID:FxoJIoi60
>>155
別にfunctionの使い方を考えないならどうでもいいじゃない
ただ誰も使わんだろ、それは言い過ぎか使うやつはいるな
2019/02/15(金) 12:06:23.85ID:FxoJIoi60
基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな?
2019/02/15(金) 12:09:16.16ID:GIzZTHxJM
>>157
不思議な意見を言う奴だな?
2019/02/15(金) 12:12:48.44ID:U9ClSHCYM
>>158
ここは、もうやめよう
2019/02/15(金) 12:42:06.25ID:Aa3kOoYYM
俺は理解したいけど使うの自分ならまぁ動けば良いや派です

話題変わるけど今はselenium使えないの?
firefox操作したいけど色々なサイトのコード試しても動かんのだけど最新のseleniumVBAでfirefox操作するVBA使ってる人居たらfirefox起動からログイン処理するコード貼ってほしい
2019/02/15(金) 12:51:15.55ID:Qph8FA2WM
>>157
> 基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな?
確かに>>150は恥ずかしいなw
2019/02/15(金) 12:54:55.89ID:FxoJIoi60
>>161
ふ〜ん、でどのように?(笑)
163デフォルトの名無しさん (JP 0H4f-mnSR)
垢版 |
2019/02/15(金) 13:05:41.84ID:QYjRxS22H
配列を使わざるを得ないなら二次元配列に変更前と変更後を並べて突っ込む
2019/02/15(金) 13:08:15.40ID:FxoJIoi60
>>161
まさか、148で変更をBoolean返すようにしたのを前提に150を書いたけど
何も読まずに書いてる?
2019/02/15(金) 13:13:10.46ID:FxoJIoi60
もうやばいけど、バカって好きだな
2019/02/15(金) 13:19:37.16ID:U9ClSHCYM
>>161
で、何か意見は?
2019/02/15(金) 14:34:08.07ID:GIzZTHxJM
>>163
結局そうなるよね。
一括で貼り付ければ楽なのに、わざわざ If でまだらに個別セットなんて却って遅くなる。
2019/02/15(金) 14:59:45.37ID:FxoJIoi60
まあ、しょうがない罠
分かんないんだもの
2019/02/15(金) 15:22:25.20ID:Qph8FA2WM
> 基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな?
とか言いつつ質問者の意向もわからんのにコード書いてドヤるとか w
2019/02/15(金) 15:34:51.44ID:FxoJIoi60
>>169
じゃあ、お前ヒントも書かずにわかるのか?
ってか、引きこもりの文盲か?
2019/02/15(金) 15:36:42.23ID:FxoJIoi60
あっ、すまん、ヒントを書いてもわからないんだよな
2019/02/15(金) 15:43:07.43ID:FxoJIoi60
>>167
どんだけ、アホで生きてるんjンだよ
関数の貼り付けとセルへの値の書き込すらわからんかな
2019/02/15(金) 17:36:05.74ID:Qph8FA2WM
>>170-172
だから
> 基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな?
とかが不思議ちゃんて言われてるんだよ
セルへの書き込み程度でドヤるような奴だからしょうがないだろうけど w
2019/02/15(金) 18:35:03.47ID:U9ClSHCYM
>>173
うふ
175デフォルトの名無しさん (ワッチョイ c701-OvAq)
垢版 |
2019/02/15(金) 19:18:49.62ID:FIDflx8L0
Range("A1")="名前"
Range("A2")="住所"
Range("A3")="性別"
Range("A4")="郵便番号"
みたいな複数にわかる処理を
Range("A1:A4")="名前、住所、性別、郵便番号"みたいな感じ(もちろんこれではダメ)で
一行(一回の処理)でまとめて設定できるような方法ってありますか?
176デフォルトの名無しさん (ワッチョイ c701-mnSR)
垢版 |
2019/02/15(金) 19:20:38.46ID:kIiggQTh0
>>175
ある
2019/02/15(金) 19:21:12.65ID:GIzZTHxJM
Sub kanacaps(s1 As String)
とした場合、
対象配列Aの各要素A(i,j)に対して
kanacaps(A(i, j)) をループで回すだけ。
シートに書き出したければ単にAを貼り付ける。
このとき書き換えがあったかどうかを判定する必要はない。
Function なら
Function kanacaps( ByVal s As String) As String
で A(i, j) = kanacaps(A(i, j))
これも書き換えがあったかどうかを判定する必要はない。
普通は後者を選ぶだろう。
178デフォルトの名無しさん (ワッチョイ c701-mnSR)
垢版 |
2019/02/15(金) 19:28:49.74ID:kIiggQTh0
>>177
これダメなやつ
最も負荷の掛かるセルへのアクセスは最小限にするべき
コードが短ければいいってもんじゃない
2019/02/15(金) 19:37:44.26ID:GIzZTHxJM
>>178
なんだよ
セルの個数の問題なのか貼り付け回数の問題なのかはっきりしろ
180デフォルトの名無しさん (ワッチョイ c701-mnSR)
垢版 |
2019/02/15(金) 20:01:27.87ID:kIiggQTh0
>>179
自分で処理時間計ってみれば?
2019/02/15(金) 20:18:49.96ID:V814XEHD0
>>175
Array
182デフォルトの名無しさん (アメ MM6b-+q6E)
垢版 |
2019/02/15(金) 22:25:19.73ID:f25ghBxYM
まあ、例えばひづ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況