X



Excel VBA 質問スレ Part59

■ このスレッドは過去ログ倉庫に格納されています
0046デフォルトの名無しさん (JP 0H16-KbRv)
垢版 |
2019/02/11(月) 15:17:21.04ID:PhhkhwtYH
>>5
CodeModuleプロパティでなんかできそうだけど使ったことないからわかんね
0049デフォルトの名無しさん (ワッチョイ dd0b-VUEs)
垢版 |
2019/02/11(月) 18:43:45.66ID:fA09NaPq0
>>12
のダウンロードした回数多くないか?
有用なツールだと認められた証だろう。作った人は自慢していいよ
0051デフォルトの名無しさん (ワッチョイ cdca-/S9r)
垢版 |
2019/02/11(月) 22:38:05.08ID:9CUrx5/r0
このスレの人ってやっぱりプログラマーが多いんですか?
それなりにVBA使えるようになった事務職なんですが、転職を考えています
想像してはいたんですが、VBAで職探しするとプログラマーばっかりですね

VBA活かせる仕事ってやっぱりプログラマーになっちゃうんですかね
0052デフォルトの名無しさん (ドコグロ MMca-/S9r)
垢版 |
2019/02/11(月) 22:48:43.99ID:+VAWjoKJM
>>51
プログラマの定義から自明だろう
VBAのスキルだけで仕事するってことはVBAでマクロ作ること自体を仕事にするってことだろ?
それは即ちプログラマに他ならない
嫌なら他のスキルを身につけた上でその補助道具としてVBAを使うことを考えなさい
0054デフォルトの名無しさん (ドコグロ MMca-/S9r)
垢版 |
2019/02/11(月) 23:04:40.76ID:+VAWjoKJM
あとはIT業界でプログラマ以外で入りやすいのはシステムオペレータやコールセンター
VBAを使う機会は少ないかもしれないけどVBAを習得できる程度の頭があるならそれなりに責任たある立場(バイトリーダーくらいを想像すればいい)にはなれるんじゃないかな
0055デフォルトの名無しさん (ワッチョイ 6e2c-V6Wy)
垢版 |
2019/02/11(月) 23:51:16.39ID:X8tlYFxV0
Excel エンジニアから、ステップアップしてプログラマーになった人は、たいてい、Ruby on Rails !
まず、Ruby・Sinatra から、web フレームワークを始める

YouTube にも、そういう成功した人たちの動画がある
0056デフォルトの名無しさん (ワッチョイ cdca-/S9r)
垢版 |
2019/02/11(月) 23:54:44.08ID:9CUrx5/r0
>>52
経理財務畑で10年働いてるので、その補佐としてVBA使ってる現状です
VBA楽しいので、そればっかりの仕事はしたくないんです
たぶん嫌になっちゃうので。
なのでIT業界に行きたいわけじゃないんです

でも、VBAで探すとITばっかりだなーって悩んでるんです
0057デフォルトの名無しさん (ワッチョイ f901-XNIb)
垢版 |
2019/02/12(火) 00:22:18.17ID:6UhGKpIA0
VBAは習得にかかる時間は他の言語覚えるのと同じくらい?
それとも簡単?
0059デフォルトの名無しさん (ドコグロ MMca-/S9r)
垢版 |
2019/02/12(火) 00:57:29.86ID:J2uuh0x+M
>>57
同じレベルを求めるなら同じ
でもVBAは自称「VBAできます(キリッ」のレベルが他言語比で大幅に低いから、
人前で習得したと言っていいレベルに達するまでの時間は他言語よりずっと短い
0060デフォルトの名無しさん (ワッチョイ f901-KbRv)
垢版 |
2019/02/12(火) 01:28:22.73ID:bkolxWEM0
for i
for j
for k
for l
if cells(i,j)=cells(k,l) then
m=m+1
cells(m,1)=cells(k,l)
end if
next
next
next
next

できました!
0063デフォルトの名無しさん (アウアウエー Sa0a-DOJB)
垢版 |
2019/02/12(火) 07:32:55.78ID:SvKCMiwAa
>>60
エラー処理(例外処理)が緩すぎる
やり直し
0064デフォルトの名無しさん (ブーイモ MMcd-RyKv)
垢版 |
2019/02/12(火) 08:01:42.96ID:yCgE5JHqM
>>56
仕事を効率化するシステムはある程度自分で作るのが当たり前の時代が来る(かもしれない)から
IT業界でなくてもプログラミングは必須になる(かも略
ただしそのツールの主流はVBAじゃないだろうね
いろんなツールや他言語も覚えて他人の仕事をどんどん奪ってください。
そうすれば時代の流れを加速することになるのでヒーローになれます。
0065デフォルトの名無しさん (ワッチョイ fe7c-SgG7)
垢版 |
2019/02/12(火) 11:26:12.35ID:8lolhehX0
MSがExcelにPython載せるっつってたから
君が卒業して社会に出る頃にはVBAは消えてるかも知れない
0066デフォルトの名無しさん (ブーイモ MMcd-/3is)
垢版 |
2019/02/12(火) 13:55:06.88ID:w218beJOM
>>64
まず型はいらない。
コマンドや関数はフローチャートの図形みたいな視覚化とパラメータで作成。
論理エラー以外のエラーは出ない仕組み。
やろうとすればいくらでもできるんじゃね?
0075デフォルトの名無しさん (ワッチョイ a2a2-/WZR)
垢版 |
2019/02/12(火) 19:49:06.70ID:gxc4B4g80
>>13さんもう見てないかな
自分で使ってみたけどなんか違う・・・と思って考えてみたら
問題のシャッフル出題(各問1回だけシャッフルして出題)が足りないという結論に
バグもつぶしたし、まだ見てるならレスください
0076デフォルトの名無しさん (ササクッテロル Spd1-P0T6)
垢版 |
2019/02/12(火) 21:06:37.12ID:N98Fn342p
すみません、こういうのは出来ますか。

How are you? I’m looking
forward to see you.

How are you?
I’m looking forward to see you.
になおす。

要は、中途半端な改行がある文を、一行にまとめる。
0078デフォルトの名無しさん (ワッチョイ 822f-HdPi)
垢版 |
2019/02/12(火) 21:30:27.20ID:u96ReIy/0
>>76
改行をなくすだけなら比較的簡単にできる
適切な位置で改行しろってなら、適切な位置を事前に完全に定義すればまぁできる

>>77
おれは別に避けたいとは思ってないしその必要もないけど
テキスト以外のプログラミングには従来のプログラミング言語にない可能性だってあるしな
0079デフォルトの名無しさん (ワッチョイ 827c-1PgY)
垢版 |
2019/02/12(火) 21:39:40.48ID:w+cVMhLi0
DOSはDOSで使いやすかったと思う。
Windows出たときいらねーべって思ってたけど今思うと3.1はやっぱりいらない。
0080デフォルトの名無しさん (ササクッテロル Spd1-P0T6)
垢版 |
2019/02/12(火) 21:45:44.99ID:N98Fn342p
>>78
76です。
すみません。それでは、
.で改行できるようにお願い致します。
0082デフォルトの名無しさん (ササクッテロル Spd1-P0T6)
垢版 |
2019/02/12(火) 21:55:12.47ID:N98Fn342p
>>81
改行を削除できますか。

仕事で、大量の英文を整理したいので困ってます。
0083デフォルトの名無しさん (アウアウウー Sa05-BKX2)
垢版 |
2019/02/12(火) 22:00:43.06ID:1aNudvIBa
線つなぐやつはサブルーチンが正体不明のアイコンになるからものすごくわかりにくい
逆にわかりやすいプログラムを描くには高度なアイコンデザインセンスが必要ということだ
そんなの天才にしか使いこなせない
0085デフォルトの名無しさん (アウアウクー MM91-q7hS)
垢版 |
2019/02/12(火) 22:41:31.90ID:CcMjC8kpM
>>84
セル内の文字列を対象にしてると思うからエディタでは無理では?分からないから適当に言うんだけど。
0086デフォルトの名無しさん (ワッチョイ 822f-HdPi)
垢版 |
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
0087デフォルトの名無しさん (ワッチョイ 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
0088デフォルトの名無しさん (アウアウクー MM91-q7hS)
垢版 |
2019/02/12(火) 23:44:44.19ID:CcMjC8kpM
>>75
最新版は5ですよね?使ってみましたがオブジェクトエラーが起きてどこで停止しているかみてみると、ソート処理時に停止する。

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

やりていことこ実現できているので満足です
0091デフォルトの名無しさん (ワッチョイ e101-P0T6)
垢版 |
2019/02/13(水) 06:35:13.37ID:9485a3fT0
>>84
例えば?メモ帳とか?

改行を無くす置換はありますか?
0093デフォルトの名無しさん (ワッチョイ f901-P0T6)
垢版 |
2019/02/13(水) 07:30:01.13ID:AhLCWHg20
>>92
ありがとうございます。一つのセルに最大どんだけテキスト貼れるかですね
0094デフォルトの名無しさん (ワッチョイ f901-P0T6)
垢版 |
2019/02/13(水) 07:36:07.18ID:QsqoJnTp0
>>92
cntl+jか。知らなかった。ほかのワードとかでも使えるかな
0096デフォルトの名無しさん (JP 0H16-KbRv)
垢版 |
2019/02/13(水) 08:07:53.15ID:kNKWDOP4H
>>95
ヘッダの話なら1個ずつ書いてくしかない
0099デフォルトの名無しさん (ワッチョイ 1df9-n/rh)
垢版 |
2019/02/13(水) 09:17:10.81ID:s1ZD6WV/0
「何の条件」で「何を」「どのようにしたいか」の中で「何の条件で」が出てないな
「何を」「どのようにしたいか」も一部の条件しか出てない気がする
連想ゲームじゃないんだから質問はちゃんとかけよ
0100デフォルトの名無しさん (ワッチョイ 1df9-n/rh)
垢版 |
2019/02/13(水) 10:05:00.38ID:s1ZD6WV/0
>>76
この質問は
Excelの枠に配置で、折り返して全体を表示するに
以下の改行のない文を貼り付けた時に
How are you? I’m looking forward to see you.
セルの幅に合う位置で改行されるのを思いの位置で改行したい
ってことだろ、思いの位置が明文化されないとな
例えば英文であるかわからんが「...」みたいな文とか「!!」みたいなとかもありそうだしな
0101デフォルトの名無しさん (JP 0H16-KbRv)
垢版 |
2019/02/13(水) 10:59:06.69ID:kNKWDOP4H
>>95
あと以下のようにしておくと面倒でなくなるよ

cns_COL_ID = “A”
Range(cns_COL_ID & 1) = “ID”
0104デフォルトの名無しさん (ワッチョイ e188-drk2)
垢版 |
2019/02/13(水) 14:06:51.14ID:cLVWJ/NN0
セル上でドラッグドロップしたら、それでプログラムが動くようなことってできますか
たとえば、縦1列に20個のデータが入っていて、その1つを別の場所に
ドラッグドロップすると順番が入れ替わるようにするとか
0105デフォルトの名無しさん (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
0107デフォルトの名無しさん (JP 0H16-KbRv)
垢版 |
2019/02/13(水) 14:45:16.60ID:kNKWDOP4H
>>106
あとApplication.Enableevents = Falseしないと配列をセルに書く時にWorksheet_changeが起きて無限ループするから気を付けて
0110デフォルトの名無しさん (ササクッテロル Spd1-P0T6)
垢版 |
2019/02/13(水) 19:29:04.53ID:yofO24jUp
>>94
置換前にcntl+jと入れると、置換ボタンが押せない。
0114デフォルトの名無しさん (ワッチョイ f901-KbRv)
垢版 |
2019/02/13(水) 20:39:49.89ID:9c/UwGiq0
>>113
楽というかマナー
意味の分かる定数で定義することで他人がプログラムを追わなくても理解できるようになる
0117デフォルトの名無しさん (オイコラミネオ MM16-duX/)
垢版 |
2019/02/13(水) 20:54:23.96ID:vtryBqN5M
vba初心者です。
マウスイベントやスリープなどのapi を使って
会社で使うツールを半自動化してますが、
こういうアナログな方法ではなく、
マウスでクリックしなくてもツールがアクティブになったり、
スリープではなく画面が遷移したのを読み取って次の命令を実行してくれるような
ものを作るにはどういう学問を学べばいいですか?
0121デフォルトの名無しさん (ワッチョイ 911f-Q5xa)
垢版 |
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
0122デフォルトの名無しさん (ワッチョイ 27f9-xnHp)
垢版 |
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を作ってみろよ
尚、理解できてないことが丸わかり
0126デフォルトの名無しさん (ワッチョイ 874f-5sVJ)
垢版 |
2019/02/14(木) 13:20:00.69ID:chn4JYyT0
たとえば、A1からC50までデータがあってA列をキーにソートしたいのですが、
途中たとえば、10行、15行、20−25行は抜かしたいのです。 これらにはコメントや他のものが入ってるので
でもそれらを抜かして全体でソートしたいのですが、Unionで繋いでやったら複数のレンジは出来ないみたいな
エラーを返されました
何かいい方法はないでしょうか
0127デフォルトの名無しさん (ワッチョイ 874f-5sVJ)
垢版 |
2019/02/14(木) 13:50:43.73ID:chn4JYyT0
例えば、画面表示は止めて、メモリ上で行を移動させてソートする行をまとめてからソートして、
また行をもとに移動させてから、画面上に結果を表示とか、出来ると可能性があると思うのですが
0128デフォルトの名無しさん (ワッチョイ ff6f-dKms)
垢版 |
2019/02/14(木) 14:23:28.89ID:sSBdRoDO0
>>126
if i = 対象行 then
行入替え
end if
とかでいいんじゃね?
0131デフォルトの名無しさん (ワッチョイ c701-mnSR)
垢版 |
2019/02/14(木) 17:59:11.87ID:bFGkVmlp0
dllってよくわかんないだけどvbsのexecuteglobalみたいな感じ?
0132デフォルトの名無しさん (ワッチョイ 874f-5sVJ)
垢版 |
2019/02/14(木) 19:55:09.02ID:chn4JYyT0
>>129
マジかあ。  やってみた。 出来てる

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

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

ひとつずつ、ァをアに変換、ィをイに変換、のように書くしかありませんか?
まとめて書く方法ってあるのでしょうか?
0137デフォルトの名無しさん (ワッチョイ 5f7c-blJ9)
垢版 |
2019/02/15(金) 01:18:13.72ID:vhn0rFgQ0
60項目7万件のjsonデータ読んで保存した。
開いたらモジュールとフォームが破損って何なんだよ。うう吐きそうだ。
10Gじゃメモリたりなかったのか?いや、それならそうメッセージがでるはず。
まさかこんなんでコード飛ぶとは思わなかったからバックアップは取ってない。
10分おきの自動バックアップのデータはあったけどデータ取るのに2日かかったからとっくに消えてる。
もう作る気おきない。
参った。
0140デフォルトの名無しさん (ワッチョイ 872d-7G9U)
垢版 |
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


動くかわからんけどお試しあれ。
0141デフォルトの名無しさん (ワッチョイ e7ce-1ffV)
垢版 |
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
0143136 (ワッチョイ 7f2c-Ioh3)
垢版 |
2019/02/15(金) 01:38:19.40ID:BkaZ3+610
Ruby では、

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

puts str.tr( "ァィゥェォャュョッ", "アイウエオヤユヨツ" )
#=> アイウエオヤユヨツあ
0144デフォルトの名無しさん (ワッチョイ e7ce-1ffV)
垢版 |
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
■ このスレッドは過去ログ倉庫に格納されています

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